2012-12-28 34 views
8

मैं जो करना चाहता हूं वह है कि विंडोज़ पर पायथन स्क्रिप्ट स्तर से कोई भी कीबोर्ड कुंजी दबाएं। मैंने SendKeys को आजमाया है लेकिन यह केवल पायथन 2.6 पर काम करता है। अन्य विधियों है कि मैं सहितपायथन में एक महत्वपूर्ण प्रेस इवेंट सिमुलेट करना 2.7

import win32com.client 
win32com.client.Dispatch("WScript.Shell").SendKeys('String to be typed') 

की कोशिश की है स्क्रिप्ट के स्तर से तार टाइप करने के लिए केवल अनुमति देते हैं लेकिन ENTER और अन्य 'विशेष' कुंजियाँ दबाएँ करने की अनुमति नहीं है।

इसलिए

मेरे सवाल है: मैं कैसे की तरह 'विशेष' को भी अजगर स्क्रिप्ट के स्तर से किसी भी कुंजीपटल कुंजी प्रेस घटना अनुकरण कर सकते हैं ENTER, CTRL ESC आदि

यह भी बहुत उपयोगी है अगर यह संभव है कि हो सकता है किसी निर्दिष्ट समय के लिए दबाए गए कुंजी को दबाएं और Alt + F4 जैसी कुंजियों के संयोजन को दबाएं।

+2

मुझे लगता है कि यह आपकी मदद करनी चाहिए! http://stackoverflow.com/questions/11906925/python-simulate-keydown – user1542671

उत्तर

12

मैं एक से अधिक 1 साल पहले इस कोड को लिखा था तो यह सही नहीं है, लेकिन यह काम करता है:

from win32api import keybd_event 
import time 
import random 


Combs = { 
    'A': [ 
     'SHIFT', 
     'a'], 
    'B': [ 
     'SHIFT', 
     'b'], 
    'C': [ 
     'SHIFT', 
     'c'], 
    'D': [ 
     'SHIFT', 
     'd'], 
    'E': [ 
     'SHIFT', 
     'e'], 
    'F': [ 
     'SHIFT', 
     'f'], 
    'G': [ 
     'SHIFT', 
     'g'], 
    'H': [ 
     'SHIFT', 
     'h'], 
    'I': [ 
     'SHIFT', 
     'i'], 
    'J': [ 
     'SHIFT', 
     'j'], 
    'K': [ 
     'SHIFT', 
     'k'], 
    'L': [ 
     'SHIFT', 
     'l'], 
    'M': [ 
     'SHIFT', 
     'm'], 
    'N': [ 
     'SHIFT', 
     'n'], 
    'O': [ 
     'SHIFT', 
     'o'], 
    'P': [ 
     'SHIFT', 
     'p'], 
    'R': [ 
     'SHIFT', 
     'r'], 
    'S': [ 
     'SHIFT', 
     's'], 
    'T': [ 
     'SHIFT', 
     't'], 
    'U': [ 
     'SHIFT', 
     'u'], 
    'W': [ 
     'SHIFT', 
     'w'], 
    'X': [ 
     'SHIFT', 
     'x'], 
    'Y': [ 
     'SHIFT', 
     'y'], 
    'Z': [ 
     'SHIFT', 
     'z'], 
    'V': [ 
     'SHIFT', 
     'v'], 
    'Q': [ 
     'SHIFT', 
     'q'], 
    '?': [ 
     'SHIFT', 
     '/'], 
    '>': [ 
     'SHIFT', 
     '.'], 
    '<': [ 
     'SHIFT', 
     ','], 
    '"': [ 
     'SHIFT', 
     "'"], 
    ':': [ 
     'SHIFT', 
     ';'], 
    '|': [ 
     'SHIFT', 
     '\\'], 
    '}': [ 
     'SHIFT', 
     ']'], 
    '{': [ 
     'SHIFT', 
     '['], 
    '+': [ 
     'SHIFT', 
     '='], 
    '_': [ 
     'SHIFT', 
     '-'], 
    '!': [ 
     'SHIFT', 
     '1'], 
    '@': [ 
     'SHIFT', 
     '2'], 
    '#': [ 
     'SHIFT', 
     '3'], 
    '$': [ 
     'SHIFT', 
     '4'], 
    '%': [ 
     'SHIFT', 
     '5'], 
    '^': [ 
     'SHIFT', 
     '6'], 
    '&': [ 
     'SHIFT', 
     '7'], 
    '*': [ 
     'SHIFT', 
     '8'], 
    '(': [ 
     'SHIFT', 
     '9'], 
    ')': [ 
     'SHIFT', 
     '0'] } 
