Entwickler-Ecke
Windows API - ShellExecute
Jean-Christoph - Fr 16.07.04 10:28
Titel: ShellExecute
Wie kann ich denn ein Fenster für ein Programm (IE), dass ich mit
Delphi-Quelltext
1:
| MyHwnd := ShellExecute(0, 'open', PChar(ts), PChar(url), nil, SW_SHOW); |
geöffnet habe wieder schließen?
Moderiert von
Peter Lustig: Delphi-Tags hinzugefügt
MartinPb - Fr 16.07.04 11:22
Hab die genaue ShellExecute Definition nicht bei, aber ich glaube nicht, daß ShellExecute ein Handle zurückgibt. Mit
CREATEPROCESS kommst dua ber weiter.
maxk - Fr 16.07.04 11:25
Win32SDK hat folgendes geschrieben: |
if the function succeeds, the return value is the instance handle of the application that was run, or the handle of a dynamic data exchange (DDE) server application. |
Also irgenwie muss es schon gehen! Wobei CreateProcess natürlich der sichere Weg wäre. Zumal man ShellApi nicht einbinden müsste.
Jean-Christoph - Fr 16.07.04 11:49
Titel: Shellexecute
Danke für deine Antwort.
Den Handle habe ich in MyHwnd.
Mit isWindow(MyHwnd) erkenne ich auch das Fenster.
Delphi-Quelltext
1: 2:
| if isWindow(MyHwnd) then Closehandle(MyHwnd) |
bringt leider ein Zurgriffsverletzung?
Und jetzt weis ich erstmal nicht weiter
und versuche mit CreateProcess weiter zu kommen.
Moderiert von
Klabautermann: Delphi-Tags hinzugefügt.
Delete - Fr 16.07.04 12:31
Shellexecute liefert keinen Jandle unter 32-Bit Windows zurück, mit dem man was anfangen könnte. Es ist nur ein Fehlercode.
PSDK hat folgendes geschrieben: |
Returns a value greater than 32 if successful, or an error value that is less than or equal to 32 otherwise. The following table lists the error values. The return value is cast as an HINSTANCE for backward compatibility with 16-bit Windows applications. It is not a true HINSTANCE, however. The only thing that can be done with the returned HINSTANCE is to cast it to an int and compare it with the value 32 or one of the error codes below.
|
Nimm
ShellexecuteEx oder
CreateProcess.
Delete - Fr 16.07.04 13:27
maxk hat folgendes geschrieben: |
Win32SDK hat folgendes geschrieben: | [...] |
|
Vergiss diese "Win32.hlp"-Datei. Nicht nur in diesem Fall (ShellExecute) ist die Aussage hoffnungslos veraltet.
maxk - Fr 16.07.04 13:29
:bawling:
Delete - Fr 16.07.04 13:38
Ich wollt´s nur anmerken. War nicht persönlich gemeint. Wenn du kannst, dann hole dir das PSDK. Oder lass es dir herunterladen, wenn du selbst kein DSL hast.
Delete - Sa 17.07.04 15:26
@Jean-Christoph:
Also CloseHandle ist meiner Meinung nach auch nicht der richtige Befehl. Ich würde lieber DestroyWindow nehmen, oder PostMessage in Verbindung mit WM_CLOSE.
@Alle:
Ich hab aber ein ähnliches Problem und vielleicht kann mir da auch jemand helfen...
Ich suche eine Möglichkeit, wie mein Programm darüber informiert werden kann, sobald das von mir geöffnete Fenster wieder geschlossen wird. Um genau zu sein, will ich ein Editor-Fenster öffnen in dem der User etwas verändern kann und sobald dieses Fenster geschlossen wird, soll meine Anwendungen die Änderungen dann umsetzen.
maxk - Sa 17.07.04 17:04
Neues Thema, neuer Thread :?
Aber ich würde einen Shellhook schreiben, der solange warte, bis WM_Close an den Editor gesendet wird. Ist es soweit, würde ich die Daten auslesen und der Sache seinen Lauf lassen 8)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!