#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 >>>>>>