Ein Programm/Fenster in den Vordergrund holen (und sonstige Einwirkungen)



  • Hi Community,

    ist es möglich aus meiner Anwendung heraus ein anderes Programm/Fenster
    in den Vordergrund zu holen oder sogar zu minimieren, maximieren und
    die Fenstergrößen zu beeinflussen?

    Beispiel, ich habe die laufenen Programme ausgelesen und möchte das
    Fenster vom Firefox in den Vordergrund holen und die Größe
    des Firefox Fensters auf 800 x 600 stellen.

    Liebe Grüße!



  • Hallo

    Ein Fenster kannst du wie folg in den Vordergrund holen:

    BOOL SetForegroundWindow(HWND hWnd);
    

    Und mit

    BOOL SetWindowPos(HWND hWnd,
        HWND hWndInsertAfter,
        int X,
        int Y,
        int cx,
        int cy,
        UINT uFlags
    );
    

    Kannst du die Position ändern, die Grösse Anpassen.

    // Auch mit SetWindowPos kannst du ein Fenster in den Vordergrund holen:

    Beispiel

    HWND handle;
    handle = FindWindow(NULL,"Firefox");
    SetWindowPos(handle,HWND_TOP,0,0,800,600,SWP_SHOWWINDOW | SWP_NOMOVE);
    

    So wird Firefox die Grösse 800*600 gegeben. Zudem wird er angezeigt und an oberster Front der Fenster gestellt.

    Möge es dir Weiterhelfen. 😃



  • Hi Deforation,

    danke für deine Antwort.

    Ich muss gestehen ich bin überrascht. Hätte ich eigentlich nicht für
    möglich gehalten das ich sogar andere Fenster beeinflussen kann.

    Kann ich den mein eigenes Programm gegen solche "Einwirkungen von Außen"
    schützen und dafür sorgen das meine Anwendung sich nicht beeinflussen lässt?

    Desweiteren noch eine Verständnis Frage.
    Das HWND steht für Handle oder? Was genau ist den dieses Handle eines
    Fensters? Benutzt man das zur Identifikation?

    Gruß!



  • Not The One schrieb:

    Ich muss gestehen ich bin überrascht. Hätte ich eigentlich nicht für
    möglich gehalten das ich sogar andere Fenster beeinflussen kann.

    Kann ich den mein eigenes Programm gegen solche "Einwirkungen von Außen"
    schützen und dafür sorgen das meine Anwendung sich nicht beeinflussen lässt?

    Nicht ohne weiteres. Programme, die diese Möglichkeit ohne den Willen des Nutzers anwenden, machen sich aber schnell unbeliebt, daher sei Vorsicht angeraten.
    Zu dieser Problematik ist übrigens Raymond Chens "The arms race between programs and users" ganz interessant.

    Not The One schrieb:

    Das HWND steht für Handle oder? Was genau ist den dieses Handle eines
    Fensters? Benutzt man das zur Identifikation?

    So ist es.



  • Hi audacia,

    vielen Dank für deine Antwort und den sehr interessanten Link.
    Kann mich dem eigentlich nur anschließen, es ist oft nicht leicht
    zu entscheiden was der Benutzer will wenn die eigene Anwendung
    einer breiten Masse zur Verfügung gestellt werden soll, dabei
    die Wünsche des Progmmieres, der Benutzer und die der Platform*
    erfüllen soll.

    *Damit meine ich die diversen Sicherheits Aspekte die man auf jedem
    System beachten sollte. Passwörter speichern als Beispiel.

    Gruß!



  • Sry, bin Anfänger in Api. Bei mir kommt jetzt folgende Fehlermeldung: Fehler 1 error C2664: 'FindWindowW': Konvertierung des Parameters 2 von 'const char [11]' in 'LPCWSTR' nicht möglich c:\users\birk\documents\visual studio 2008\projects\spy\spy\spy.cpp 32

    PS: Ich habe den letzten Codeschnipsel von Deforation verwendet.



  • Hallo

    Dein WinAPI-Interface ist auf Unicode statt ASCII eingestellt. Du must also wchar_t* übergeben :

    handle = FindWindow(NULL, L"Firefox");
    

    Ich sehe in deiner Fehlermeldung "Visual Studio". Arbeitest du nun mit dem Borland Builder oder mit Microsoft Visual Studio?

    bis bald
    akari


Anmelden zum Antworten