Avatar billede avon Nybegynder
28. marts 2003 - 11:39 Der er 5 kommentarer og
1 løsning

SendInput

Jeg har lidt problemer med SendInput.
Jeg skal kun sende nogle tasteturkoder, ikke noget med musen, og har derfor omskrevet eksemplet fra:
http://rattlesnake.at.box.sk/reference/api/s/sendinput.html
Jeg kan dog ikke få den til at skrive små bogstaver og @.
I listerne over "Virtual-Key Codes" findes der heller ikke små bogstaver, kan det hænge sammen med det?
Jeg kan få den til at skrive _ ved at sende koderne for shift og - samtidig, men der findes ikke nogen kode for AltGr, så man kan ikke på samme måde generere et @.
Er der nogen der har erfaring med dette?
Avatar billede tjacob Juniormester
28. marts 2003 - 13:02 #1
Her er VB's Keycodes (1. halvdel):

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vamscANSITable.asp

I det link du henviser til er værdierne sat som hex, men det er ligegyldigt.
VB accepterer begge dele.

du indsætter blot denne værdi i wVk komponenten af KEYBDINPUT strukturen.

/tjacob
Avatar billede avon Nybegynder
28. marts 2003 - 13:15 #2
Det har jeg også forsøgt i nedenstående sub som er min egen omskrivning af en funktion fra internettet. Hvis jeg kalder med storebogstaver virker det("ABCD" får jeg "ABCD" tilbage), men hvis jeg kalder med "abcd" for jeg "1234" tilbage.

Sub sendString(textToSend As String)

    Dim letterCount As Long
    Dim i As Long
   
    letterCount = Len(textToSend)
   
    ReDim inputevents(0 To letterCount * 2 - 1) As INPUT_TYPE ' holds information about each event
    Dim keyevent As KEYBDINPUT  ' temporarily hold keyboard input info
   
    For i = 0 To letterCount - 1
   
        keyevent.wVk = Asc(Mid(textToSend, i + 1, 1))
        keyevent.wScan = 0
        keyevent.dwFlags = 0
        keyevent.time = 0
        keyevent.dwExtraInfo = 0
        inputevents(i * 2).dwType = INPUT_KEYBOARD
        CopyMemory inputevents(i * 2).xi(0), keyevent, Len(keyevent)
       
        keyevent.wVk = Asc(Mid(textToSend, i + 1, 1))
        keyevent.wScan = 0
        keyevent.dwFlags = KEYEVENTF_KEYUP
        keyevent.time = 0
        keyevent.dwExtraInfo = 0
        inputevents(i * 2 + 1).dwType = INPUT_KEYBOARD
        CopyMemory inputevents(i * 2 + 1).xi(0), keyevent, Len(keyevent)
   
    Next
   
    SendInput letterCount * 2, inputevents(0), Len(inputevents(0))

End Sub
Avatar billede tjacob Juniormester
28. marts 2003 - 13:45 #3
Jeg har studeret KEYBDINPUT lidt på MSDN.
Det ser ud som om du KUN kan bruge karakterer fra den virtuelle tabel til wVk.
(Det forstår jeg dog ikke helt, da jeg åbnede min egen Winuser.h var der overhovedet ingen bogstaver).

Men såvidt jeg kan se kan du bruge wScan i stedet for. Den modtager en Unicode karakter. Så skal du sætte dwFlags til KEYEVENTF_SCANCODE.

Og så skal du bruge AscW i stedet for Asc

Det giver yderligere den fordel at du ikke skal sende den to gange.
Jeg har pt ikke adgang til VB, så jeg kan ikke teste det. ;-)

/tjacob
Avatar billede tjacob Juniormester
28. marts 2003 - 13:57 #4
Eller måske skal du sende den to gange alligevel:
måske du skal sætte dwFlags til KEYEVENTF_SCANCODE Or KEYEVENTF_KEYUP
(anden gang)
Avatar billede avon Nybegynder
31. marts 2003 - 22:11 #5
Har du nogen idé om hvilken værdi KEYEVENTF_SCANCODE har?
Avatar billede avon Nybegynder
01. april 2003 - 16:34 #6
Jeg kunne ikke få det til at fungere, men har fundet en anden løsning ved bl.a. at bruge sendKeys. Du får selvfølgelig pointene alligevel som tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

JP/Politikens Hus

Digital Workplace Supporter

Riskpoint A/S (Riskpoint Solutions Limited)

IT Business Analyst

Capgemini Danmark A/S

Client Partner