![]() |
ShellExecute und IsWindowVisible
Hi,
laut der Windows SDK Hilfe bekomme ich bei ShellExecute das Handle zurückgeliefert. Mit IsWindowVisible sollte man prüfen können, ob das Fenster zu dem Handle sichtbar ist. Folgender Code funzt leider nicht wie er soll :cry: und ich habe keine Ahnung warum:
Delphi-Quellcode:
Es wird gleich die Message angezeigt, obwohl das Notepad noch geöffnet ist.
var i: HWND;
{...} i := ShellExecute(Handle, 'open', 'notepad.exe', nil, nil, 1); while IsWindowVisible(i) do Application.ProcessMessages; ShowMessage('notepad wurde beendet.'); Was mache ich falsch? :gruebel: |
Re: ShellExecute und IsWindowVisible
ShellExecute gibt kein Fensterhandle zurück! :warn: Wenn du ein Fensterhandle willst, musst du mit CreateProcess arbeiten und durch die Fenster des Prozesses iterieren, bis du das gefunden hast, das du wolltest.. :gruebel:
|
Re: ShellExecute und IsWindowVisible
Zitat:
Dann hab ich das wohl falsch verstanden: Zitat:
|
Re: ShellExecute und IsWindowVisible
Instance Handle != Fensterhandle! Ein Fensterhandle beschreibt ein Fenster, ein Instazhandle beschreibt einen laufenden Prozess (wobei der Rückgabewert von ShellExecute eh nur für fehlerchecks zu gebrauchen ist). Handle deines Fensters in Delphi: Self.Handle. Damit kannst du dein Fenster verstecken usw. Instance Handle: hInstance! Damit kannst du dir (nötige Rechte vorrausgesetzt) Debug-Priviliegien auf deinen Prozess holen, sowas eben ;)
|
Re: ShellExecute und IsWindowVisible
Kann ich mittels Instance Handle auch irgendwie überprüfen, ob die Anwendung zu diesem Instance Handle noch läuft (s. erster Beitrag)?
|
Re: ShellExecute und IsWindowVisible
Na schön, falls es nicht geht könnte ich es ja noch mit FindWindow lösen.
Dazu bräuchte ich halt nur den ClassName und WindowName von (um diese Programme handelt es sich eigentlich): - Borland Resource Compiler (brcc32.exe) - Delphi Pascal Compiler (dcc32.exe) Weiß die zufällig jemand oder wie ich sie herausfinden kann? |
Re: ShellExecute und IsWindowVisible
Öhm.. Das sind Konsolenprogramme, dort Fenster finden zu wollen kannste knicken^^
|
Re: ShellExecute und IsWindowVisible
Knicken? :gruebel:
Ich muss doch irgendwie prüfen können, ob das Programm läuft oder nicht... Kann nämlich erst in meinem Programm mit der Prozedur fortfahren, wenn die Resource-Datei (mit brcc32.exe) erstellt wurde, da ich mit der erstellten Datei dann weiterarbeiten möchte. Gäbe natürlich noch die Möglichkeit, auf FileExists zu prüfen, doch falls die Resource wegen eines Fehlers nich compiliert wurde, läuft sich mein Programm zu Tode... |
Re: ShellExecute und IsWindowVisible
Du könntest dir auch mal
![]() |
Re: ShellExecute und IsWindowVisible
Eieieieiei....
Wieder so ein ellenlanger Code... Na schön, werd's mal versuchen. Danke für den Tipp! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz