 |
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: 19.02.2006, 20:30 Titel: ShellExecute vollständig beendet... |
|
|
Hi,
gibts ne Möglichkeit zu bestimmen, ob ShellExecute "vollständig beendet" ist?
D.h. ich rufe mit ShellExecute() eine exe auf, die wiederum eine Datei erstellt. Nun möchte ich abfragen, ob diese Datei schon fertig erstellt ist. Geht sowas in C++? _________________ 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 |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 19.02.2006, 20:50 Titel: |
|
|
Versuche mal entweder die HINSTANCE hier rein zu legen:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/waitforsingleobject.asp
oder starte dein Programm mit CreateProcess und versuche es damit. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 49 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 20.02.2006, 09:09 Titel: |
|
|
Wenn du ShellExecuteEx() verwendetest, bekommst du mit hProcess ein Handle der gestarteten Applikation. Dann kannst du WaitForSingleObject() verwenden (Fallens Link). Mit dem was ShellExecute() zurückgibt kann man wenig anfangen.
C. |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 20.02.2006, 20:08 Titel: |
|
|
Danke, klappt leider noch nicht so ganz =/
Dieser Code liefert mir jedenfalls für shell_process ein leeres Handle
Die MessageBox kommt (wie es am logischsten ist) unmittelbar nach dem Ausführen.
<edit>
Die Anwendung wird auf jeden Fall gestartet, daran kanns nicht liegen
</edit>
CPP: | /*********************************
[[[ ¡¡¡ABSOLUTER BLÖDSINN!!! ]]]
********************************/
//Öffnen der Anwendung vorbereiten...
SHELLEXECUTEINFO shellexeinfo;
HANDLE shell_process=0;
memset(&shellexeinfo,0,sizeof(SHELLEXECUTEINFO));
shellexeinfo.cbSize=sizeof(SHELLEXECUTEINFO);
shellexeinfo.fMask=SEE_MASK_NOCLOSEPROCESS ;
shellexeinfo.hwnd=_gui::main_dialog;
shellexeinfo.lpFile=path;
shellexeinfo.lpParameters=params;
shellexeinfo.lpDirectory=directory;
shellexeinfo.nShow=SW_SHOW;
shellexeinfo.hProcess=shell_process;
shellexeinfo.hInstApp=GetModuleHandle(0);
//Anwendung ausführen
ShellExecuteEx(&shellexeinfo);
//Auf Anwendung warten
WaitForSingleObject(shell_process,0);
//Fertig...
MessageBox(0,"Feddisch","=)",0); |
_________________ 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...
Zuletzt bearbeitet von The Lord of Programming am 20.02.2006, 20:39, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 20.02.2006, 20:20 Titel: |
|
|
am besten guckst du dir mal den Errorcode an, der in hInstApp gespeichert wird nach dem aufruf. Dazu musst du das zu nem int casten und mit folgenden Errorcodes vergleichen:
Code: | SE_ERR_FNF
File not found.
SE_ERR_PNF
Path not found.
SE_ERR_ACCESSDENIED
Access denied.
SE_ERR_OOM
Out of memory.
SE_ERR_DLLNOTFOUND
Dynamic-link library not found.
SE_ERR_SHARE
Cannot share an open file.
SE_ERR_ASSOCINCOMPLETE
File association information not complete.
SE_ERR_DDETIMEOUT
DDE operation timed out.
SE_ERR_DDEFAIL
DDE operation failed.
SE_ERR_DDEBUSY
DDE operation is busy.
SE_ERR_NOASSOC
File association not available. |
wenn der int >32 ist, gabs keine fehler...
Gruß DirectXer |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 20.02.2006, 20:34 Titel: |
|
|
Vergesst es, ich hab die Lösung gefunden (Dummheit )
Die MSDN schreibt eindeutig:
und nich
Also, Blödsinn diese Zeilen:
CPP: | shellexeinfo.hProcess=shell_process;
WaitForSingleObject(shell_process,0); |
Stattdessen direkt auf die Membervariable zugreifen:
CPP: | WaitForSingleObject(shellexeinfo.hProcess,INFINITE); |
Danke nochmal, funktioniert super  _________________ 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
|