SendMessage to TrayIcon application ?



  • hallo leute

    weiss jemand wie ich ein SendMessage aufruf zu eine Programm schicken kann, was sich im Tray-Icon-Modus befindet ?

    thx 4 help

    pepe



  • Was verstehst du unter Tray-Icon-Modus?

    Ist das Normale Fenster mit ShowWindow() ausgeblendet? nehm mal an, ja.

    Dann kannst du ganz normal mit SendMessage() Nachrichten schicken, sollte ohne Probleme funken



  • also mein progi ist mit "SW_HIDE" versteckt. und über ein tray-icon erreichbar. zusätzlich habe ich noch ein keyhook eingebaut. der bei einer bestimmten tastenkompi eine message an mein progi schicken soll.
    leider geht das nicht. die message wird nur verarbeitet, wenn ich zum beispiel das popupmenue vom tryicon meines programmes aufrufe/benutze.

    pepe

    EDIT:
    so sieht meine Messageverarbeitung aus

    while (true)
        {
            if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
            { 
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            } // GetMessage
    
            Sleep(50);
    
        }
    

    komisch ist auch, dass nicht mal dieser aufruf funktioniert (wird vom hook gesendet)

    ShowWindow(g_hWnd,SW_SHOW);
    

    [ Dieser Beitrag wurde am 22.05.2003 um 12:50 Uhr von pepe editiert. ]



  • hat keiner ein plan ???



  • 1. Warum verwendest du nicht GetMessage() anstelle von PeekMessage()?

    2. Schau dir das mal mit dem Debuger an...



  • Immer, wenn ich

    while (true)
    {
    ...
    }
    

    in einer Windows-Nachrichtenschleife sehe, wird mir ganz anders....



  • @Hepi
    ich hoffe dir wurde RICHTIG aber so RICHTIG anders du ... 😃 😃 😃 😃 😃

    @Der_Knob
    dies habe ich schon lange versucht

    habe aber ein viel besser lösung gefunden

    pepe



  • wie ne besseres lösung?

    warum jetzt nicht GetMessage(), ist ja kein Spiel oder??



  • @Der_Knob
    ne ist kein game, war auch nur ein versuch. aber egal, habe denn "fehler" gefunden.

    pepe

    hier ist die lösung, wer es wissen will (aber nur dann lesen sonst fatal-error) 🙂

    - übergebe meiner Hookfunktion mein hwnd von der applikation, die auch das hook per dll lädt und startet
    - benutzen von PostMessage(g_hwnd,....) in der KBHOOKPROC funktionierte nur, wenn meine applikation active war bzw. mein applikation hat drauf reagiert
    - der kbhook läuf super,da ich paar keys "geändert" hatte (zur funktionsüberwachung)

    "lösung"
    - wenn ich aber in der hookproc erst "FindWindow" und dann zum gefundenen fenster die message poste, funktioniert es !!! 😕 (ist ja auch logisch)

    ABER eigendlich müsste das übergebende handel meiner applikation an die hookdll gleich dem händer von "FindWindow" sein oder ?



  • schon mal was von shared Memory in einer dll gehört. 😡



  • kann mir das noch einmal wer erklären - bin mit der systemprogrammierung noch nicht so vertraut.

    ich bin vom beispiel in der faq (http://www.c-plusplus.net/forum/viewtopic.php?t=39145) ausgegangen und hab den code von dort 1:1 übernommen. funktioniert auch soweit, aber nur wenn ich das programm NICHT minimiere bzw. nicht in den systray verbanne.

    könnte das an dieser zeile liegen:

    HWND ghAppWnd = FindWindow(0, "KeyMeter");
    

    um das kurz nochmal zusammenzufassen: ich möchte wissen, was ich ändern muss um die tastenanschläge an mein programm im minimierten zustand zu schicken. ich verwende dabei TTrayIcon vom bcb6.

    ratz


Anmelden zum Antworten