|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 06.10.2007, 22:28 Titel: ShellExecute() stört Programm |
|
|
Es handelt sich um eine Windowsapplikation mit mehreren Dialogen unter Verwendung von der winapi. Dummerweise scheint ShellExecute das Programm in bestimmten Fällen zu stören.
Übergebe ich einen Pfad zu einer lokalen Datei o.ä., geht das ganze gut. Sobald ich allerdings eine URL übergebe/aufrufen lassen, gibt es seltsame Probleme:
Ich muss oft "wie wild" herumklicken, bis sich endlich die erwünschte Wirkung zeigt. Das Seltsame ist, dass ShellExecute immer ausgeführt wird, wenn per Maus/Tastatur der entsprechende Befehl gegeben wird - ich hab das mit dem Debugger überprüft.
Bei folgendem Aufruf passiert dann (fast) nichts:
CPP: | ShellExecute(NULL,L"open",L"http://google.de",NULL,NULL,SW_SHOW); |
Das einzige was passiert, ist dass zunächst offenbar das Programm "gestört" wird. Es lässt sich nicht mehr auf herkömmlichem Weg schließen. Bei Alt+F4 passiert einfach gar nichts und ich muss den Taskmanager zur Hilfe nehmen.
Versuche ich, den ein und denselben ShellExecute noch weitere Male auszuführen, so passiert irgendwann mal was und im Browser öffnet sich tatsächlich google. Allerdings bleibt die "Störung" des Programms immer noch und zwar genau ab dem Zeitpunkt, ab dem ShellExecute zum ersten Mal mit einer URL als Parameter aufgerufen wird. (Kommentiere ich diese Zeile aus, verhält sich alles normal.)
Meine Vermutung ist, dass ja durch ShellExecute soweit ich weiß ein neuer Prozess erstellt wird und dieser aus irgendeinem Grund das Programm blockiert bzw. am Schließen hindert. Ich hab keine Ahnung, woran das liegen könnte, aber das kann doch nicht normal sein...
Bekommt ihr es hin, so eine URL aufzurufen oder seid ihr schon mal auf ähnliche Probleme gestoßen? _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Maxim Senior JLI'ler
Anmeldedatum: 28.03.2004 Beiträge: 249
Medaillen: Keine
|
Verfasst am: 07.10.2007, 06:03 Titel: |
|
|
Also beim mir hat es immer ohne Probleme funktioniert:
CPP: | ShellExecute(0, _T("open"), _T("http://newmaxim.ne.funpic.de"), NULL, NULL, SW_SHOWNORMAL);
|
Vielleicht liegt es an dem letzten Parameter??? Versuche mal mit SW_SHOWNORMAL. |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 07.10.2007, 13:15 Titel: |
|
|
Das bringt nichts, das hab ich auch schon mal versucht
Irgendwas kann da doch nicht in Ordnung sein. Ich hab das sogar mal an den Anfang eines minimalistischen Konsolenprogramms gepackt und ShellExecute() wird zwar ausgeführt, aber weder öffnet sich irgendwas im Browser noch wird irgendeine Codezeile hinter dem ShellExecute() ausgeführt.
Beim Debuggen verschwindet der gelbe Pfeil einfach, der normalerweise die nächste Codezeile anzeigt... _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 07.10.2007, 15:22 Titel: |
|
|
hast du das mal auf nem anderen Rechner probiert? Das könnte jetzt etwas weit hergeholt sein, aber manchmal hindern bestimmte "Schutz"programme (wie Virenscanner etc.) bestimmte softwarearten vor solchen Aktionen die dein Programm fälschlicherweise als gefährlich einstufen. Bei mir hat bspw. f-secure mal mein Programm vor einem einfachen registrylesezugriff gehindert aus versch. gründen.
Gruß DXer |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 07.10.2007, 17:22 Titel: |
|
|
Bei mir scheint es auch zu klappen - allerdings wird das 2. ShellExecute() erst aufgerufen, wenn die 1. Seite komplett geladen ist. |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 07.10.2007, 18:01 Titel: |
|
|
DirectXer hat Folgendes geschrieben: | hast du das mal auf nem anderen Rechner probiert? Das könnte jetzt etwas weit hergeholt sein, aber manchmal hindern bestimmte "Schutz"programme (wie Virenscanner etc.) bestimmte softwarearten vor solchen Aktionen die dein Programm fälschlicherweise als gefährlich einstufen. Bei mir hat bspw. f-secure mal mein Programm vor einem einfachen registrylesezugriff gehindert aus versch. gründen.
Gruß DXer |
Das ist in der Tat weit hergeholt und ich find irgendwie schwachsinnig, aber offenbar hast du recht...
Danke für deine/eure Hilfe
Einerseits beschränkt von ZoneAlarm, dass es den Zugriff ins Netz meinem Programm zuschreibt (dabei greift ja letztendlich nur der entsprechende Browser drauf zu...) und andererseits komisch, dass es nach mehreren Versuchen doch zugelassen wird.
Naja, jedenfalls gings jetzt beim ersten Mal, als ich dem Programm auch Zugriff aufs Netzwerk gegeben hab _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|