2
我写了一个屏幕键盘使用firemonkey。用firemonkey屏幕键盘[Mac]
我模拟关键事件与此代码:
void kbdEvent(unsigned int key, int modifiers)
{
::CGEventSourceRef source =
CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
::CGEventRef keyDown = CGEventCreateKeyboardEvent(source,
(::CGKeyCode)key, true);
::CGEventRef keyUp = CGEventCreateKeyboardEvent(source, (::CGKeyCode)key,
false);
CGEventSetFlags(keyDown, modifiers);
CGEventPost(kCGHIDEventTap, keyDown);
CGEventPost(kCGHIDEventTap, keyUp);
CFRelease(keyUp);
CFRelease(keyDown);
CFRelease(source);
}
的问题是,当我按下一个键,然后我的形式获得焦点,并且不被目标应用程序收到生成的事件。如果我把下面的代码在计时器没有问题和“一个”在任何可编辑的目标类型:
kbdEvent(kVK_ANSI_A, 0);
我怎么能做到这一点没有得到重点是什么?
谢谢,它运作良好。 – bcbdev