110,534
社区成员
发帖
与我相关
我的任务
分享
public class CopyDataHook {
private const int WM_COPYDATA = 0x004A;
private IntPtr nextHookPtr;
private HookProc hookProc;
private const int HookType.CallWndProc = 4;
[DllImport("User32.dll")]
public static extern void UnhookWindowsHookEx(IntPtr handle);
[DllImport("User32.dll")]
public static extern IntPtr SetWindowsHookEx(int idHook, [MarshalAs(UnmanagedType.FunctionPtr)] HookProc lpfn, IntPtr hinstance, int threadID);.
[DllImport("User32.dll")]
public static extern IntPtr CallNextHookEx(IntPtr handle, int code, IntPtr wparam, IntPtr lparam);
public CopyDataHook()
{
nextHookPtr = IntPtr.Zero;
}
public void SetCopyDataHook()
{
if (nextHookPtr != IntPtr.Zero)
return;
hookProc = new HookProc(CopyDatahookProc);
nextHookPtr = SetWindowsHookEx((int)HookType.CallWndProc,
hookProc,
Marshal.GetHINSTANCE(
Assembly.GetExecutingAssembly().GetModules()[0]),
0);//==>返回为0
Console.Write(string.Format("HookPtr:{0}", nextHookPtr.ToString()));
}
}