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