KeyEvents an Bestimmtes Fenster senden
-
guten Abend
ich habe ein kleines Problem mit dem Senden von Keysenvent an ein bestimmtes Fenster.
int main() { HWND hWnd; if(hWnd = FindWindow(0,"Jazz Jackrabbit 2 - Easter Bunny")); else return 0; cout<<"Handle found"; EnableWindow(hWnd,1); INPUT i; i.type = INPUT_KEYBOARD; i.ki.dwExtraInfo=0; i.ki.dwFlags=0; i.ki.wScan=0; i.ki.time=0; i.ki.wVk =VK_UP; for(;;)SendInput(1,&i,sizeof(i)); return 0; }Der Code lässt sich Fehlerfrei kompilieren und Linken, die Keyevents werden von jedem Anderen Fenster aufgefasst, jedoch von dem Spiel Jazz Jackrabbit2 wird es ignoriert (wie auch Sendmessage), der Handle vom jj2 wurde ohne Probleme gefunden.
Nun die problematik, es soll das keyevent NUR an das JJ2 senden, und JJ2 sollte dies auch empfangen können

-
Das lässt sich nicht garantieren, denn Deine Eingaben werden in eine Queue gestellt, die systemweit funktioniert.
-
Martin Richter schrieb:
Das lässt sich nicht garantieren, denn Deine Eingaben werden in eine Queue gestellt, die systemweit funktioniert.
wie sollte ich es denn manchen um es nur an den handle zu senden, denn sendmessage schluckt er nicht....
-
Es geht nicht anders. Du kannst nur SendInput verwenden, anderes wüüste ich nicht. Aber eine direkte Zuordnung zu einem Programm ist meines wissen nicht möglich. Du kannst nur vor jedem Aufruf von SendInput prüfen ob das gewünschte Fenster immer noch das Foreground Window ist und den Focus hat.
-
Martin Richter schrieb:
Es geht nicht anders. Du kannst nur SendInput verwenden, anderes wüüste ich nicht. Aber eine direkte Zuordnung zu einem Programm ist meines wissen nicht möglich. Du kannst nur vor jedem Aufruf von SendInput prüfen ob das gewünschte Fenster immer noch das Foreground Window ist und den Focus hat.
Der Fluch ist ja, das sobald das SPiel startet, die gesedeten Events igorieret werden, respektvie nicht beim Fenster ankommen.
-
Spiel, evtl. mit DirectX?
Ich habe keine Erfahrung wie DirectX mit den Eingabekomponenten umgeht, aber evtl. wird das auch hier "Direct" gemacht, wie der Name schon sagt. Das Windows Subsystem mit der Win32 API wäre dann außer Kraft! Nur so eine Vermutung.