2014-02-07 128 views
2

我寫了一個屏幕鍵盤使用firemonkey。用firemonkey屏幕鍵盤[Mac]

enter image description here

我模擬關鍵事件與此代碼:

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); 

我怎麼能做到這一點沒有得到重點是什麼?

回答

1

你需要做什麼OSK沒有激活表格。看到最流行的firemonkey question
當用戶單擊它時,「不激活」窗口不會成爲前景窗口。當用戶最小化或關閉前景窗口時,系統不會將此窗口置於前臺。

+0

謝謝,它運作良好。 – bcbdev