我正在嘗試使用unity3d來做一個按鈕監控功能,但是現在遇到了一些困難。我的第一個版本的方法是hook,一切正常,直到遇到英雄聯盟,在這個游戲的界面上,我的鍵盤無法被hook捕獲。主要代碼如下:
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern IntPtr SetWindowsHookEx(int idHook, LowLevelHookProc lpfn, IntPtr hMod, uint dwThreadId);
public delegate IntPtr LowLevelHookProc(int nCode, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool UnhookWindowsHookEx(IntPtr hhk);
接下來,我使用 DirectX 輸入組件進行監控。同樣,英雄聯盟界面也沒有任何反應。順便說一下,我正在使用 SharpDX.DirectInput。代碼是這樣的:
Keyboard keyboard;
void Start()
{
var directInput = new DirectInput();
keyboard = new Keyboard(directInput);
keyboard.Acquire();
}
void Update()
{
KeyboardState cur = keyboard.GetCurrentState();
if (cur.PressedKeys.Count != 0)
{
Debug.LogError(cur.ToString());
}
}
最后我用GetAsyncKeyState來捕獲,同樣不生效。
那么有人知道發生了什么嗎?這種想象力不應該只存在于英雄聯盟中,其他游戲中也應該存在。我沒有時間測驗它。如果您有任何想法或建議,我將不勝感激!
uj5u.com熱心網友回復:
解決了評論部分的問題:
一些高預算的游戲有反作弊系統。您必須以管理員身份運行程式才能進行按鈕監控。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/335838.html
下一篇:什么時候使用int.Parse?
