Avatar billede disher Nybegynder
13. december 2001 - 11:01 Der er 14 kommentarer og
1 løsning

tekstprogram og regedit

Jeg har lavet et tekstprogram i C++ builder.
Jeg vil gerne have mit tekstprogram associeret med txt filer. Dvs når jeg dobbeltklikker på en txt fil, så åbner tekstfilen i mit program.
Jeg har kigget i registry:
HKEY_CLASSES_ROOT\\txtfile\\shell\\open\\command
i denne key står der \"notepad.exe %1\".
Hvis jeg sletter %1, så kan windows ikke åbne txt filer og hvis jeg skriver stien til mit program, så åbner mit program... med uden nogen tekst.
Hvad gør jeg?
Avatar billede wisen Nybegynder
13. december 2001 - 11:17 #1
Nu har jeg ikke lige prøvet at kode i C-builder, så du må bære lidt over med mig :)

Du skal lave sådan at din program kan modtage parametre fra \"kommando-prompten\", sådan at du kan skrive noget der tilsvarer \"notepad.exe openthis.txt\" ? Håber at det giver mening :)

/Wisen
Avatar billede wisen Nybegynder
13. december 2001 - 11:18 #2
... Windows substituerer \"%1\" med filnavnet på den fil der er trykket på...
Avatar billede jpk Nybegynder
13. december 2001 - 12:28 #3
Du skal bruge noget der hedder Dynamic Data Exchange (DDE).
Du får sandsynligvis en WM_DDE_EXECUTE command når der vælges en filtype der er registreret til dit program.

Avatar billede soepro Nybegynder
13. december 2001 - 12:49 #4
Du skal ganske rigtigt erstatte notepad.exe i d.o. reg-key med det FULDE navn på dit eget program - og lade %1 stå. (%1 bliver erstattet med fil-navnet som wisen skriver.) Selve fil-navnet får din applikation over som \"command parameter\", og dem kan du få fat i vha. GetParam() metoden:

if (GetParam(1) != \"\" && FileExists(getParam(1)))
  // Fil-navn overført
RichEdit1->Lines->GetFromFile(GetParam(1));
Avatar billede disher Nybegynder
13. december 2001 - 12:49 #5
eeeh... kunne jeg få et par eksempler?!
Avatar billede disher Nybegynder
13. december 2001 - 12:50 #6
oki, det vil jeg kigge på :)
Avatar billede soepro Nybegynder
13. december 2001 - 12:50 #7
Jeg lægger normalt denne type funktionalitet i constructoren til min main form:

__fastcall TForm1::TForm1()
{
  if ...
} // Constructor
Avatar billede soepro Nybegynder
13. december 2001 - 12:59 #8
Lav et nyt projekt vha. \'File-New application\'. tilføj en TRichEdit komponent fra \'Win32\' fanen og ret \'Align\' propertyen til alClient. Tryk på F12 for at se sourcen, og læg følgende ind i constructoren:

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  AnsiString fileName = ParamStr(1);
  if (fileName != \"\" && FileExists(fileName))
    RichEdit1->Lines->LoadFromFile(fileName);
}
//---------------------------------------------------------------------------
Avatar billede soepro Nybegynder
13. december 2001 - 13:00 #9
Vælg \'Run-Parameters\' og skriv f.eks. \':\\autoexec.bat\' som parameter. Tryk F9.
Avatar billede soepro Nybegynder
13. december 2001 - 14:38 #10
Du kan nu også prøve at ændre i registry\'en til det nye program - det virker faktisk !
Avatar billede kamikaze Nybegynder
13. december 2001 - 16:12 #11
Hvorfor går du ikke bare ind og ændrer filtype associationen???

KontrolPanel->Tools->Folder options
Her vælger du fanebladet \"File Types\", og vælger \"TXT\". Når du vælger \"change\" kan du skifte det program der skal åbne denne type filer (Står default til Notepad.exe).
Avatar billede disher Nybegynder
25. oktober 2002 - 14:14 #12
Svar
Avatar billede soepro Nybegynder
15. november 2002 - 10:32 #13
disher >> Hvad er det her for noget ? Kunne du ikke bruge svarerne - eller vil du bare gerne beholde pointene selv ?
Avatar billede disher Nybegynder
15. november 2002 - 12:31 #14
Det er længe siden jeg lavede det program, og som du selv skiver, så kunne jeg ikke bruge svarerne til noget. Jeg bliver bare konstant reminded, om denne tråd!
Avatar billede kamikaze Nybegynder
15. november 2002 - 17:21 #15
Jamen, det er kutyme at poste svaret her. Det ville jo være rart hvis der var et svar - specielt hvis nogen søger på spørgsmål og læser hele tråden igennem.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester