Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
SendInput
Message
De
23/02/2005 10:35:47
 
 
À
23/02/2005 09:37:57
Information générale
Forum:
Visual FoxPro
Catégorie:
Fonctions Windows API
Titre:
Divers
Thread ID:
00989605
Message ID:
00989635
Vues:
21
I haven't used sendinput but I have used sendkeys:
#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
.·*´¨)
.·`TCH
(..·*

010000110101001101101000011000010111001001110000010011110111001001000010011101010111001101110100
"When the debate is lost, slander becomes the tool of the loser." - Socrates
Vita contingit, Vive cum eo. (Life Happens, Live With it.)
"Life is not measured by the number of breaths we take, but by the moments that take our breath away." -- author unknown
"De omnibus dubitandum"
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform