#DEFINE INFINITE 0xFFFFFFFF LOCAL lcStartupInfo, lcProcInfo, hProcess, ; lnPrio, lnIBelieve1 lnIBelieve1 = 1 && Don't remember what that was lnPrio = 32 && Priority of Process=Normal lcStartupInfo = CHR(68) + REPLI(CHR(0), 67) lcProcInfo = REPLI(CHR(0), 16) m.lcApp = "notepad.exe" m.lccmdline = "" DO DECLexewait IF CreateProcess(0, m.lcApp+" "+m.lccmdline+CHR(0), 0,0,; m.lnIBelieve1, m.lnPrio,; 0, 0, @lcStartupInfo, @lcProcInfo) <> 0 hProcess = buf2dword(SUBSTR(lcProcInfo, 1,4)) hThread = buf2dword(SUBSTR(lcProcInfo, 5,4)) lncount = 0 DOEVENTS DO WHILE .T. exitcode = 0 && initialize return value to 0 = GetExitCodeProcess(hProcess, @exitcode) && try to obtain process exit code IF exitcode # 259 && not still busy EXIT && fall out of loop ELSE lncount = lncount + 1 IF lncount < 30 =SendData('Untitled - NotePad') ELSE EXIT ENDIF ENDIF = Sleep (100) && wait .1 seconds ENDDO IF MESSAGEBOX('Check the notepad window for data entered.'+CHR(13); +'Close the window when ready to close notepad.',1+32+4096) = 1 = CloseWindow('Untitled - NotePad') ENDIF = CloseHandle(hThread) = CloseHandle(hProcess)N~LINE101 ELSE =MESSAGEBOX("Unable to initiate NotePad.Exe") ENDIF RETURN PROCEDURE DECLexewait DECLARE INTEGER CreateProcess IN kernel32; INTEGER lpAppName, STRING lpCmdLine, INTEGER lpProcAttr,; INTEGER lpThrAttr, INTEGER bInhHandles, INTEGER dwCrFlags,; INTEGER lpEnvir, INTEGER lpCurDir, ; STRING @lpStInfo, STRING @lpProcInfo DECLARE INTEGER GetLastError IN kernel32 DECLARE INTEGER CloseHandle IN kernel32 INTEGER hObject DECLARE INTEGER WaitForSingleObject IN kernel32; INTEGER hHandle, INTEGER dwMilliseconds DECLARE INTEGER GetExitCodeProcess IN WIN32API INTEGER hProcess, INTEGER @lpExitCode DECLARE Sleep IN kernel32 INTEGER dwMilliseconds RETURN FUNCTION buf2dword(lcBuffer) RETURN ASC(SUBSTR(lcBuffer, 1,1)) + ; ASC(SUBSTR(lcBuffer, 2,1)) * 256 +; ASC(SUBSTR(lcBuffer, 3,1)) * 65536 +; ASC(SUBSTR(lcBuffer, 4,1)) * 16777216 RETURN *-------------- FUNCTION SendData PARAMETER tcTitle DECLARE INTEGER FindWindow IN Win32API AS FindWindow STRING, STRING lnwindow = FindWindow(0,tcTitle) IF lnwindow > 0 #DEFINE WM_KEYDOWN 0x0100 #DEFINE WM_SYSCOMMAND 0x0112 #DEFINE WM_COMMAND 0x00110818 #DEFINE WM_KEYUP 0x0101 #DEFINE WM_SETFOCUS 0x0007 DECLARE SHORT PostMessage IN user32; INTEGER HWND,; INTEGER Msg,; STRING wParam,; INTEGER LPARAM HWND = lnwindow ReturnValue = PostMessage(HWND, WM_SETFOCUS, 0, 0) oShell = CREATEOBJECT("wscript.shell") oShell.Sendkeys("{~}") oShell.Sendkeys("L") oShell.Sendkeys("I") oShell.Sendkeys("N") oShell.Sendkeys("E") cvalue = ALLTRIM(STR(lncount)) oShell.Sendkeys(cvalue) oShell.Sendkeys("{ENTER}") RELEASE oShell RETURN .T. ELSE RETURN .F. ENDIF FUNCTION CloseWindow PARAMETER tcTitle DECLARE INTEGER FindWindow IN Win32API AS FindWindow STRING, STRING lnwindow = FindWindow(0,tcTitle) IF lnwindow > 0 #DEFINE WM_KEYDOWN 0x0100 #DEFINE WM_SYSCOMMAND 0x0112 #DEFINE WM_COMMAND 0x00110818 #DEFINE WM_KEYUP 0x0101 #DEFINE WM_SETFOCUS 0x0007 DECLARE SHORT PostMessage IN user32; INTEGER HWND,; INTEGER Msg,; STRING wParam,; INTEGER LPARAM HWND = lnwindow ReturnValue = PostMessage(HWND, WM_SETFOCUS, 0, 0) oShell = CREATEOBJECT("wscript.shell") oShell.Sendkeys("%{F4}") oShell.Sendkeys("") oShell.Sendkeys("N") RELEASE oShell RETURN .T. ELSE RETURN .F. ENDIF