Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Entering user names and password via automation
Message
De
09/12/2003 10:31:43
 
 
À
09/12/2003 00:12:42
Km Kwun
Eastop Consultants Limited
Nt, Hong Kong
Information générale
Forum:
Visual FoxPro
Catégorie:
Applications Internet
Divers
Thread ID:
00857078
Message ID:
00857203
Vues:
20
This message has been marked as a message which has helped to the initial question of the thread.
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
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform