2014-02-07 131 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