findwindow, sendmessage problem ?



  • hallo,

    wenn ich nach dem rechner suche, geht.
    wenn ich wm_close an rechner schicke geht.

    aber wie schicke ich z.b. eine 1 an den rechner, dass da auch 1 angezeigt wird ?

    hier mal mein code:

    #include <windows.h>
    #include <iostream>

    using namespace std;

    int main(int argc, char argv[]){
    cout<<"Suche,";

    HWND Programm = FindWindow(NULL, L"Rechner");
    if(Programm){
    cout<<"gefunden";
    SendMessage(Programm,WM_CHAR,VK_NUMPAD1,0);
    }
    else{
    cout<<"nicht gefunden";
    }

    //auf taste warten
    char myLine[100];
    cin.get(myLine,100);

    return 0;
    }



  • Ich denke, WM_SETTEXT an ein Static/Edit sollte klappen.



  • Noch zur Ergänzung: Man kann kann mit SendMessage() alles an jeden schicken. Kommt irgendetwas nicht richtig an, dann definiert man für die CALLBACK-Funktion WndProc() ein eigenes ID_MYMESSAGE WM_USER+1 und reagiert dann wie man will. 🙂 🙂



  • HI
    Ich möchte gerne ein Fenster meines IE schließen und hab dazu folgendes geschrieben

    HWND explorer = FindWindow(NULL, L"abc - WindowsInternetExplorer");
    if(explorer){ 
    cout<<"gefunden"; 
    SendMessage(explorer,WM_CLOSE,VK_NUMPAD1,0); 
    } 
    else{ 
    cout<<"nicht gefunden"; 
    }
    

    aber natürlich bekomm ich jetz die Meldung: nicht gefunden (halt 0)

    was mach ich falsch?



  • also wenn ich das ganze mit einem anderen Prog versuche funktioniert zumindest mal das auslesen



  • japse spam hier nicht alles mit deinem müll zu man. wenn du den ie schließen willst, hol dir das HWND mit FindWindoof und sende WM_CLOSE mit SendMessage. Wenn du das nicht checkst, dann lern halt erstmal die windoof grundlagen.



  • Also meine IE-Version ist von der Klasse 'IEFrame' - also:
    [cpp]
    HWND hwnd = FindWindow(TEXT("IEFrame"), NULL);
    PostMessage(hwnd, WM_CLOSE, 0, 0);

    Allerdings schließt Du damit nicht ein Fenster, sondern den ganzen Explorer!

    Wenn der von Dir gepostete Code nicht funktioniert, dann scheint der Fenstername bei FindWindow nicht korrekt angegeben zu sein.



  • Verwende mal statt Send- PostMessage.

    Tobi



  • Noch was dazu: Wenn Du mehrere Instanzen des Explorers geöffnet hast, dann erwischst Du damit natürlich nur eine einzige, welche das dann gerade ist, ist - denke ich - von Dir nicht beeinflussbar.



  • erstmal vielen dank bis hier her.
    ganz doof bin ich wohl doch nicht, da es jetzt funktioniert:

    HWND explorer = FindWindow(NULL, L"top - Windows Internet Explorer");
    if(explorer){ 
    cout<<"gefunden"; 
    PostMessage(explorer,WM_CLOSE,0,0); 
    } 
    else{ 
    cout<<"nicht gefunden"; 
    }
    

    Mein Grundproblem ist im Prinzip damit gelöst.
    Allerdings würde es mich dann doch noch interessieren wie ich nur das aktuelle Fenster des Explorers schließen kann, und wie ich ein Fenster aktualisieren kann.

    Gruß



  • Jaepen schrieb:

    Allerdings würde es mich dann doch noch interessieren wie ich nur das aktuelle Fenster des Explorers schließen kann, und wie ich ein Fenster aktualisieren kann.
    Gruß

    Da ich Dir das in Deinem anderen Thread schon mindestens zweimal gesagt habe ... ist für mich jetzt hier Schluß.
    Trotzdem noch viel Spaß beim Tüfteln.


Anmelden zum Antworten