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