Externes Fenster beenden!



  • Danke



  • Sorry ich bekomm das nich hin kann mir da einer vielleicht nen beispiel reinschreiben mit z.B. muster.exe Danke!



  • sag einfach wo du steckengeblieben bist und ich erklärs dir



  • Also zum testen hab ich ne Beispielanwendung programmiert und hab mit ShellExecute Notepad gestartet. Nun lass ich mit der Funktion FindWindow den Handle ausgeben(die Parameter hab ich aus Spy++) doch nun kann ich die Anwendung weder mit SendMessage(...) noch mit TerminateProcess schließen. Und meine SendMessage Funktion akzeptiert keine 4 Parameter. Es gehen nur (WM_CLOSE,NULL,NULL) mehr akzeptiert der nich.

    ShellExecute(NULL, "open","C:\\WINNT\\notepad.exe", NULL, NULL, SW_SHOWNORMAL);
    HANDLE a = FindWindow("Notepad","Unbennant - Editor");
    TerminateProcess(a,0);



  • ähhh, die MSDN lautet:

    CWnd::FindWindow
    This method retrieves the top-level CWnd whose window class is specified by lpszClassName and whose window name, or title, is specified by lpszWindowName. This method does not search child windows.

    static CWnd* PASCAL FindWindow(
    LPCTSTR lpszClassName,
    LPCTSTR lpszWindowName );
    Parameters
    lpszClassName
    Points to a null-terminated string that specifies the window class name, a WNDCLASS structure. If the lpClassName parameter is NULL, then all class names result as a successful match.
    lpszWindowName
    Points to a null-terminated string that specifies the window name, the window title. If the lpWindowName parameter is NULL, then all window names result as a successful match.

    warum gibtst du als Parameter "notepad" und "unbennant - editor" an ?????

    Ich würde FindWindow(NULL,"notepad") angeben...... (denke ich..)



  • probier mal

    ShellExecute(NULL, "open","notepad", NULL, NULL, SW_SHOWNORMAL); 
    CWnd* found = FindWindow(0,"Unbennant - Editor");
    if(found)
      ::SendMessage(found->m_hWnd,WM_Close,0,0);
    

    zur erklärung

    void CWnd::Funktion()
    {
      SendMessage(WM_Close,0,0); //das ist die memberfunktion des cwnds
      ::SendMessage(hWnd,WM_Close,0,0); //das is die globale sendmessage funktion
    }
    


  • Danke für eure Hilfe aber es scheint immer noch nich zu klappen dass Fenster bleibt da.

    p.s. WM_close funktioniert bei mir nicht (nichdeklarierter Bezeichner); damit ist doch WM_CLOSE gemeint oder?



  • ConquwererD schrieb:

    damit ist doch WM_CLOSE gemeint oder?

    ja

    findet er das fenster? hat found einen wert?



  • Ich glaube nicht! Wie kann ich das nachgucken? 😉 Hab mal nen else mit ner MessageBox eingefügt und er hat mir immer die MessageBox angezeigt müsste doch eigentlich heißen, dass es nicht gefunden wurde?



  • ja das würde es heissen
    besser nachschaun kannst du mit breakpoints/haltepunkten
    kannst ja mal in der msdn zu dem thema schmökern

    schau dir mal enumwindows an... da hast du mehr einflussmöglichkeiten weil er dir in der callbackfunktion das handle jedes fensters gibt

    schreib wenn du fragen oder probleme hast


Anmelden zum Antworten