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