2016-05-27 17 views
0

ので、私はいくつかのキーの押下を試してみて、シミュレートしたいと私はここで見つけるスクリプトを使用:私はこれらのスクリプトを実行したときにボタンがれているが、なぜalt + tabとctrl + alt + delでキー入力をシミュレートできないのですか?

Python simulate keydown

Generate keyboard events

をそれは、ウィンドウズ8の変更ウィンドウの事やCtrl Altキーのメニューを表示しませんが、Windows 7のコンピュータでは、altタブが機能しました。なぜWindows 8で動作しないのですか?これらのストロークをシミュレートする方法はありますか?

+0

は 'pyautogui'モジュールを使用します。これはキーボードマウス操作に最適です。チュートリアルを簡単に見つけることができます。 – GLHF

+0

@GLHF pyautoguiはまだaltタブやctrl alt deleteをシミュレートしていません。ボタンは押されていますが、ウィンドウの特別な機能は呼び出されません。 –

+0

です。それはキーボード+マウスですべてを行います。 pyautoguiにはボタンを押さえる機能があります。それはうまくいく。 – GLHF

答えて

1
import ctypes,time 

KEYEVENTF_UNICODE = 0x0004 
KEYEVENTF_KEYUP = 0x0002 

def PressKey(KeyUnicode): 

    extra = ctypes.c_ulong(0) 
    ii_ = Input_I() 
    ii_.ki = KeyBdInput(0, KeyUnicode, KEYEVENTF_UNICODE, 0, ctypes.pointer(extra)) 
    x = Input(ctypes.c_ulong(1), ii_) 
    ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x)) 

def ReleaseKey(KeyUnicode): 

    extra = ctypes.c_ulong(0) 
    ii_ = Input_I() 
    ii_.ki = KeyBdInput(0, KeyUnicode, KEYEVENTF_UNICODE|KEYEVENTF_KEYUP, 0, ctypes.pointer(extra)) 
    x = Input(ctypes.c_ulong(1), ii_) 
    ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x)) 


def PressAltTab(): 

    ctypes.windll.user32.keybd_event(0x12, 0, 0, 0) #Alt 
    ctypes.windll.user32.keybd_event(0x09, 0, 0, 0) #Tab 

    time.sleep(2) #optional : if you want to see the atl-tab overlay 

    ctypes.windll.user32.keybd_event(0x09, 0, 0x0002, 0) #~Tab 
    ctypes.windll.user32.keybd_event(0x12, 0, 0x0002, 0) #~Alt 

PressAltTab() 

これは単なるctrldeleteのための右の数字を見つけ、あなたがctypes.windll.user32.keybd_event(0x12, 0, 0, 0)を参照してくださいPressAltTab()で、​​TABのために動作します。 alt0x12

ですが、ctrl + alt + delは特殊なショートカットですので、偽装からブロックするセキュリティ上の理由があるかもしれません。少なくともそれは私がフォーラムで見たものです。

関連する問題