【问题标题】:C# Virtual Mouse Console application Running in the backgroundC# 虚拟鼠标控制台应用程序在后台运行
【发布时间】:2013-06-22 22:17:00
【问题描述】:

您好,我的程序需要帮助,我在 c# 和 Leap Motion Device 中制作了一个控制台应用程序,我的程序模拟了一个虚拟鼠标,移动光标和左/右键单击,使用

[System.Runtime.InteropServices.DllImport("user32.dll")]

public static void MouseClickLeft(int x, int y) 
        {

            mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
            mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
        }

        public static void MouseClickRight(int x, int y)
        {
            mouse_event(MOUSEEVENTF_RIGHTDOWN, x, y, 0, 0);
            mouse_event(MOUSEEVENTF_RIGHTUP, x, y, 0, 0);
        }

我需要使用另一个应用程序运行此程序,但鼠标控制仅在控制台应用程序作为主窗口运行时才有效,当我在桌面或其他应用程序中单击鼠标左键时它停止工作。我是 C# 编程的初学者,我可以做些什么来让它在后台运行并且仍然移动鼠标?

【问题讨论】:

    标签: c# mouse leap-motion


    【解决方案1】:

    要在您的应用程序不是前台应用程序时接收 Leap Motion 跟踪数据,您必须设置后台帧策略:

    controller.SetPolicyFlags(Controller.PolicyFlag.POLICYBACKGROUNDFRAMES);
    

    您可以随时调用此函数,但结果是异步的,因此 policyFlags 属性不会立即显示更改。

    【讨论】:

      【解决方案2】:

      查看我的 Key Clone 应用程序,了解如何完成此操作的示例: https://github.com/Mataniko/WowKeyclone/blob/master/Interop.cs

      在我的情况下,我使用 WH_KEYBOARD_LL 设置挂钩,在你的情况下使用 WH_MOUSE_LL。

      有关设置挂钩的更多信息,请访问: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644959(v=vs.85).aspx

      如果您需要更多信息,请在评论中告诉我。

      【讨论】:

      • 你基本上可以通过几个编辑来使用整个类
      • 我看看你的程序,但我不明白,我想让这个控制台应用程序与 Game Maker .exe 一起工作,就像鼠标应用程序的输出变成游戏的输入一样.
      • 您必须挂接到该窗口句柄并发送输入。这不是一件直截了当的事情。查看同一项目中的 KeyHandler.cs 文件,了解如何将这些事件发送到另一个窗口。 SO上也有很多例子:stackoverflow.com/questions/10355286/…
      • 我使用 [DllImport("user32.dll")] static extern UInt32 SendInput(UInt32 nInputs, [MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] INPUT[] pInputs, Int32 cbSize); 和 System.Windows.Forms 和 Cursor.Position 并且它有效,谢谢!
      • 太好了,如果您的问题得到解决,请确保您接受答案,祝您申请顺利。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 2013-06-30
      • 2011-02-10
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多