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