sendkeys

Status
Niet open voor verdere reacties.

jwaque

Verenigingslid
Lid geworden
16 aug 2006
Berichten
443
IK probeer automatisch wat handelingen in een op dos georrienteerd programma te krijgen. Nu is het idee omdat via sendkeys te doen.

Uitgeprobeerd met WORD en notepad en dat ging prima.
vervolgens het programma. het doorsturen van inlognaam (4cijfers), enter, wachtwoord (6 tekens) en enter ging prima.
Dus op naar de volgende stap een nummer van 8 cijfers en daarna 2* enter. (daarna nog meer maar eerst maar stap1)
En hier gaat het mis.
soms komen alleen de laatste 7 cijfers door en de tweede enter al helemaal niet.

ik heb in mijn procedure:
Code:
sendkeys "%{tab})         'om het betreffende programma te activeren
sendkeys "97123456"
sendkeys "~"
sendkeys "~"

ook geprobeert om de ~direct achter het nummer te zetten of {enter} maar dat was ook geen succes. Ook true lijkt niet goed te werken.

Ik denk dat de key's te snel doorgestuurd worden omdat soms alleen de laatste cijfers te zien zijn. Maar als ik na de tweede enter een ~ stuur en daarna een getal wordt het tweede getal aan het eerste geplakt.
vraag1: Kan ik een vertraging in bouwen in de code zodat de tweede key later wordt gestuurd.
vraag2: ik lees veel over shell en WScript.Sleep 100 maar dit krijg ik ook niet werkend. Welke libary moet ik aanzetten om wscript te kunnen gebruiken?

alsvast dank.
 
Laatst bewerkt door een moderator:
Laat je hele procedure eens zien.
 
er is niet zoveel procedure. ik start het betreffende programma handmatig op tot het veld waarin het cijferig nr moet komen. vervolgens is het een volgorde van cijfers en enters (programma maakt geen gebruik van de muis).
Ik heb dus 2 programma's het dos en acces openstaan. Het idee is dat hij dmv de alt-tab naar het dos programma springt en daar de juiste volgorde cijfers en enters doorgeeft.

Code:
sub knop0()
sendkeys "%{tab}) 'om het betreffende programma te activeren
 sendkeys "97123456"
 sendkeys "~"
 sendkeys "~"
end sub
 
Laatst bewerkt door een moderator:
Waar het me om gaat is te bekijken wat je precies gebruikt. Visual Basic Script of een andere methode.
 
Access forum.... lijkt mij duidelijk hoe de code wordt aangestuurd :)
Je kan een tijdlus inbouwen tussen de verschillende opdrachten.

Code:
Sub knop0()
sendkeys "%{tab}) 'om het betreffende programma te activeren
GoSub TijdLoop
SendKeys "97123456"
GoSub TijdLoop
SendKeys "~"
GoSub TijdLoop
SendKeys "~"

Exit Sub

TijdLoop:
    'Om te voorkomen dat de programmatuur zich verslikt, een kleine pauze van 1 seconde...
    Start = 0
    Start = Timer    ' Aanvangstijd instellen.
    Do While Timer < Start + 1
        DoEvents    ' Overdragen aan andere processen.
    Loop
Return
End sub
 
Hij had het over een DOS programma, vandaar m'n vraag.
 
Maar hij stuurt 'm aan vanuit Access ;)
 
Dat had ik niet in de gaten omdat hij ook Wscript noemde.
Ook ik ben soms niet helemaal wakker ;)
 
Zal de warmte zijn; smelten de hersencelletjes van :cool:
@TS: heb je de loop al geprobeerd?
 
Zal de warmte zijn; smelten de hersencelletjes van :cool:
@TS: heb je de loop al geprobeerd?

gisteren een poging gedaan maar toen werkte het hele sendkeys niet meer. dus vandaag een nieuwe poging. alvast dank zover.
 
Sendkeys is een erg risicovolle techniek, omdat je nooit 100% zekerheid hebt over welk onderdeel nu de focus heeft. En daar gaan je toetsaanslagen naar toe. En dit
ik start het betreffende programma handmatig op tot het veld waarin het cijferig nr moet komen.
helpt daar ook niet echt bij...
 
Dan zul je naar echte scripting tools moeten gaan kijken. Ik heb ooit wel eens een uitgebreid script gemaakt met WinBatch. Dat doet iets vergelijkbaars als Sendkeys (je kunt ook toetsaanslagen verzenden) maar je kunt eigenschappen van vensters uitlezen, muisverplaatsingen afvangen (ook riskant overigens ;) ) etc zodat je veel meer controle hebt over wat er allemaal gebeurt.
 
misschien heeft het dos-programma een commandline waarmee je kan inloggen

alternatieven voor winbatch, zie http://alternativeto.net/software/winbatch/
autohotkey heeft zelfs een recorder die alle toets- en muisbewegingen opslaat die je later kan bewerken

veel programmas hebben hotkeys (b.v. tab voor volgende veld), gebruik die om dingen te doen in je programma in plaats van muisbewegingen
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan