Gå til innhold

[Python] keybd_event tuller med meg - win32com


Anbefalte innlegg

Edit: Fungerer nå! Beklager at jeg tok opp plassen i databasen til diskusjon.no :p

 

Koden:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import win32api, win32con
from win32api import keybd_event as sendKey
from time import sleep

def sendTxt(key):
   for i in range(0, len(key)):
       #print(key[i])
       sendKey(ord(key[i]), 0, win32con.KEYEVENTF_EXTENDEDKEY, 0)
       sendKey(ord(key[i]), 0, win32con.KEYEVENTF_KEYUP, 0)
       sleep(0.03)

sendTxt('THIS IS SOME TEXT')

Endret av warpie
Lenke til kommentar
Videoannonse
Annonse

En liten pause på 0.05 sekunder mellom keydown og keyup kan være å anbefale for å gi hva enn du sender til tid til å registrere trykket.

 

(Ihvertfall etter hva jeg har erfart).

 

 

Litt off topic, men vet du forskjellen på å bruke 0 og win32con.KEYEVENTF_EXTENDEDKEY ? Usikker på dette selv.

 

 

(win32con.KEYEVENTF_EXTENDEDKEY er visstnok 1 - etter hva jeg har skjønt er win32con kun en haug av konstanter gitt navn så de skal være lettere å finne frem til).

Endret av Yumekui
Lenke til kommentar

En liten pause på 0.05 sekunder mellom keydown og keyup kan være å anbefale for å gi hva enn du sender til tid til å registrere trykket.

 

(Ihvertfall etter hva jeg har erfart).

 

 

Litt off topic, men vet du forskjellen på å bruke 0 og win32con.KEYEVENTF_EXTENDEDKEY ? Usikker på dette selv.

 

 

(win32con.KEYEVENTF_EXTENDEDKEY er visstnok 1 - etter hva jeg har skjønt er win32con kun en haug av konstanter gitt navn så de skal være lettere å finne frem til).

Kan være greit med en minimal pause mellom hvert tastetrykk, men skal ikke si jeg fikk noe problemer. Nå kan jeg ikke så mye om win32com, så jeg kan ikke si hva forskjellen på 0- og 1-statement er i dette tilfellet. Fungerer det likt, så er vel ikke det så nøye. Nå er det vanligste å bruke 1, og 2 (down/up).

 

win32com er et python bibliotek som wrapper mange kommandoer som allerede eksisterer i windows, hvor de bruker "windll". Simpelthen for å forenkle det for python-brukere, slik at vi slipper tulle med "ctypes".

 

 

Jeg fant til slutt ut at SendKeys-ctypes (for tastaturet) var en bedre løsning, denne var fantastisk på området. Noen få linjer med kode bak den, så det er utrolig lett for meg å modifisere orginalfilene.

Endret av warpie
Lenke til kommentar

Nå kan jeg ikke så mye om win32com, så jeg kan ikke si hva forskjellen på 0- og 1-statement er i dette tilfellet. Fungerer det likt, så er vel ikke det så nøye. Nå er det vanligste å bruke 1, og 2 (down/up).

Dokumentasjonen fra Microsoft er uansett noe vag:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646304(v=vs.85).aspx

KEYEVENTF_EXTENDEDKEY (0x0001) - If specified, the scan code was preceded by a prefix byte having the value 0xE0 (224).

 

win32com er et python bibliotek som wrapper mange kommandoer som allerede eksisterer i windows, hvor de bruker "windll".

Mm... win32com er hele pakken og win32con (den ene av de to modulene som ble importert) er konstantene?

 

Jeg skal uansett ta en titt på ctypes - Takk for tips.

Endret av Yumekui
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...