Abfragen ob ein Programm gestartet wurde
-
Hallo Leute...
mein 1. Posting hier... damit auch ersma ein dickes howdy in die Runde

Nun zu meiner Frage... wie kann ich festellen, ob ein bestimmtes Programm gerade gestartet wurde um dann das Fenster zu bekommen.
Ich möchte halt permanent festellen, ob gewisse Programme gestartet wurden und nun laufen ... um nach dem Start des Programms gleich einen weiteren Button in dessen
Titelleiste zu packen...hoffe ihr habt ein paar Tipps für mich... und am liebsten natürlich ein paar Code-Snippets

Besten Dank schon mal und bis denne...
devn00b
-
Servus,
ich kenne mehrere Möglichkeiten.
1. Du suchst die Fensternamen und erhälst damit auch gleich ein Handle:
z.B. FindWindow
CWnd *pWnd = FindWindow(NULL, "Notepad"); pWnd->SetWindowTest("Paul hat große Ohren");oder EnumWindowsProc wenn du nicht explizit den Namen kennst sondern nur z.B. die ersten 4 Zeichen
HWND hHandleWnd = NULL; // Loop Funktion BOOL CALLBACK CDeinDlg::EnumWindowsProc(HWND hwnd, LPARAM lParam) { TCHAR szBuffer[256]; memset(szBuffer,0,sizeof(szBuffer)); ::GetWindowText(hwnd, szBuffer, sizeof(szBuffer)); if (szBuffer[0] == 'N' && szBuffer[1] == 'o' && szBuffer[2] == 't' && szBuffer[3] == 'e') { hHandleWnd = hwnd; } return TRUE; } //Aufruf EnumWindows(EnumWindowsProc, (LPARAM)this); CWnd *pWnd = FromHandle(hHandleWnd); pWnd->SetWindowText("Paul hat große Füße"); //in die .h public: static BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);oder nach dem Prozess suchen:
HANDLE snapshot; PROCESSENTRY32 proc; proc.dwSize = sizeof(PROCESSENTRY32); CString strProcess = "Notepad.exe"; snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); Process32First(snapshot, &proc); do { if (strProcess == proc.szExeFile) AfxMessageBox("Gefunden!!!"); }while (TRUE == Process32Next(snapshot, &proc));Musste mal rumprobieren. Was dir am liebsten ist. Ansonsten mal in der MSDN gucken dort ist das alles nochmal erklärt.
Viel Spaß
*winke*
Hellsgore
-
besten dank für deine tipps...
bei deinen lösungsvorschlägen... müsste ich aber dann permanent einen timer bei mir laufen lassen... der immer wieder prüft... ob die gewissen applikationen laufen... wenn die performance so passt... werde ich es wohl so implementieren... hmmm aber gibts nicht vielleicht auch ne möglichkeit... NUR den start einer applikation mitzubekommen? sprich die startenen applikationen melden sich bei mir?!