Base = { 
    '0': 48, 
    '1': 49, 
    '2': 50, 
    '3': 51, 
    '4': 52, 
    '5': 53, 
    '6': 54, 
    '7': 55, 
    '8': 56, 
    '9': 57, 
    'a': 65, 
    'b': 66, 
    'c': 67, 
    'd': 68, 
    'e': 69, 
    'f': 70, 
    'g': 71, 
    'h': 72, 
    'i': 73, 
    'j': 74, 
    'k': 75, 
    'l': 76, 
    'm': 77, 
    'n': 78, 
    'o': 79, 
    'p': 80, 
    'q': 81, 
    'r': 82, 
    's': 83, 
    't': 84, 
    'u': 85, 
    'v': 86, 
    'w': 87, 
    'x': 88, 
    'y': 89, 
    'z': 90, 
    '.': 190, 
    '-': 189, 
    ',': 188, 
    '=': 187, 
    '/': 191, 
    ';': 186, 
    '[': 219, 
    ']': 221, 
    '\\': 220, 
    "'": 222, 
    'ALT': 18, 
    'TAB': 9, 
    'CAPSLOCK': 20, 
    'ENTER': 13, 
    'BS': 8, 
    'CTRL': 17, 
    'ESC': 27, 
    ' ': 32, 
    'END': 35, 
    'DOWN': 40, 
    'LEFT': 37, 
    'UP': 38, 
    'RIGHT': 39, 
    'SELECT': 41, 
    'PRINTSCR': 44, 
    'INS': 45, 
    'DEL': 46, 
    'LWIN': 91, 
    'RWIN': 92, 
    'LSHIFT': 160, 
    'SHIFT': 161, 
    'LCTRL': 162, 
    'RCTRL': 163, 
    'VOLUP': 175, 
    'DOLDOWN': 174, 
    'NUMLOCK': 144, 
    'SCROLL': 145 } 

def KeyUp(Key): 
    keybd_event(Key, 0, 2, 0) 


def KeyDown(Key): 
    keybd_event(Key, 0, 1, 0) 


def Press(Key, speed=1): 
    rest_time = 0.05/speed 
    if Key in Base: 
     Key = Base[Key] 
     KeyDown(Key) 
     time.sleep(rest_time) 
     KeyUp(Key) 
     return True 
    if Key in Combs: 
     KeyDown(Base[Combs[Key][0]]) 
     time.sleep(rest_time) 
     KeyDown(Base[Combs[Key][1]]) 
     time.sleep(rest_time) 
     KeyUp(Base[Combs[Key][1]]) 
     time.sleep(rest_time) 
     KeyUp(Base[Combs[Key][0]]) 
     return True 
    return False 


def Write(Str, speed = 1): 
    for s in Str: 
     Press(s, speed) 
     time.sleep((0.1 + random.random()/10.0)/float(speed)) 

उदाहरण:

>>> Write('Hello, World!', speed=3) 
Hello, World! 
>>> Press('ENTER') 

आप तो कुछ और कुंजी लागू करना चाहते हैं आप पा सकते हैं उनके कोड here। और बस इन कुंजी को बेस डिक्शनरी में जोड़ें।

+1

एक अच्छा समाधान -1 कोड शैली => +1 – palsch

+0

प्रश्न के लिए के लिए 2: क्या फ़ंक्शन कुंजियों के बारे में? (एफ 1, एफ 2, एफ 3 ...) –

+0

बस इन कुंजी को बेस डिक्शनरी में जोड़ें। उदाहरण के लिए एफ 1 0x70 है। मेरे अद्यतन उत्तरों में शेष कुंजी के लिंक देखें। –