我试图通过C#了解Win32 API中的钩子。我想要实际做的是如何在存在低级用户活动(如鼠标移动或击键)时调用命令。我目前正在阅读这篇文章: http://msdn.microsoft.com/en-us/magazine/cc188966.aspx
但是,当我从示例中输入以下代码时:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using Microsoft.Win32;
using System.ComponentModel;
using System.Reflection;
class Win32Hooks
{
[DllImport("user32.dll")]
public static extern IntPtr SetWindowsHookEx(HookType code,
CbtHook.CbtProc func,
IntPtr hInstance,
int threadID);
[DllImport("user32.dll")]
public static extern int UnhookWindowsHookEx(IntPtr hhook);
static void Main()
{
}
}
但是,我收到的错误是找不到类型或名称空间“HookType”。知道如何解决这个问题吗?如果有人可以为初学者推荐一篇关于使用C#的Win32 API Hooks的文章,那就太棒了。我一直在努力寻找,但我最清楚的就是上面贴了这个。
答案 0 :(得分:2)
HookType在您引用的文章中定义。
public enum HookType : int
{
WH_JOURNALRECORD = 0,
WH_JOURNALPLAYBACK = 1,
WH_KEYBOARD = 2,
WH_GETMESSAGE = 3,
WH_CALLWNDPROC = 4,
WH_CBT = 5,
WH_SYSMSGFILTER = 6,
WH_MOUSE = 7,
WH_HARDWARE = 8,
WH_DEBUG = 9,
WH_SHELL = 10,
WH_FOREGROUNDIDLE = 11,
WH_CALLWNDPROCRET = 12,
WH_KEYBOARD_LL = 13,
WH_MOUSE_LL = 14
}
答案 1 :(得分:0)
您还没有定义HookType
类型(消息是非常不言自明的不是吗?)