簡體   English   中英

如何在c#中模擬鼠標單擊,這將在游戲中起作用?

[英]How to simulate mouse click in c# , which will work in games?

當我玩《帝國時代》或其他策略游戲時,我經常需要出售一些資源100次,然后再出售一次。 它很煩人 :(

我編寫了一個程序,該程序可以通過使用單擊鼠標來幫助我:

//This is the decleration
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);

private void ClickTheMouse()
{
      int X = Cursor.Position.X;
      int Y = Cursor.Position.Y;
      mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}

然后使用計時器和上面的代碼,我可以單擊30次。

在Windows(文字,Firefox等)和窗口中都可以很好地工作,甚至在《帝國時代》中也可以。但是,不幸的是,它在“堡壘十字軍”和其他一些我不記得他們名字的游戲中不起作用。

我認為發生這種情況是因為單擊是在較高級別模擬的,並且如果將其模擬為更接近驅動程序級別,則它將起作用。

我有兩個問題:

  1. 我的假設對嗎?
  2. 我如何在較低的水平上模擬鼠標單擊,這將在此游戲中起作用?

我使用c#,但是任何c ++代碼也都可以(我將僅使用PInvoke)。

謝謝,

我曾經面對過同樣的問題。 您是否正在嘗試通過VS2010中的發布/調試編譯器使用該應用程序? 如果是這樣,請嘗試單獨運行單個編譯文件,並記住以管理員身份運行它(如果適用)。

當由VSHost托管時,無論出於何種原因,我的機器人都拒絕在某些游戲中正常工作。

您可以嘗試使用SendInput函數n User32.dll:

http://alala666888.wordpress.com/2010/09/17/simulate-mouse-event-using-sendinput-and-setcursorpos/

但是,您將無法在您的完整性級別更高的應用程序中注入輸入事件。 我認為這是發生在您身上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM