WM_KEYDOWN Parameter



  • Hallo,

    Ich möchte in einem Fenster eine Taste drücken.
    Dazu send ich dem Fenster eine WM_KEYDOWN Message, mit der Methode SendMessage.

    LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );

    Also: SendMessage(WM_KEYDOWN);

    Nun meine Frage:
    Wenn ich nun z.B. ein "a" simulieren will, was muss ich dann als Parameter angeben?
    SendMessage(WM_KEYDOWN,"a"), klappt nähmlich nicht.

    Gruß Stu



  • Vermutlich solltest du dort keinen String, sondern einen char ('a') übergeben. Und außerdem brauchst du noch die passende WM_KEYUP-Message 😉



  • Hallo,
    ich hab das mal so gemacht:

    // in die .h
    virtual BOOL PreTranslateMessage(MSG* pMsg ); 
    // und in die .cpp
    BOOL CMyClass::PreTranslateMessage(MSG* pMsg )
    {
    
    	CString msg;
    
    	if(pMsg->message==WM_KEYDOWN)
    	{
    		//if(pMsg->wParam == VK_DELETE)
    		if(pMsg->wParam == 0x41) // 0x41 ist das 'A'
    		{
    
    			if(IDYES == AfxMessageBox(L"Löschen Ergebnisse?!", MB_YESNO))
    			{
    				OnClear();
    				msg.Format(L"pMsg: %f", pMsg->message);
    
    				AfxMessageBox(msg);
    
    			}
    
    		}
    	}
    
    	return CDialog::PreTranslateMessage(pMsg);
    }
    

    Aber es ist besser du sagts gleich was Du machen möchtest, es gibt bessere Lösungen "vieleicht"!

    grüsse
    pixel



  • Also ich möchte einen Fenster was nicht im Fokus ist, eine Keydown message senden.

    Also ich möchte diese Message Generieren.

    Aber auch diese Variante scheint nicht zu gehen.

    GetWindow(x)->SendMessage(WM_KEYDOWN, 'a');
    Sleep(100);
    GetWindow(x)->SendMessage(WM_KEYUP, 'a');



  • Ich sagte ja, es gibt bessere Lösungen! 🙂

    pixel



  • Vermutlich mußt du auch noch den lParam von WM_KEYDOWN und WM_KEYUP richtig belegen. (für WM_KEYUP müssen die Bits 30 und 31 auf jeden Fall gesetzt werden)

    PS: Übrigens ist "geht nicht" eine äußerst aussagekräfitge Fehlerbeschreibung - wenn man mit einem Hellseher redet 😃


Anmelden zum Antworten