Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi schellexecute von CD-Laufwerk funktioniert nicht immer (https://www.delphipraxis.net/137850-schellexecute-von-cd-laufwerk-funktioniert-nicht-immer.html)

Magellan 29. Jul 2009 16:23


schellexecute von CD-Laufwerk funktioniert nicht immer
 
Hallo,

eigentlich ist es eine einfache Aufgabe, eine Datei mit dem zugehörigen Programm zu öffnen.
Dafür gibts seit vielen Jahren shellexecute oder schellexecuteEx.

Das Problem:
Ein autostart Programm soll beim Einlegen einer CD eine HTML-Seite im Browser öffnen. Das sollte
mit schellexecute bzw. schellexecuteEx doch problemlos gehen. Geht es aber nicht.

Delphi-Quellcode:
  ...
          with seInfo do
          begin
            cbSize := SizeOf(TShellExecuteInfo);
            fMask := SEE_MASK_NOCLOSEPROCESS;
            Wnd := 0;
            lpVerb := 'open';
            lpFile := pchar(spath+sFile);
            lpParameters := NIL;
            lpDirectory := pchar(sPath);
            nShow := SW_SHOWNORMAL;
          end; (*seInfo*)
          ShellExecuteEx(@seInfo);
...
Nach dem Einlegen der CD (als nicht Admin) unter Windows Vista
(IE7 + IE8, jeweils mit Standard-Einstellungen) öffnet sich der "Automatische Wiedergabe-Dialog".
Führt man die Start.exe aus, poppt für den Bruchteil einer Sekunde ein leeres Browser-Fenster auf,
verschwinder darauf hin aber wieder in den Untiefen des Systems. Ist hingegen der IE schon gestartet,
dann öffnet sich nach dem Laden der CD ein neuer Tab mit dem gewünschten Inhalt.

Das Problem tritt nicht auf
- mit z.B. Firefox als Standardbrowser
- Wenn man als Admin angemeldet ist
- Wenn das autostart Programm von einer Festplatte gestartet wird
- unter XP

Hat jemand eine Idee?

DeddyH 29. Jul 2009 16:27

Re: schellexecute von CD-Laufwerk funktioniert nicht immer
 
Hallo und Willkommen in der DP :dp:,

ich würde zunächst Folgendes versuchen:
Delphi-Quellcode:
if not ShellExecuteEx(@seInfo) then
  ShowMessage(SysErrorMessage(GetLastError));

Magellan 29. Jul 2009 16:43

Re: shellexecute von CD-Laufwerk funktioniert nicht immer
 
Danke für die Antwort.

Hab ich probiert - keine Fehlermeldung. Auch shellexecute gibt keinen Fehler zurück (>32).

Der IE wird ja auch gestartet, aber er lädt die Datei nicht.
Es ist nur zu sehen "Verbindung wird hergestellt..."

DeddyH 29. Jul 2009 16:46

Re: schellexecute von CD-Laufwerk funktioniert nicht immer
 
Hast Du dieses Verhalten auch, wenn Du im Explorer zu der *.html navigierst und einen Doppelklick ausführst?

Magellan 29. Jul 2009 16:55

Re: schellexecute von CD-Laufwerk funktioniert nicht immer
 
Die HTML-Seite lässt sich im IE problemlos öffnen.

Es geht ja alles, wenn der IE bereits läuft oder das Programm von einer Festplatte oder von CD als Admin gestartet wird.

DeddyH 29. Jul 2009 17:00

Re: schellexecute von CD-Laufwerk funktioniert nicht immer
 
Moment, ich meinte jetzt nicht IE öffnen und zur Seite auf der CD wechseln. Ich meinte tatsächlich einen Doppelklick auf die Datei im Windows-Explorer.

Magellan 29. Jul 2009 17:05

Re: schellexecute von CD-Laufwerk funktioniert nicht immer
 
Ein Doppelklick auf die Datei funktioniert (öffnet den IE).

DeddyH 29. Jul 2009 17:08

Re: schellexecute von CD-Laufwerk funktioniert nicht immer
 
Das ist in der Tat merkwürdig. Ein "normales" ShellExecute geht auch nicht?

Magellan 29. Jul 2009 17:13

Re: schellexecute von CD-Laufwerk funktioniert nicht immer
 
Leider nein - das gleiche Verhalten...
Mit shellexecute hatte die autostart Programme für CDs bislang auch umgesetzt.

DeddyH 29. Jul 2009 17:43

Re: schellexecute von CD-Laufwerk funktioniert nicht immer
 
Dann gehen mir im Moment leider die Ideen aus, sry :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz