Wie Handle eines anderen Fensters rausbekommen?



  • adfawsdfasssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!open() == ERROR!



  • michib schrieb:

    Hi,
    wie kann ich rausfinden welche Programme (Anwendungen) geöffnet sind?
    Gruß Michi

    Damit:
    💡 ➡
    **CreateToolhelp32Snapshot
    Takes a snapshot of the processes and the heaps, modules, and threads used by the processes.

    HANDLE WINAPI CreateToolhelp32Snapshot(
    DWORD dwFlags,
    DWORD th32ProcessID
    );**



  • Hi,
    danke...
    Und wie bekomm ich jetzt mittels des Handles die einzelnen Programme raus?
    Gruß Michi



  • michib schrieb:

    Hi,
    danke...
    Und wie bekomm ich jetzt mittels des Handles die einzelnen Programme raus?
    Gruß Michi

    Wie stellst du dir das denn konkret vor ?--> Ein 'Programm herausbekommen' ?



  • Hi,
    ich will konkret wissen welche Programme geöffnet sind, ich will die Namen der geöffneten Programme bekommen!
    Und ich hab ja nur das Handle!
    Gruß Michi



  • michib schrieb:

    Und ich hab ja nur das Handle!
    Gruß Michi

    Meinst du HWND ? Oder den Handle den du von CreateToolhelp32Snapshot bekommst ?



  • Hi,
    eigentlich will ich bloß die Namen aller geöffneten Programme.
    Und die hwnd der Fenster.
    Gruß Michi



  • michib schrieb:

    Hi,
    eigentlich will ich bloß die Namen aller geöffneten Programme.
    Und die hwnd der Fenster.
    Gruß Michi

    Ahso 💡 na dann mit:

    EnumWindows
    EnumWindowsProc

    Bzw. für den 'Namen'...WM_GETTEXT und WM_GETTEXTLEN 😉



  • Hi,
    danke!
    Ich hab die beiden mal angeschaut...
    aber kann damit nicht soviel anfangen z.B. wie man sie benützt!
    Gruß Michi



  • michib schrieb:

    aber kann damit nicht soviel anfangen z.B. wie man sie benützt!

    Na so:

    #include <ioStream>
    #include <Windows.h>
    
    using namespace std;
    
    BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
    {
        if(hWnd == NULL)
            return (FALSE);
        char szBuffer[300];
        if(!IsWindowVisible(hWnd)) // Wenn nicht sichtbar, dann überspringen
            return (TRUE);
        SendMessage(hWnd, WM_GETTEXT, sizeof(szBuffer) / sizeof(TCHAR), (LPARAM)szBuffer));
        cout << "Aktueller Fenstertext: " << szBuffer << endl;
        return (TRUE);
    }
    
    int main()
    {
        cout << "\nStarte Enumeration..." << endl;
        EnumWindows(EnumWindowsProc, NULL);
        cout << "Fenster-Enumeration beendet." << endl;
        return (0);
    }
    


  • hab ein paar kleine verbesserungen gemacht:

    #include <ioStream>
    #include <Windows.h>
    
    using namespace std;
    
    BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
    {
        if(hWnd == NULL)
            return (FALSE);
        char szBuffer[300];
        if(!IsWindowVisible(hWnd)) // Wenn nicht sichtbar, dann überspringen
            return (TRUE);
        SendMessage(hWnd, WM_GETTEXT, sizeof(szBuffer) / sizeof(TCHAR), (LPARAM)szBuffer));
        cout << "Aktueller Fenstertext: " << szBuffer << endl;
            return (TRUE);
    }
    
    int main()
    {
        cout << "\nStarte Enumeration..." << endl;
        EnumWindows(EnumWindowsProc, NULL);
        cout << "Fenster-Enumeration beendet." << endl;
        return (0);
    }
    

    cya



  • @Kinko:

    Kinko schrieb:

    hab ein paar kleine verbesserungen gemacht:

    [...]Mein Code[...]

    cya

    Lächerlich!, Was bist du denn für ein Noob...du hast gar nicht verbessert. Was für 'n Troll.



  • Hallo,

    ich bin eben auf diesen Beitrag gestoßen, weil ich das gleiche Problem habe. Ich habe eben das Programm fast exakt so ausgeführt, wie CodeFinder es geschrieben hat.

    Allerdings bekomme ich von sämtlichen Fenstertiteln immer nur das erste Zeichen. Meine Ausgabe sieht folgendermaßen aus:

    Starte Enumeration...
    Aktueller Fenstertext:
    Aktueller Fenstertext: c
    Aktueller Fenstertext: l
    Aktueller Fenstertext: P
    Aktueller Fenstertext: C
    Aktueller Fenstertext: M
    Aktueller Fenstertext: C
    Aktueller Fenstertext: \
    Aktueller Fenstertext: M
    Aktueller Fenstertext: C
    Aktueller Fenstertext: \
    Aktueller Fenstertext: C
    Aktueller Fenstertext: P
    Aktueller Fenstertext: C
    Aktueller Fenstertext: C
    Aktueller Fenstertext: C
    Aktueller Fenstertext: C
    Aktueller Fenstertext: H
    Aktueller Fenstertext: C
    Aktueller Fenstertext: P
    Fenster-Enumeration beendet.
    

    Mein Code sieht so aus:

    #include "stdafx.h"
    #include <ioStream> 
    #include <Windows.h> 
    
    using namespace std; 
    #pragma comment (lib, "User32.lib")
    
    BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam) 
    { 
        if(hWnd == NULL) 
            return (FALSE); 
        char szBuffer[300]; 
        if(!IsWindowVisible(hWnd)) // Wenn nicht sichtbar, dann überspringen 
            return (TRUE); 
        SendMessage(hWnd, WM_GETTEXT, sizeof(szBuffer) / sizeof(TCHAR), (LPARAM)szBuffer); 
        cout << "Aktueller Fenstertext: " << szBuffer << endl; 
        return (TRUE); 
    } 
    
    int main() 
    { 
        cout << "\nStarte Enumeration..." << endl; 
        EnumWindows(EnumWindowsProc, NULL); 
        cout << "Fenster-Enumeration beendet." << endl; 
    	int i;
    	cin >> i;
        return (0); 
    }
    

    Ich benutze Visual C++ 2005 Express.
    Woran könnte es liegen, dass ich immer nur ein Zeichen der Fenstertitel bekomme?



  • sizeof(szBuffer) / sizeof(TCHAR)

    @codefinder: wenn schon so, dann auch bitte TCHAR szBuffer ;).



  • cyclohexan schrieb:

    Woran könnte es liegen, dass ich immer nur ein Zeichen der Fenstertitel bekomme?

    Hi! Vereinfacht ausgedrückt: cout guckt, was an Adresse 0001 steht und gibt es auf die Console aus. Es guckt nicht, was noch an den nachfolgenden Adressen steht. Somit kriegst du in der derzeitigen Implementierung nur das erste Zeichen. HTH - sarabande


Anmelden zum Antworten