最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡單實現(xiàn).NET?Hook與事件模擬實例

 更新時間:2023年10月27日 14:09:04   作者:波多爾斯基  
這篇文章主要為大家介紹了簡單實現(xiàn).NET?Hook與事件模擬實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

最近玩《星露谷物語》上癮,本來是看著個休閑游戲,現(xiàn)在玩成修仙游戲了,上百個小時渾身是肝,中午午休習慣都強行給改了。

雖然挺有意思,但是太肝了,入坑前請謹慎。補充一下,這個游戲應該是基于 XNA/MonoGame 寫的。

這個游戲在喪失焦點的時候會自動暫停,無法自動推進,我覺得效率太低了,為了齊先生的場子,我得搞一個自動點擊的東西。

不想下載軟件就自己寫一個吧,因為要保證游戲始終在前面,那肯定開關(guān)需要啟用全局快捷鍵。找了一下,. NET 有一個 SharpHook (tolik.io) 就挺簡單的,花幾分鐘寫了一個,實現(xiàn)了功能。

SharpHook 是一個跨平臺的 Hook 組件,核心基于 libuiohook

監(jiān)聽事件

官網(wǎng)的文檔非常簡潔易懂,我設(shè)置快捷鍵監(jiān)聽,監(jiān)聽按鍵按下。

var hook = new TaskPoolGlobalHook();
hook.HookEnabled += OnHookEnabled;     // EventHandler<HookEventArgs>
hook.HookDisabled += OnHookDisabled;   // EventHandler<HookEventArgs>
hook.KeyTyped += OnKeyTyped;           // EventHandler<KeyboardHookEventArgs>
hook.Run();

然后在事件中設(shè)置定時器啟動以及停止,我目標是每隔兩秒鐘按鼠標左鍵一次。

private static void OnKeyTyped(object? sender, KeyboardHookEventArgs e)
{
    if (e.SuppressEvent) return;
    if (e.Data.KeyCode.HasFlag(KeyCode.VcSemicolon)) // ;鍵
    {
        Console.WriteLine("start timer");
        _timer.Start();
    }
    else if (e.Data.KeyCode.HasFlag(KeyCode.VcL)) //L鍵
    {
        Console.WriteLine("stop timer");
        _timer.Stop();
    }
    e.SuppressEvent = true;
}

模擬事件

這個庫同樣可以模擬鼠標和鍵盤的操作,我這里操作鼠標,鍵盤也是同理。

static EventSimulator _simulator = new EventSimulator();
private static void _timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
{
	_simulator.SimulateMousePress(MouseButton.Button1);
	Thread.Sleep(100);
	_simulator.SimulateMouseRelease(MouseButton.Button1);
}

注意,很多游戲是單獨監(jiān)聽鼠標的按下與松開的,這樣算一次完整的點擊,如果中間沒有設(shè)置延時,有可能識別不鼠標的動作。這個游戲就是這樣,沒有延時就不行。

好了,運行之后放在后臺,在游戲獲取焦點的時候,按";"啟動,然后鼠標懸停在物品上面就能自動拿起/放下了,按“L”退出。

鍵位與其他

參考 Key Code Mappings | SharpHook (tolik.io) 看鍵名稱與 Key Code。調(diào)試的時候,如果在 OnKeyTyped 事件中設(shè)置斷點會有一下子非常卡,耐心一點就正常了。

另外,我 Hook 上方 F 功能鍵的時候一直不成功,但是 ESC 是可以正常被響應的,沒有深入去研究為什么,以后真完全有必要了再看看。

以上就是簡單實現(xiàn).NET Hook與事件模擬實例的詳細內(nèi)容,更多關(guān)于.NET Hook事件模擬的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

手游| 杭锦后旗| 百色市| 河西区| 鄂托克旗| 抚宁县| 明水县| 昌邑市| 凌云县| 镇平县| 蚌埠市| 大庆市| 游戏| 宜川县| 涪陵区| 南乐县| 怀柔区| 永川市| 东港市| 仁布县| 资溪县| 姜堰市| 富源县| 灵璧县| 大关县| 承德县| 荆州市| 印江| 蓬莱市| 岫岩| 海宁市| 普兰县| 彰化市| 五大连池市| 石棉县| 阳曲县| 望江县| 曲松县| 馆陶县| 扎赉特旗| 桐城市|