Entwickler-Ecke
Windows API - Fensthandle anhand Exename
Stoffel1984 - Fr 30.07.04 17:30
Titel: Fensthandle anhand Exename
Hallo,
wie bekomme ich das Fensterhandle wenn ich nur den ExeName hab?
Hab hier schon alles durchsucht aber irgendwie nicht das passende gefunden.
Vielleicht hab ich auch einfach nur die flaschen Keywords verwendet ;)
Ich brauch das Fensterhandle um das Programm zu minimieren.
Kenne allerdinds nur den Exe- nicht den Festernamen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| procedure TForm1.TimerOnTimer(Sender: TObject);
function IsRunning(Exe: PChar):hwnd; var proc: PROCESSENTRY32; hSnap: HWND; looper: BOOL; begin result := 0; proc.dwSize:= SizeOf(proc); hSnap:= CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0); looper:= Process32First(HSnap, Proc); while integer(looper)<> 0 do begin if ExtractFileName(proc.szExeFile)= ExtractFileName(Exe) then begin result := hsnap; break; end else Looper:= Process32Next(hSnap, proc); end; CloseHandle(hSnap); end;
var h: Hwnd; s: string; i: Integer; begin s := List.Strings[TTimer(Sender).tag-1]; s := copy(s,1,pos('=',s)-1); h := IsRunning(PChar(s)); if h = 0 then begin ShellExecute(0, nil, PChar(s), nil, nil, SW_SHOW); Sleep(5000); end; CloseWindow(); end; |
Hoffe ihr könnt mir weiterhelfen.
Schönes Wochenende,
Stoffel
MrSaint - Fr 30.07.04 18:15
hmmm... von der logischen Seite sollte das gar nicht möglich sein, da man eine EXE ja auch mehrmals gleichzeitig ausführen kann und dann gibts da ja mehrere FensterHandles. Noch dazu: WIe willst du grad an das FensterHandle kommen? Eine EXE kann ja auch mehrere Fenster haben etc. Also ich glaub nich, dass das überhaupt geht...
MrSaint
Stoffel1984 - Fr 30.07.04 18:25
Hi,
genau das isses ja. Das Hauptfenster des Programms schließen wär halt was. Nur wie?
Wie aus dem Code ersichtlich starte ich ja die exe wenn sie nich läuft. Danach will ich halt die exe bzw. das Fenster minimieren.
Wäre blöd wenns das nich möglich ist. ShellExecute liefert ja kein FensterHandle zurück.
Gibts da vielleicht eine andere Funktion die das macht? :?
Delete - Fr 30.07.04 20:10
Ich weiß ja nicht wie du es startest, aber starte das Programm doch gleich mit minimierten Fenster.
Stoffel1984 - Sa 31.07.04 17:43
Hallo,
wenn ich das Programm so starte:
Delphi-Quelltext
1: 2:
| ShellExecute(0, nil, PChar(s), nil, nil, SW_MINIMIZE); |
dann startet er mir manche Programme minimiert andere jedoch nicht.
Woran kann das liegen?
Stoffel
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!