将鼠标事件发送到另一个windows,C#在Win 7下
是否有方法将鼠标事件发送到窗口7中的另一个窗口将鼠标事件发送到另一个windows,C#在Win 7下,c#,events,winapi,windows-7,mouse,C#,Events,Winapi,Windows 7,Mouse,是否有方法将鼠标事件发送到窗口7中的另一个窗口 我曾经这样做: [DllImport(“user32.dll”,CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)] 公共静态外部无效鼠标事件(长dwFlags、长dx、长dy、长cButtons、长dwExtraInfo); 但这在Win7中似乎不再有效。 有什么想法吗 谢谢。不工作怎么办 一件可能相关的事情(很难,因为你给出的细节太少)是,非提升(在UAC下)
我曾经这样做:
[DllImport(“user32.dll”,CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
公共静态外部无效鼠标事件(长dwFlags、长dx、长dy、长cButtons、长dwExtraInfo);
但这在Win7中似乎不再有效。有什么想法吗
谢谢。不工作怎么办 一件可能相关的事情(很难,因为你给出的细节太少)是,非提升(在UAC下)应用程序不允许与提升的应用程序通信。所以,如果一个应用被提升,而另一个没有提升,你会说它“似乎不工作”。但是你不能通过改变你使用的API来解决这个问题。不工作怎么办
一件可能相关的事情(很难,因为你给出的细节太少)是,非提升(在UAC下)应用程序不允许与提升的应用程序通信。所以,如果一个应用被提升,而另一个没有提升,你会说它“似乎不工作”。但是,您无法通过更改所使用的API来解决此问题。user32.dll中的SendMessage: 您可能还需要和
适用于此类内容。user32.dll中的SendMessage: 您可能还需要和
这对这类东西很好。这对您不起作用的最可能的原因是您使用的p/Invoke签名不正确。您已将参数指定为
long
,它在.NET中表示64位整数。参数定义为DWORD,表示32位整数,这将导致堆栈不平衡。将您的签名更改为以下内容,您的运气会更好
[DllImport("user32.dll")]
public static extern void mouse_event(Int32 dwFlags, Int32 dx, Int32 dy, Int32 cButtons, Int32 dwExtraInfo);
你也应该考虑凯特的观点,一旦签名被修正,这也会影响到你的结果。 这不适用于您的最可能原因是您使用的p/Invoke签名不正确。您已将参数指定为
long
,它在.NET中表示64位整数。参数定义为DWORD,表示32位整数,这将导致堆栈不平衡。将您的签名更改为以下内容,您的运气会更好
[DllImport("user32.dll")]
public static extern void mouse_event(Int32 dwFlags, Int32 dx, Int32 dy, Int32 cButtons, Int32 dwExtraInfo);
你也应该考虑凯特的观点,一旦签名被修正,这也会影响到你的结果。