vc++ Process im Hintergrund starten

Hallo.

Ich habe folgendes Problem: Es gelingt mir einfach nicht Winamp, oder einen anderen MP3 Player (außer den Windows Media Player) im Hintergrund zu starten, so dass das Fenster nicht sichtbar ist.

Ich habe folgenden Code:

Code:
...

STARTUPINFO StartupInfo;
memset (&StartupInfo, 0, sizeof(StartupInfo));
StartupInfo.cb = sizeof(STARTUPINFO);
StartupInfo.dwFlags = STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow = SW_HIDE;
		
//CreateProcess(NULL, "C:\\Programme\\Windows Media Player\\wmplayer.exe http://www.radio-morituri.de/sc/play.m3u", NULL, NULL, FALSE, 0, NULL, NULL, &StartupInfo, &ProcInfo1);

CreateProcess(NULL, "C:\\Programme\\Winamp\\winamp.exe http://www.radio-morituri.de/sc/play.m3u", NULL, NULL, FALSE, 0, NULL,NULL, &StartupInfo, &ProcInfo1);

...

Beim wmplayer funktioniert es hervorragend, bei Winamp ist das Fenster immer noch sichtbar. Komisch ist allerdings, dass es im Taskmanager nicht als Anwendung zu sehen ist, und auch nicht nicht in der Taskbar erscheint.

Habe auch versucht das dwCreationFlag auf CREATE_NO_WINDOW zu setzen, leider funktioniert das wohl nur bei Consolenapplicationen.

Weiss jemand Rat? Ist das Programmabhängig? Winamp hat doch genauso ein Fenster wie der Mediaplayer.

Danke im Vorraus.

Gruss
Bleeding
 
Nein, das ist schon in Ordnung. Wenn das Flag nicht auf STARTF_USESHOWWINDOW gesetzt ist, wird das was bei StartupInfo.wStartWindow (SW_HIDE) steht nicht berücksichtigt.

Gruss
Bleeding
 
wenn ich mich richtig erinnere, dann kann die anwendung die von dir vorgegeben sachen immernoch ignorieren. daran wirst du auch nicht ändern können.
eine möglichkeit bleibt allerdings noch: finde das handle für das fenster heraus (wie das am besten geht, kann ich dir auch nicht sagen, aber google dürfte einiges finden... eventuell hilft sogar schon FindWindow) und nutze dann ShowWindow(fensterhandle, SW_HIDE);
 
Sry, mein Fehler...

Der Code ist für Visual C++ und da ist die Funktion ShowWindow als
ShowWindow(int nCmdShow) definiert, das Handle fällt also weg.

Ich versuch mal rauszufinden wie ich das ohne Handle machen könnte.

Thx for help.

Gruss
Bleeding
 
Hab hier was interesantes gefunden aus nem Winapitut von Robsite.de

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)

Winmain ist vergleichbar mit der main funktion bei Konsolenanwendungen.
der erste Parameter sagt uns, welche Instanz wir sind oder ist vielmehr der Handel der Instanz
(desshalnb das "h" für Handle)
Der zweite Parameter zeigt uns die letze Instanz.
Der dritte Parameter ist der String der beim Start als Parameter mit übergeben wird
(also als bsp: "edit sonstwas.txt". in diesem Fall würdesonstwas.txt übergeben werden)
Der letzte Parameter sagt uns die Sichtbarkeit aus... normalerweise ist der Parameter SW_SHOW.
So kann ein Fenster auch "invisble" gestartet werden(dann wäre der Paramter SW_HIDE)
hier gibt es theoretisch noch X andere möglichkeiten aber das ist hier nicht wichtig.
 
Zurück
Oben