【问题标题】:Sending mouse events to another windows, C# under Win 7将鼠标事件发送到另一个窗口,Win 7下的C#
【发布时间】:2010-07-16 23:29:28
【问题描述】:

有没有办法将鼠标事件发送到 Window 7 中的另一个窗口?
我曾经这样做过:
[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);

但这在 Win7 中似乎不再起作用了。
有任何想法吗 ?

谢谢。

【问题讨论】:

    标签: c# events winapi windows-7 mouse


    【解决方案1】:

    不工作怎么办?

    可能相关的一件事(这很难,因为您提供的细节太少)是非提升(在 UAC 下)应用不允许与提升的应用通信。因此,如果一个应用程序被提升而另一个没有,你会说它“似乎不起作用”。但是你不能通过改变你使用的 API 来解决这个问题。

    【讨论】:

      【解决方案2】:

      这对您不起作用的最可能原因是您使用的 P/Invoke 签名不正确。您已将参数指定为 long,它在 .NET 中表示一个 64 位整数。 Win32 API decleration 的参数定义为 DWORD,表示 32 位整数,这将导致堆栈不平衡。将您的签名更改为以下内容,您应该会有更好的运气。

      [DllImport("user32.dll")]
      public static extern void mouse_event(Int32 dwFlags, Int32 dx, Int32 dy, Int32 cButtons, Int32 dwExtraInfo);
      

      此外,您应该考虑 Kate 的观点,一旦签名被修复,这也可能会影响您的结果。

      【讨论】:

        【解决方案3】:

        user32.dll 中的SendMessage:would do the trick

        您可能还需要FindWindowWM constants

        pinvoke.net 适合这种东西。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-10-04
          • 1970-01-01
          • 2012-07-29
          • 1970-01-01
          • 1970-01-01
          • 2013-01-26
          • 2017-07-28
          相关资源
          最近更新 更多