Serveranwendung führt Shortcut in anderem Programm aus
-
Hallo,
ich habe folgendes Problem. Mit Hilfe des MFC-Anwendungsassistenten (exe) von Microsoft Visual C++ habe ich eine Serveranwendung erstellt (Dialogfeldbasierend).
Diese soll nun bei Empfang eines Signals auf eine anderes Programm wechseln, dort einen Shortcut ausführen und dann wieder in den Vordergrund zurück wechseln. Habe das Ganze nun so geregelt:void CMeinProgrammDlg::OnReceive() { ... // Nachricht empfangen iEmpf = m_sConnectSocket.Receive(pBuf, iBufSize); // Wurde etwas empfangen? if (iEmpf == SOCKET_ERROR) { } else { hwin = FindWindow(NULL, "anderes Programm"); SetForegroundWindow(hwin); keybd_event(0x11, 0, 0, NULL); keybd_event(0x70, 0, 0, NULL); ...ich erhalte nun folgende Fehlermeldung
(1) error C2440: '=' : 'class CWnd *' kann nicht in 'struct HWND__ *' konvertiert werden
(2) error C2660: 'SetForegroundWindow' : Funktion akzeptiert keine 1 Parameterwas muß ich an dem Code ändern, damit es funktioniert? Wenn das "andere Programm" im Vordergrund und "MeinProgramm" im Hintergrund läuft und ich FindWindow und SetForegroundWindow rauslasse, funktioniert das mit dem Shortcut setzen, allerdings will ich eben meine Anwendung im Vordergrund haben und nur jeweils kurz auf das andere Programm wechseln.
Hat jemand einen Tipp?
-
FindWindow gibt CWnd* zurück und kein Handle. Also:
CWnd *fenster = FindWindow(NULL, "anderes Programm");
fenster->SetForegroundWindow();oder:
HWND fenster = ::FindWindow(NULL, "anderes Programm");
SetForegroundWindow(fenster);
-
Danke - funktioniert!