#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 ENDIFVlad
>#DEFINE KEYEVENTF_KEYUP 2 >#DEFINE VK_SHIFT 0x10 >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") >IF lnhWnd > 0 > = ShowWindow(lnhWnd, 9) > = SetActiveWindow(lnhWnd) > = SetForegroundWindow(lnhWnd) > = SetKeybdFocus(lnhWnd) > FOR lni = 1 TO LEN(lcsentence) > lcchar = SUBSTR(lcsentence, lni, 1) > llshift = ISUPPER(lcchar) > lnchar = ASC(UPPER(lcchar)) > IF llshift > = keybd_event(VK_SHIFT, 0, 0, 0) > ENDIF > = keybd_event(lnchar, 0, 0, 0) > = keybd_event(lnchar, 0, KEYEVENTF_KEYUP, 0) > IF llshift > = keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0) > ENDIF > NEXT >ENDIF