#DEFINE KEYEVENTF_KEYUP 2 >>#DEFINE VK_SHIFT 0x10 >>#define VK_CAPITAL 0x14 >>DECLARE SHORT VkKeyScan IN Win32API ; >> INTEGER nChar >>DECLARE INTEGER SetForegroundWindow IN Win32API; >> INTEGER hWnd >>DECLARE INTEGER SetActiveWindow IN Win32API; >> INTEGER hWnd >>DECLARE keybd_event IN Win32API; >> INTEGER bVk, INTEGER bScan,; >> INTEGER dwFlags, INTEGER dwExtraInfo >>DECLARE INTEGER ShowWindow IN Win32API; >> INTEGER hWnd, INTEGER uShow >>DECLARE INTEGER SetFocus IN Win32API AS SetKeybdFocus; >> INTEGER hWnd >>lcsentence = "THE quick brown fox jumped over the lazy dogs" >>lnhWnd = Is_Run32("Notepad") >>clear >>IF lnhWnd > 0 >> = ShowWindow(lnhWnd, 9) >> = SetActiveWindow(lnhWnd) >> = SetForegroundWindow(lnhWnd) >> = SetKeybdFocus(lnhWnd) >> *-- Store the status of the CAPS key >> llCapsWasOn = CAPSLOCK() >> IF llCapsWasOn >> *-- If CAPS is on, turn it off. >> = keybd_event(VK_CAPITAL, 0, 0, 0) >> = keybd_event(VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0) >> ENDIF >> FOR lni = 1 TO LEN(lcsentence) >> lcchar = SUBSTR(lcsentence, lni, 1) >> *-- Get the virtual key code and the shift status >> * for the current char. >> lnVKCodeShiftState = VkKeyScan(ASC(lcchar)) >> >> *-- Extract the virtual key code >> lnVKCode = MOD(lnVKCodeShiftState, 256) >> >> *-- Extract the shift status. >> * (Pressed if the bit 0 of the second byte is 1.) >> * The status of the ALT and CTRL keys can >> * be controled in the same way but I don't >> * do it in this example... >> lnShiftCode = INT(lnVKCodeShiftState / 256) >> llShift = BITTEST(lnShiftCode, 0) >> >> IF llShift >> = keybd_event(VK_SHIFT, 0, 0, 0) >> ENDIF >> = keybd_event(lnVKCode, 0, 0, 0) >> = keybd_event(lnVKCode, 0, KEYEVENTF_KEYUP, 0) >> IF llshift >> = keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0) >> ENDIF >> NEXT >> *-- Restore the status of the CAPS key >> IF llCapsWasOn >> = keybd_event(VK_CAPITAL, 0, 0, 0) >> = keybd_event(VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0) >> ENDIF >>ENDIF >>>>