我正在使用 C#(.NET 4.0) 和 C++ 编写有关全局挂钩的应用程序。
在 64 位上无法接收 32 位应用程序的挂钩。所以我将 32 位应用程序(Hooker.exe)作为另一个进程启动并与主应用程序通信。
在应用程序关闭时,它必须释放一个已创建的钩子。但是,Hooker.exe 的进程并没有被这个程序完成。即使这样,如果使用 Process.Kill() ,它也不会执行释放处理。
主文件
static void Main()
{
Process p = Process.Start(Path.GetDirectoryName(Application.ExecutablePath) + "\\" + "Hooker.exe");
Application.Run(new MainForm());
p.Close();
}
胡克.cs
static void Main()
{
// call hook function from C++ DLL
Debug.WriteLine("start hook");
Application.Run();
// call unhook function from C++ DLL
Debug.WriteLine("release hook");
}
有什么好的方法可以解决这些问题吗?