【发布时间】:2014-03-04 19:25:54
【问题描述】:
我使用 firemonkey 编写了一个屏幕键盘。
我用这段代码模拟关键事件:
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);
}
问题是当我按下一个键时,我的表单获得焦点,而目标应用程序没有接收到生成的事件。如果我将以下代码放入计时器中,则没有问题,并且“a”将输入任何可编辑的目标:
kbdEvent(kVK_ANSI_A, 0);
没有接收焦点怎么办?
【问题讨论】:
标签: delphi c++builder firemonkey delphi-xe4