Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ShellExecute - 1400 ungültiges Fensterhandle (https://www.delphipraxis.net/45574-shellexecute-1400-ungueltiges-fensterhandle.html)

Mr_G 8. Mai 2005 17:36


ShellExecute - 1400 ungültiges Fensterhandle
 
Folgendes Problem:
Ich kille in meinem Programm den Explorer-Prozess um sicherzustellen das der User während dem Ausführen meines Programmes nicht arbeiten kann (Grund: Das Programm wird bei der Anmeldung in einem Netzwerk gestartet. Der User muss den Grund und denjenigen der ihn beauftargt hat eintargen. Diese Eingaben werden dann geloggt...).
Beim Beenden des Programms starte ich den Explorer wiefolgt neu:
Delphi-Quellcode:
ShellExecute(frm_main.GetAppHandle , Nil, PChar('explorer'), nil, nil, SW_NORMAL);
frm_main.GetAppHandle gibt hierbei das Handle der Application wieder. Das Programm funzt soweit super. Manchmal aber bekomme ich von Windoof (es öffnet sich ne kleine MessageBox) den Fehler 1400 - ungültiges Fensterhandle. Ich bin mir zu 95% sicher das es an diesem Auruf liegt, weiß aber nicht warum der Fehler auftaucht. Wie schon gesagt der Fehler tritt beinahe willkürlich auf.

Vielen Dank im Vorraus

Mr_G

Die Muhkuh 8. Mai 2005 17:53

Re: ShellExecute - 1400 ungültiges Fensterhandle
 
Zeig mal die Funktion GetAppHandle.

Mr_G 8. Mai 2005 17:55

Re: ShellExecute - 1400 ungültiges Fensterhandle
 
Delphi-Quellcode:
function Tfrm_main.GetAppHandle: HWND;
begin
  Result := Application.Handle;
end;
Die Function zum öffnen öffnen des Explorers liegt in einer Unit in der ich nicht an das Application-Objekt komme... Daher dieser Umweg...

Christian Seehase 8. Mai 2005 17:59

Re: ShellExecute - 1400 ungültiges Fensterhandle
 
Moin Mr G,

falls es ansonsten nichts ausmacht: Übergib doch bei ShellExecute einfach 0 statt des Handles.

Mr_G 8. Mai 2005 18:01

Re: ShellExecute - 1400 ungültiges Fensterhandle
 
Auch das habe ich schon ausprobiert. Leider taucht auch dabei in unregelmäßigen abständen der Fehler auf.

Christian Seehase 8. Mai 2005 18:10

Re: ShellExecute - 1400 ungültiges Fensterhandle
 
Moin Mr G,

speziell für solch unerklärliche Exceptions könnstest Du es mal mit madExcept versuchen (www.madshi.net)
Das ersetzt die Exception Behandlung von Delphi, und zeigt Dir im Fehlerfalle den Callstack an, um den "Schuldigen" leichter ausmachen zu können.

Mr_G 8. Mai 2005 18:19

Re: ShellExecute - 1400 ungültiges Fensterhandle
 
Danke für den Tipp...
Ich befürchte aber das mir das nicht hilft, da ich von der IDE keine Exception bekomme... Wie gesagt: Es teucht einfach ein kleines Fehler-Fenster auf das ich auch nicht mit try-except abfangen kann...

Christian Seehase 8. Mai 2005 18:27

Re: ShellExecute - 1400 ungültiges Fensterhandle
 
Moin Mr G,

wenn Du nicht 100%ig weisst, dass es an der genannten Stelle liegt, kannst Du auch nicht gezielt try/except einbauen.
Ich halte es für sehr wahrscheinlich, dass es innerhalb des Programmes ausgelöst wird.

Bei mir kann ich gut unterscheiden, ob der Fehler von Windows, oder dem Programm generiert wird, denn ich habe ein englisches Delphi, aber ein deutsches Windows. ;-)

DGL-luke 8. Mai 2005 20:58

Re: ShellExecute - 1400 ungültiges Fensterhandle
 
ich hatte diesen fehler auch einmal vor kurzem.

er wurde ausgelöst, weil ich in meiner wndproc das inherited; nicht drinhatte. vielleicht fehlt das bei dir ja auch :?:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 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