Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Programm starten

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.04.2004, 11:05 Uhr
~Richard
Gast


Hallo,
wie kann ich aus meinem Code ein Programm starten (irgendwas.exe) bzw. vorher überprüfen ob es nicht schon läuft ?

Danke, Richard
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.04.2004, 11:36 Uhr
~MDDM
Gast


Hi

Also folgendes hatte ich mal benutzt. Ist aber denke ich mal nicht so die eleganteste Lösung.


C++:
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si));
si.cb=sizeof(si);
memset(&pi, 0, sizeof(si));
int result=CreateProcess("c:\\windows\\notepad.exe",0,0,0,0,0,0,0,&si, &pi);


Das kannst Du per onClick-Funktion machen. Starten tust Du damit notepad. Und das auch nur, wie Du siehst, wenn es im angegebenen Pfad liegt.

Ich hoffe es hilft dir weiter. Aber wie gesagt ist nicht das sauberste.
Bin ja selber noch Anfänger.

MfG Maik
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.04.2004, 14:48 Uhr
t10ottoo



Hi,

da gibts auch nen ganz einfachen Befehl zum starten einer *.exe


C++:
WinExec("notepad.exe ",SW_SHOW);



Nachteil: Die *.exe muss im System32-Ordner liegen, kann man sicher auch anders machen, bin ja auch noch am lernen

Gruß
Thomas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.04.2004, 16:21 Uhr
~toxic
Gast


hi, CreateProcess ist schon das richtige.
"nachsehen" ob es läuft könnte man damit...

C++:
CWnd* wnd = FindWindow(NULL,"programname");
if ( wnd )
{
     // ja das programm wurde schon gestartet
     // über wnd kannst jetzt sogar WM_s an das program schicken
}
else
{
     // nein programm läuft noch nicht
}


als "programname" steht dann das was in der "kopfzeile" drinsteht, zB."Notepad - Unbenannt" oder so.

fals die exe die du startest eine eigene ist würd ich das über mutex lösen, themen darüber findest hier im forum... zb. "mehrfachstart einer anwendung verhindern" oder so
--
gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.04.2004, 11:46 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Man kann auch mit ExitCodeProcess nachschaun ob das Programm noch läuft, wenn die Funktion STILL_ACTIVE liefert, läuft der Prozess noch
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.04.2004, 11:56 Uhr
~Richard
Gast


Danke !
Was muss ich includen wenn ich:

CWnd *wnd

auch bei ATL nutzen möchte.
Ich weiß wir sind hier in der MFC ...
Aber es ist hier doch blöd wenn ich toxic die Info gebe, daß ich die Frage in ein anderes FachgebietsForum gestellt habe ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
14.04.2004, 12:52 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


benutz statt CWnd HWND wenn du keine MFC benutzt ...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: