C# 在窗体外部单击鼠标时执行方法

C# 在窗体外部单击鼠标时执行方法,c#,click,mouse,C#,Click,Mouse,我希望在另一个应用程序中单击鼠标左键时执行一个方法,在释放鼠标左键时执行另一个方法。我到处寻找,我能找到的唯一解决办法是eather不起作用,或者太复杂,我无法修改。有人能帮我吗?(C#)您可以使用全局鼠标挂钩。() 它很容易实现,只需下载源文件[Version2(.to play with It)(我刚刚尝试过,它对我有用),它可以做您需要做的事情,而且很容易修改。您能解释一下表单之外是什么意思吗?在当前打开的表单之外,但仍然在您的应用程序的主表单内还是在另一个应用程序上?对不起,在另一个应用

我希望在另一个应用程序中单击鼠标左键时执行一个方法,在释放鼠标左键时执行另一个方法。我到处寻找,我能找到的唯一解决办法是eather不起作用,或者太复杂,我无法修改。有人能帮我吗?(C#)

您可以使用全局鼠标挂钩。()


它很容易实现,只需下载源文件[Version2(.to play with It)(我刚刚尝试过,它对我有用),它可以做您需要做的事情,而且很容易修改。

您能解释一下表单之外是什么意思吗?在当前打开的表单之外,但仍然在您的应用程序的主表单内还是在另一个应用程序上?对不起,在另一个应用程序中。“或者太复杂,我无法修改”抱歉,捕获应用程序外部的点击是一个复杂的代码。最可靠的方法是通过WH_mouse_LL通过低级鼠标钩子。我已经尝试过这个方法,但是我遇到了一个抛出新的Win32Exception(errorCode)的
在HookManager.Callbacks.cs中的
EnsureSubscribedToGlobalMouseEvents
-方法中使用errorcode 126。我也搜索过这个问题,但没有任何运气…我实际上找到了答案。代码基于.NET4之前的版本,不再工作。我在
s_MouseHookHandle=SetWindowsHookEx中更改了封送(WH_MOUSE_LL,s_MouseDelegate,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0)
用于
var mar=LoadLibrary(“user32.dll”);
中的mar,并为freelibrary添加了一个PInv。