keybd_event 2,3 Tasten gleichzeitig? alt+strg+entf
-
Mit keybd_event kann ich ja Tastendruck simulieren.
Aber wie schaffe ich es, dass mehrere Tasten gleichzeitig gedrückt werden?Gruß
Dominik
-
Ich würde mal versuchen, nacheinander die beteiligten Tasten zu "drücken":
keybd_event(VK_CONTROL,0,0,0);//STRG keybd_event(VK_MENU ,0,0,0);//ALT keybd_event(VK_DELETE ,0,0,0);//ENTF keybd_event(VK_DELETE ,0,KEYEVENTF_KEYUP,0); ...//alle Tasten wieder "loslassen"(PS: ohne Garantie)
-
PS: Heutzutage sollte man "SendInput" verwenden...
-
Ich habe jetzt mein Programm bissl geändert, ich will nicht mehr alt+strg+entf sondern ALT+ TAB (also durch die Programminstanzen wandern) haben.
Nachfolgendes funktioniert eigentlich, bis auf wenn ich B drücke wird gleich doppelt gesprungen - wie wenn ich manuell alt+ tab +tab mache.
eine Idee?
switch (wParam) { case 'N': // alt deaktivieren keybd_event(VK_MENU ,0,KEYEVENTF_KEYUP,0); break; case 'B': // einmal auf Tab drücken keybd_event(VK_TAB, 0, 0, 0); // Taste drücken keybd_event(VK_TAB ,0,KEYEVENTF_KEYUP,0); break; case 'M': // alt aktivieren keybd_event(VK_MENU, 0, 0, 0); // Taste drücken break; }@jochen
wollte eigentlich sendInput nutzen, aber bei einem Beispiel (von dir) gabs noch den Variablentyp "INPUT" den hat mein Visual Studio nicht erkannt?!
-
freakx0 schrieb:
wollte eigentlich sendInput nutzen, aber bei einem Beispiel (von dir) gabs noch den Variablentyp "INPUT" den hat mein Visual Studio nicht erkannt?!
VC6 !? Das kann sein. Damals vor 8 Jahren gab es dies noch nicht... Du kannst auch ein neues PSDK installieren (Link: siehe WinAPI-Forum ganz oben)
-
nein, Version 7.1
muss ich irgendwelche header einbauen?folgendes funktioniert nicht (zwar jetzt nicht dein bsp, aber egal - hab deins nicht mehr gefunden...)
UINT nInputs=0; m_KeyInput[nInputs].type = INPUT_MOUSE; m_KeyInput[nInputs].mi.dwFlags = MOUSEEVENTF_RIGHTDOWN; m_KeyInput[nInputs].mi.dx = 0; m_KeyInput[nInputs].mi.dy = 0; m_KeyInput[nInputs].mi.time = 0; m_KeyInput[nInputs].mi.dwExtraInfo = 0; m_KeyInput[nInputs++].mi.mouseData = 0; if (nInputs) { SendInput(nInputs,m_KeyInput,sizeof(INPUT)); } Sleep(1000); m_KeyInput[nInputs].type = INPUT_MOUSE; m_KeyInput[nInputs].mi.dwFlags = MOUSEEVENTF_RIGHTUP; m_KeyInput[nInputs].mi.dx = 0; m_KeyInput[nInputs].mi.dy = 0; m_KeyInput[nInputs].mi.time = 0; m_KeyInput[nInputs].mi.dwExtraInfo = 0; m_KeyInput[nInputs++].mi.mouseData = 0; if (nInputs) { SendInput(nInputs,m_KeyInput,sizeof(INPUT)); }
-
freakx0 schrieb:
Ich habe jetzt mein Programm bissl geändert, ich will nicht mehr alt+strg+entf sondern ALT+ TAB (also durch die Programminstanzen wandern) haben.
ctrl+alt+del kann man sowieso nicht von einem Programm aus senden.
-
freakx0 schrieb:
nein, Version 7.1
muss ich irgendwelche header einbauen?Ach so... Du musst:
#define _WIN32_WINNT 0x0401definieren, bevor Du windows.h includierst (oder in den Projekteinstellungen)