18. maj 2003 - 20:36Der er
3 kommentarer og 3 løsninger
åben form i et allerede åbent program
Hvis jeg har et program, og jeg ønsker at åbne en fil fra fx Stifinder, som er associeret med programmet. H vordan kan jeg så "hooke" denne execution, og få programmet til at åbne en form, som fx viser indholdet af den valgte fil i et TMemo?
Jeg skal vel lave et trick, så kun et kopi af programmet kan køres og derefter få programmet til at åbne ParamStr(x) i Memo.Lines.LoadFromFile ?
prop denne i deklerationer af procedurer: procedure MessageReceiver(var msg: TMessage); message WM_MY_MESSAGE;
og så lav noget med
procedure TForm1.MessageReceiver(var msg: TMessage); var filnavn: string; begin filnavn:=PChar(msg.WParam);
if FileExists(Filnavn) then begin Memo1.Lines.LoadfromFile(filnavn); // mht at åbne flere filer i samme // kunne du evt lave noget med nogle // child-windows... end; end;
procedure TForm1.FormCreate(Sender: TObject); begin if ParamCount > 0 then if FileExists(ParamStr(1)) then Memo1.Lines.LoadFromFile(ParamStr(1)); end;
initialization MutexHandle :=CreateMutex(nil,true,'MyAppTest'); if GetLastError = ERROR_ALREADY_EXISTS then begin SendMessage( FindWindow(nil,'Titlen på din form'), WM_MY_MESSAGE, DWORD(PChar(ParamStr(1))), 0 ); halt; end;
finalization if MutexHandle <> 0 then CloseHandle(MutexHandle); end.
Her har du i hvert fald lidt at arbejde videre med...
Jeg kan ikke få den til at sende og/eller modtage message. Jeg undersøger om FindWindow giver resultat, det gør den, og smider jeg en ShowMessage() på SendMessage får jeg resulteret 0, så beskeden aldrig er kommet afsted eller blevet modtaget.
Jeg har placeret min const WM_MY_MESSAGE efter første uses clause, og før type.
MessageReciver() har smidt i min unit/form med TfrmEditor foran og smidt dekleringen sammen med andre standard procedurere.
Hele initialization / finalization har jeg ligget til sidst i min unit/form.
Nu har jeg lavet lidt tricks, og byttet SendMessage ud med PostMessage, og kan nu få programmet til at modtage beskeden, men den er noget krypteret den der kommer frem, hvorfor?
i får 15 hver, for at at svare delvist rigtigt på spørgsmålet :)
Synes godt om
Ny brugerNybegynder
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.