Wie kann man feststellen ob ein Prog läuft
-
einfach nachschauen welche prozesse laufen.
MFG TaccoGo
-
Hey,
Wie schaue ich nach welche Prozesse laufen
-
mit dem taskmanager
-
laso ein stück aus einen prog fon mir
unsigned long d=0; HANDLE hSysSnapshot = NULL; HANDLE h_proc; PROCESSENTRY32 proc; PROCESS_MEMORY_COUNTERS pmc; pmc.cb = sizeof(PROCESS_MEMORY_COUNTERS); proc.dwSize = sizeof(proc); hSysSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPALL, 0 ); Process32First(hSysSnapshot,&proc); proc.dwSize = sizeof(proc); GETGUIRESOURCES_PROC m_pfnGetGuiResources=NULL; GETMODULEFILENAMEEX_PROC m_pfnGetModuleFileNameEx=NULL; HMODULE m_hUser32=NULL; HMODULE m_hPSAPI=NULL; proc.dwSize = sizeof(proc); hSysSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPALL, 0 ); Process32First(hSysSnapshot,&proc); proc.dwSize = sizeof(proc); CString s; do { h_proc=OpenProcess(PROCESS_QUERY_INFORMATION, false, proc.th32ProcessID); //ein handle auf den prozess holen s.Format("%s",int(proc.szExeFile); } while(Process32Next(hSysSnapshot,&proc));//Nägster Prozes
in s stet der exe name des prozesses dan nur mit denen ferklichen
ob du alles brauchst was oben deklarirt ist wies ich nicht mehr ich habe gerade etwas gekürtst.
MFG TaccoGo
-
Schau Dir mal CreateProcess an.
-
Kann man dann das Programm so starten?
STARTUPINFO info; PROCESS_INFORMATION ProcInfo; CreateProcess("C:\\SRIsim.exe", NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, "C:\\", &info, &ProcInfo);
Bei mir tut sich da leider garnichts! Wo ist mein Fehler
:p
-
Einfach dEUs Ratschlag folgen und man hat eine seeehr simple Lösung
-
Ja sorry,
als Anfänger sagt dir das ganze Mutexe - Ding doch garnichts!!
Ich will doch nur, das wenn ich mein Programm, welches ein anderes Programm mit
ShellExecute(..) aufruft, dieses kein zweitesmal aufruft, wenn ich es erneut erstelle.Hilf Du mir Doch Bitte
-
Sorry Leute,
ich komme irgendwie nicht weiter.
Kann mir da jemand ein wenig Code geben. Habe die FAQ´s durch und ausprobiert, kriege das aber nicht hin.(Watt is´ne Mutexe?!
).
-
Hier ein Mutex :
char *ProcName = "Programmname"; DWORD dwError; CreateMutex(NULL, true, ProcName); dwError = GetLastError(); if (ERROR_ALREADY_EXISTS == dwError) { AfxMessageBox("Programm läuft schon !"); }
Einfach in die OnInitDialog packen...
Gruß
:: NoName ::
-
Oben angeführte Methoden funktionieren bestimmt, aber wenn du nur feststellen willst ob du schon mal das Programm gestartet hast, wärs doch ausreichend wenn du dir im Programm merkst ob du schon mal das ausgeführt hast.
Zusätzlich könntest noch in einer Datei was schreiben und vor dem starten gucken ob da schon was steht.
Schlussendlich kannst du noch aktive Fenster suchen mit
FindWindow(NULL"Fenster Titel");
-
Ein Mutex hat aber mehrere Vorteile. Wenn er z.B. ein Programm hat welches im Systray minimiert wurde, dann hilft FindWindow auch nix ...
Natürlich kann man auch ein Hinweis in eine Datei schreiben, ist aber finde ich sehr umständlich ...
Gruß
:: NoName ::
-
Ich hab´s dann mit CreateProcess und OpenProcess gemacht.
Besten Dank an alle die geholfen haben. Ich meld mich bestimmt bald mal mit nervenden Fragen wieder.
Als Anfänger stellt man wahrscheinlich zunächstmal ein paar dösige Fragen, ich gelobe aber Besserung.
Bis Bald,
FrankyBoy