除了错误使用DLL之外,当我尝试在theTestValue
方法中使用IntPtr
时,IntelliSense将其标记为失败。我想知道为什么会这样,因为我需要在这个方法中使用外部的bool
。
public partial class Form1 : Form
{
[DllImport("user32.dll")]
private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode,
IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode,
IntPtr wParam, IntPtr lParam);
private static LowLevelKeyboardProc _proc = HookCallback;
private delegate IntPtr LowLevelKeyboardProc(
int nCode, IntPtr wParam, IntPtr lParam);
public bool theTestValue = false; //This is the value
private static IntPtr HookCallback(
int nCode, IntPtr wParam, IntPtr lParam)
{
theTestValue = true; //Red marked
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
答案 0 :(得分:3)
您无法访问该字段,因为该方法是静态的,并且该字段已在实例级别(非静态)声明。如果您更改代码以使两者都是静态的,则错误将消失。
答案 1 :(得分:1)
使theTestValue
静态或从HookCallBack函数中删除static修饰符。如果该类声明为static,则所有成员也必须是静态的。