所以我有2类:定时器和KeyHook。C#共享或修改类之间的变量
在Timers类中,我有一个名为lastInteraction类型为DateTime的公共变量。
KeyHook类负责监听键盘事件。目前,当按下按键时,它会打印到屏幕上。
我希望KeyHook事件用当前的DateTime更新lastInteraction变量,这可能吗?即使我在定时器类中创建了KeyHook实例,它也没有帮助。
我怎样才能实现这样的事情,我在网上学习,但据我所知,变量不能跨类共享,并且在类之间传递值是行不通的。
一些代码片段:
的Program.cs
static void Main(string[] args)
{
BeatW.Timers timer = new BeatW.Timers();
timer.startTimers();
KeyHook kh = new KeyHook();
Console.ReadKey();
}
KeyHook.cs
public static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int vkCode = Marshal.ReadInt32(lParam);
Console.WriteLine((Keys)vkCode);
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
Timers.cs
class Timers
{
public DateTime lastInteraction;
...
}
您实例化'KeyHook',但回调方法是静态的。实例如何连接到静态回调? – dasblinkenlight
相反,hook可以更新它的'static' field/property,你可以从实例方法中读取它。 – Sinatr
像其他人一样,我也对你的Keyhook和Timers类是如何连接感到困惑,但我想说你可能希望Keyhook启动一个事件并让Timers类订阅它,以便lastInteraction值可以更新。 –