Autor |
Beitrag |
Jean-Christoph
      
Beiträge: 54
|
Verfasst: Fr 16.07.04 10:28
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
      
Beiträge: 698
|
Verfasst: 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.
_________________ Gruß
Martin
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: 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.
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
Jean-Christoph 
      
Beiträge: 54
|
Verfasst: 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.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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.
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Fr 16.07.04 13:29
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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.
|
|
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: 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 
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|