为什么我不能在 IntPtr 方法中使用值?
Why can I not use a value inside a IntPtr method?
除了错误使用 DLL 之外,当我尝试在 IntPtr
方法中使用 theTestValue
时,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);
}
您无法访问该字段,因为该方法是静态的,并且该字段已在实例级别(非静态)上声明。如果您更改代码,使两者要么是静态的,要么不是静态的,错误就会消失。
将 theTestValue
设为静态或从 HookCallBack 中删除静态修饰符 function.If class 被声明为静态所有成员也必须是静态的。
除了错误使用 DLL 之外,当我尝试在 IntPtr
方法中使用 theTestValue
时,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);
}
您无法访问该字段,因为该方法是静态的,并且该字段已在实例级别(非静态)上声明。如果您更改代码,使两者要么是静态的,要么不是静态的,错误就会消失。
将 theTestValue
设为静态或从 HookCallBack 中删除静态修饰符 function.If class 被声明为静态所有成员也必须是静态的。