Handle finden bei opendocument

Rund um die LCL und andere Komponenten
Antworten
JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Handle finden bei opendocument

Beitrag von JosefKoller »

Hallo,

wie finde ich denn das Handle einer mit opendocument geöffneten Datei?

Danke.

Josef

Benutzeravatar
theo
Beiträge: 10905
Registriert: Mo 11. Sep 2006, 19:01

Re: Handle finden bei opendocument

Beitrag von theo »

Wozu das denn?

Du willst das Dateihandle, welches das fremde Programm für deine Datei benutzt???

http://www.tty1.net/smart-questions_de.html#goal

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: Handle finden bei opendocument

Beitrag von JosefKoller »

Das Ziel ist, die opendocument-Datei mitsamt seiner Standard-Exe z. b. in ein Panel oder in ein Form "einfangen".

Wenn ich das Handle des Programms, mit dem die Datei geöffnet wird, habe könnte ich dann sowas machen:

Code: Alles auswählen

 
...
with TProcess.Create(nil) do
         begin
           CommandLine := pfad+'SumatraPDF.exe ' +
                           '-reuse-instance ' +
                           '-page 1 ' +
                           '-plugin ' + IntToStr(Panel3.Handle)+
                           ' Varroa_2011.pdf';
           Execute;
           free;
         end; 
...         
 
Bei SumatraPDF ist das schon über die Paramterübergabe vorgesehen.

Aber auch hier bräuchte ich erst Mal das Handle der Standdard-Exe, besser wäre natürlich gleich noch, ich bekäme den EXE Namen, mit der die Datei aufgerufen wird.

In Delphi könnte man bei Programmen, die keinen solchen Parameteraufruf haben, das Ganze so machen:

Code: Alles auswählen

 
procedure TForm4.Button1Click(Sender: TObject);
var
  hHandle: hWnd; //Handle auf das Window welches man einsperren möchte
begin
  hHandle := FindWindow('notepad', nil); //In diesem Fall sperren wir das gute alte Notepad ein
  Windows.SetParent(hHandle, panel3.Handle); //Wir setzen das Parent mit Windows.SetParent, da ein Aufruf
                                        //von SetParent zur Folge hätte, dass wir die Methode von
                                        //TWinControl aufrufen würden, was wir nicht wollen
  ShowWindow(hHandle, SW_MAXIMIZE); //Einmal ShowWindow mit SW_MAXIMIZE als Parameter damit das Fenster
                                     //sich über die ganze Form erstreckt
end;     
 


Also zusammengefaßt:
ich bräuchte den Exe-Namen der Anwendung, die standard-mäßig dem Dateityp zugewiesen ist und das Handle.

Ich hoffe, es wird so deutlicher.

Danke

Josef

Benutzeravatar
theo
Beiträge: 10905
Registriert: Mo 11. Sep 2006, 19:01

Re: Handle finden bei opendocument

Beitrag von theo »

Den Namen der Anwendung kann man herausfinden unter Windows.
Indem man Google benutzt, findet man z.B. das: http://www.gleitgeb.at/Delphitips/datei../11.html

Beim Rest passe ich, das ist mir zu wild... :wink:

Antworten