PID
-
Huhu,
ich hab ein großes Problem. Zunächst zur Erklärung: Ich muss für das Abi ein Programm schreiben, bei welchem man einen Prozessnamen eingeben kann also als Beispiel iexplore.exe oder notepad.exe und sobald dieser Prozess aktiviert wird soll es die PID ausgeben. Diese sieht man wenn man im Task Manager auf Ansicht Spalten Auswählen PID (Prozess ID) geht. Hat einer eine Ahnung wie ich die PID mittels des Prozessnamens herausfinden könnte? Oder kennt einer ein Tutorial
Vielen Dank schon mal.
-
Guckst du hier, der Link zeigt dir, wie du die PID auslesen kannst (jedenfalls wird sie dort mit "processID" tituliert)
-
#include <Windows.h> #include <Tlhelp32.h> // Find the process handle by name DWORD FindProcess(LPCSTR szName){ DWORD result = 0; HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 pe32; pe32.dwSize = sizeof(PROCESSENTRY32); if (hProcess != INVALID_HANDLE_VALUE) { Process32First(hProcess, &pe32); char *K; do { K = strchr(pe32.szExeFile, '\\'); if (!K) K = pe32.szExeFile; else K++; if (!_stricmp(K, szName)) { result = pe32.th32ProcessID; break; } } while (Process32Next(hProcess, &pe32)); CloseHandle(hProcess); } return result; }
-
Wo ist denn der warme Kuchen der zum Source gehört?
Nun mal ehrlich, das ist pädagogisch nun nicht wirklich
wertvoll!
-
haette da auch noch was, ist aus der Habo wiki:
Mit deer funktion bekommst du sicherlich alle pIDs
void EnableDebugPrivilege( ) { TOKEN_PRIVILEGES priv; HANDLE hThis, hToken; LUID luid; hThis = GetCurrentProcess(); OpenProcessToken( hThis, TOKEN_ADJUST_PRIVILEGES, &hToken ); LookupPrivilegeValue( 0, "seDebugPrivilege", &luid ); priv.PrivilegeCount = 1; priv.Privileges[ 0 ].Luid = luid; priv.Privileges[ 0 ].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges( hToken, false, &priv, 0, 0, 0 ); CloseHandle( hToken ); CloseHandle( hThis ); }
#include <windows.h> #include <tlhelp32.h> #include <cstdio> int main() { HANDLE hSnap, hTemp; PROCESSENTRY32 pe; pe.dwSize = sizeof(PROCESSENTRY32); EnableDebugPrivilege(); hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(Process32First(hSnap, &pe)) { do { hTemp = OpenProcess(PROCESS_ALL_ACCESS, 0, pe.th32ProcessID); if(hTemp) { printf("%4d\t%s\n", pe.th32ProcessID, pe.szExeFile); CloseHandle(hTemp); } } while(Process32Next(hSnap, &pe)); } }
müsste dir eigentlich helfen.
-
vielen dank ihr beiden.
jetzt weiß ich nur noch nicht wie man in listings code
machen kann, das es den prozess aufruft sobald er erscheint.
Also das ich das programm vorher starten kann und
sobald bla.exe erscheint soll es die PID zurückgeben
weiß einer wie das geht
danke
-
Verstehe die Frage nicht
Welcher Prozess soll wie "aufgerufen" werden, wenn er erscheint?
-
hö? was is los?
könntest du deine Frage evtl. noch etwas klarer definieren?Gruß Tobi.
-
Prozess auslesen schrieb:
vielen dank ihr beiden.
jetzt weiß ich nur noch nicht wie man in listings code
machen kann, das es den prozess aufruft sobald er erscheint.
Also das ich das programm vorher starten kann und
sobald bla.exe erscheint soll es die PID zurückgeben
weiß einer wie das geht
danke#include <Windows.h> #include <Tlhelp32.h> #include <iostream> using namespace std; DWORD FindProcess(LPCSTR szName); //Main Routine int main() { while(!FindProcess("dasProg.exe")) Sleep(100); //Warten, bis das Programm erscheint //Programm wurde nun gefunden cout << "Programm wurde im Speicher gefunden!" << endl << "PID: " << FindProcess("dasProg.exe") << endl; system("Pause"); //Programm soll sich nocht nicht schließen } // Find the process handle by name DWORD FindProcess(LPCSTR szName){ DWORD result = 0; HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 pe32; pe32.dwSize = sizeof(PROCESSENTRY32); if (hProcess != INVALID_HANDLE_VALUE) { Process32First(hProcess, &pe32); char *K; do { K = strchr(pe32.szExeFile, '\\'); if (!K) K = pe32.szExeFile; else K++; if (!_stricmp(K, szName)) { result = pe32.th32ProcessID; break; } } while (Process32Next(hProcess, &pe32)); CloseHandle(hProcess); } return result; }
-
cool vielen vielen dank
jetzt ist es perfekt
-
Basingstoke schrieb:
Wo ist denn der warme Kuchen der zum Source gehört?
Nun mal ehrlich, das ist pädagogisch nun nicht wirklich
wertvoll!