Exe im Vordergrund / Windows XP



  • Guten Tag, da bin ich schon wieder!
    Mein Rechner ist immer noch kaputt und so bleibt mir nichts anderes übrig, als vor den Windowsrechnern meiner Bekannten rumzuhocken 😞

    So, diesmal versuche ich folgendes: ich möchte zu dem Fenster im Vordergrund die passende *.exe finden. Habe auch mal was zusammengefrickelt, leider läuft das nur unter Windows 9x. Unter XP liefert die Funktion immer den Namen der Anwendung, zudem die Funktion selbst gehört:

    char *get_current_process (void) {
    	HWND hwnd;
    	unsigned long pid;
    	HANDLE snap;
    	PROCESSENTRY32 pinfo;
    	static char *app=NULL;
    
    	// allocate memory:
    	if (app==NULL)
    		app=(char*)malloc(100);
    
    	// get handler of active window:
    	hwnd=GetForegroundWindow();
    	// Get Process ID:
    	GetWindowThreadProcessId(hwnd, &pid);
    	snap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    
    	if (snap!=INVALID_HANDLE_VALUE) {
    		pinfo.dwSize=sizeof(PROCESSENTRY32);
    		// get first process:
    		if (Process32First(snap, &pinfo)) {
    			// find the process:
    			do {
    				if (pinfo.th32ProcessID==pid) {
    					// return exename:
    					CloseHandle(snap);
    					memset(app, 0, 100);
    					strcpy(app, pinfo.szExeFile);
    					int i=strlen(app);
    					while (app[i]!='\\') {
    						app[i]=tolower(app[i]);
    						--i;
    					}
    					return(app+i+1);
    				}
    			} while (Process32Next(snap, &pinfo));
    		}
    	}
    
    	CloseHandle(snap);
    	return("\0");
    }
    

    Hat einer 'ne Ahnung, woran das liegen könnte?! Ich denke mal, dass unter XP die falsche Prozess-ID geliefert wird...

    Mfg, Ein lustiger Gast


Anmelden zum Antworten