SendKeys játékoknál: némelyik működik, némelyik nem

SendKeys játékoknál: némelyik működik, némelyik nem
2020-03-09T14:20:13+01:00
2020-03-14T08:06:44+01:00
2022-10-15T21:26:10+02:00
Tudvari
Inputokat szeretnék szimulálni játékokhoz SendKeys-el, de problémákba ütköztem.

Ha például egy T betűt küldök, és a kurzor Minecraftban egy text mezőben van (főmenüben), akkor működik, a T betű kerül a text mezőbe.
De ha ESC-et küldök, akkor nem működik. (Ha manuálisan benyomom az ESC-et, akkor ugye visszalép az előző menübe.)

Pár applikációval működik az ESC: Discord, Sourcetree, Slack, Chrome, CS2D,
ezekkel viszont nem: Minecraft, Spelunky, Half-Life.
(Windowed módban fut az összes alkalmazás)

Szintúgy:
- Ha elküldöm a 2-es karaktert a Minecraftnak, miközben egy text mezőben vagyok, akkor beíródik a kettes.
- De ha játék közben küldöm el, akkor nincs semmi hatása. (A második item slotra kéne váltania)
- Ugyanez igaz a space-re. Text fieldben ott lesz a whitespace, de ingame nem fog tőle a karakter ugrani.

Miért?

**Kód:**

[DllImport("USER32.DLL", CharSet = CharSet.Unicode)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("USER32.DLL")] public static extern bool SetForegroundWindow(IntPtr hWnd); public Form1() { InitializeComponent(); IntPtr minecraftHandle = FindWindow("GLFW30", "Minecraft* 1.15.2"); if (minecraftHandle == IntPtr.Zero) { MessageBox.Show("Minecraft is not running."); return; } SetForegroundWindow(minecraftHandle); SendKeys.SendWait("{ESC}"); }
Mutasd a teljes hozzászólást!
Szerintem WM_KEYDOWN-t és WM_KEYUP kellene küldened.
WM_KEYDOWN (Compact 2013)
WM_KEYUP (Compact 2013)
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd