【问题标题】:On screen keyboard with firemonkey [Mac]带有 firemonkey 的屏幕键盘 [Mac]
【发布时间】: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


    【解决方案1】:

    制作OSK需要的是无激活表格。查看最受欢迎的 firemonkey question
    当用户单击“不激活”窗口时,它不会成为前台窗口。当用户最小化或关闭前台窗口时,系统不会将该窗口置于前台。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 2014-04-26
      • 2012-03-07
      • 2010-10-30
      相关资源
      最近更新 更多