【发布时间】:2012-07-11 21:57:38
【问题描述】:
我的Run Loop Observer是这样写的:
void observerCallback(CFRunLoopObserverRef observer,
CFRunLoopActivity activity, void* info)
{
println("%u", activity);
}
//-----------------------------
void InstallObserver()
{
CFRunLoopObserverRef myObserver = NULL;
int myActivities = kCFRunLoopEntry;
myObserver = CFRunLoopObserverCreate(NULL, myActivities, YES,
/* repeat */ 0, &observerCallback, NULL);
if (myObserver)
{
CFRunLoopAddObserver(CFRunLoopGetCurrent(), myObserver,
kCFRunLoopCommonModes);
}
}
每次我在应用程序中按任意键时,observerCallback 都会被调用 4 次。 问题是: 如何在observerCallback中获取key code? 谢谢。
【问题讨论】:
-
你想用运行循环做什么,而你不能通过响应事件流来做到这一点? CFRunLoop 恰好是由这些事件触发的,但触发器基本上是使用响应者框架来处理事件,因此,运行循环本身并没有得到您正在寻找的信息。
-
我的朋友盖格!我怎样才能为此目的使用“事件流”?有可能帮助我吗?谢谢。
-
可能。你想做什么?
-
我想监视我的进程空间(不是系统范围)中的键盘事件。似乎可可应用程序不支持 InstallEventHandler(目标 = GetApplicationEventTarget)(需要碳运行循环)。如果目标是 GetEventMonitorTarget() 则需要“通用访问”来激活(我不想要它)。
-
这是一款没有windows的App吗?我问的原因是有一些方法,但每种方法都有自己的要求,并且取决于您的实际要求将取决于哪些解决方案有意义。您是否有要在其中监视事件的窗口?
标签: objective-c macos cocoa macos-carbon runloop