(MFC mit dem...) Procress wieder beenden



  • Ich versteh noch nicht ganz! Ich bekomme ja über die PROCESS_INFORMATION die ID. Für PostMessage brauche ich aber das HWND. Wie bekomme ich mit der ProcessID das HWND um die Message senden zu können?



  • Ihr seid aber auch kein Stück kreativ. 😉

    BOOL CALLBACK MyEnumProc(HWND hWnd, LPARAM lParam)
    {
      DWORD dwProcessId;
    
        GetWindowThreadProcessId(hWnd, &dwProcessId);
    
        if(dwProcessId == lParam)
            PostMessage(hWnd, WM_CLOSE, 0, 0);
    
      return(TRUE);
    }
    
    // Irgendwo im Programm
    PROCESS_INFORMATION pi;
    .
    .
    .
    EnumWindows(MyEnumProc, pi.dwProcessId);
    

    [edit] Hätte ich nur gleich in den Artikel geschaut; dort wird es genau so gemacht. Augen auf! [/edit]

    [ Dieser Beitrag wurde am 06.12.2002 um 14:16 Uhr von -King- editiert. ]



  • Wenn ich dass so mache, dann bekomme ich folgenden Compiler-Fehler:

    error C2664: 'EnumWindows' : Konvertierung des Parameters 1
    von 'BOOL (HWND,LPARAM)' in 'WNDENUMPROC' nicht möglich

    😕 Wass macht den das Enumwindows überhaupt?



  • EnumWindows ruft für jedes TopLevel-Window einmal die Funktion auf, die Du im ersten Parameter angibst. Diese Funktion muß natürlich eine bestimmte Signatur haben. Die Funktion, die Du dort angibst, ist keine gültige EnumProc.
    [code]BOOL CALLBACK MyEnumProc(HWND, LPARAM)[/code]



  • Vielleicht steh ich ja heute mal wieder auf dem Schlauch, aber ich hab Sie aber so definiert wie Du gepostet hast:

    BOOL CALLBACK MyEnumProc(HWND hWnd, LPARAM lParam)
    {
      DWORD dwProcessId;
    
        GetWindowThreadProcessId(hWnd, &dwProcessId);
    
        if(dwProcessId == lParam)
            PostMessage(hWnd, WM_CLOSE, 0, 0);
    
      return(TRUE);
    }
    

    Der Aufruf folgt dann später zum Test:

    MessageBox("Jetzt wird geschlossen","test",0);
    
        EnumWindows(MyEnumProc, pi.dwProcessId);
    


  • Huch. Ich sehe da eigentlich kein Problem. Mach doch mal dieses

    #define STRICT
    

    bevor Du die Header includierst.



  • Ich benutze den Aufruf allerdings auch in einem MFC-Programm. Tut das was zur Sache?



  • MFC?



  • was ist denn mit king los? 😕



  • MFC gehört nicht in den Aufgabenbereich dieses Forums.


Anmelden zum Antworten