1

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 フックに関する初心者向けの記事を推奨してくれれば、それは素晴らしいことです。私は懸命に検索してきましたが、私が思いついた最も明確なものは、上に貼り付けられたものでした.

4

2 に答える 2

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
    }
于 2012-11-30T19:58:05.423 に答える
0

タイプを定義していませんHookType(メッセージは非常に自明ですよね?)

http://www.pinvoke.net/default.aspx/user32.setwindowshookex

于 2012-11-30T19:47:36.257 に答える