Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Entering user names and password via automation
Message
De
10/12/2003 00:44:22
Km Kwun
Eastop Consultants Limited
Nt, Hong Kong
 
 
À
09/12/2003 10:31:43
Information générale
Forum:
Visual FoxPro
Catégorie:
Applications Internet
Divers
Thread ID:
00857078
Message ID:
00857523
Vues:
19
Thanks for the helpful code.

KM



>Hello,
>
>if you don't wont to be dependent on the WSH you can use this little VFP Class (utilizing Winapi calls)
>
>Regards
>
>Christian
>
>DEFINE CLASS oKeySender AS Custom
>
> #DEFINE KEYEVENT_KEYDN 0x0
> #DEFINE KEYEVENT_KEYUP 0x2
> #DEFINE VK_SHIFT 0x10
> #DEFINE VK_CTRL 0x11
> #DEFINE VK_ALT 0x12
>
>*!* FUNCTION Init
>*!* DECLARE keybd_event IN USER32 INTEGER, INTEGER, INTEGER, INTEGER
>*!* DECLARE SHORT VkKeyScan IN USER32 INTEGER
>*!* DECLARE INTEGER MapVirtualKey IN USER32 INTEGER, INTEGER
>*!* ENDFUNC
>
>*!* FUNCTION Destroy
>*!* CLEAR DLLS "keybd_event", "VkKeyScan", "MapVirtualKey"
>*!* ENDFUNC
>
> FUNCTION SendText
> LPARAMETERS lcText
>
> LOCAL lnAscii, lcChar, lnVK, nShift, nCtrl, nAlt
>
> FOR xj = 1 TO LEN(lcText)
>
> lcChar = SUBSTR(lcText,xj,1)
> lnAscii = ASC(lcChar)
>
> lnVK = VkKeyScan(lnAscii)
>
> IF lnVK = 0
> LOOP
> ENDIF
>
> lnScan = MapVirtualKey(lnVK,2)
> lnExtended = 0
> IF lnScan = 0
> lnExtended = 1
> ENDIF
> lnScan = MapVirtualKey(lnVK, 0)
>
> nShift = BITAND(lnVK,0x100)
> nCtrl = BITAND(lnVK,0x200)
> nAlt = BITAND(lnVK,0x400)
> lnVK = BITAND(lnVK,0xFF)
>
> IF nShift > 0
> keybd_event(VK_SHIFT,0,KEYEVENT_KEYDN,0)
> ENDIF
> IF nCtrl > 0
> keybd_event(VK_CTRL,0,KEYEVENT_KEYDN,0)
> ENDIF
> IF nAlt > 0
> keybd_event(VK_ALT,0,KEYEVENT_KEYDN,0)
> ENDIF
>
> && press the key
> keybd_event(lnVK,lnScan,lnExtended,0)
> && release the key
> keybd_event(lnVK,lnScan,BITOR(2,lnExtended),0)
>
> IF nShift > 0
> keybd_event(VK_SHIFT,0,KEYEVENT_KEYUP,0)
> ENDIF
> IF nCtrl > 0
> keybd_event(VK_CTRL,0,KEYEVENT_KEYUP,0)
> ENDIF
> IF nAlt > 0
> keybd_event(VK_ALT,0,KEYEVENT_KEYUP,0)
> ENDIF
>
> ENDFOR
>
> ENDFUNC
>
> FUNCTION SendKeyCombi
> LPARAMETERS lnModifier, lcText
>
> LOCAL lnAscii
>
> IF BITTEST(lnModifier,0)
> keybd_event(VK_SHIFT,0,KEYEVENT_KEYDN,0)
> ENDIF
> IF BITTEST(lnModifier,1)
> keybd_event(VK_CTRL,0,KEYEVENT_KEYDN,0)
> ENDIF
> IF BITTEST(lnModifier,2)
> keybd_event(VK_ALT,0,KEYEVENT_KEYDN,0)
> ENDIF
>
> DO CASE
> CASE VARTYPE(lcText) = 'C'
> lnAscii = ASC(lcText)
> CASE VARTYPE(lcText) = 'N' OR VARTYPE(lcText) = 'I'
> lnAscii = lcText
> OTHERWISE
> lnAscii = ASC(TRANSFORM(lcText))
> ENDCASE
>
> && press the key
> keybd_event(lnAscii,0,KEYEVENT_KEYDN,0)
> && release the key
> keybd_event(lnAscii,0,KEYEVENT_KEYUP,0)
>
> IF BITTEST(lnModifier,0)
> keybd_event(VK_SHIFT,0,KEYEVENT_KEYUP,0)
> ENDIF
> IF BITTEST(lnModifier,1)
> keybd_event(VK_CTRL,0,KEYEVENT_KEYUP,0)
> ENDIF
> IF BITTEST(lnModifier,2)
> keybd_event(VK_ALT,0,KEYEVENT_KEYUP,0)
> ENDIF
> ENDFUNC
>
>ENDDEFINE
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform