Cara Menghasilkan Peristiwa Papan Kekunci dalam Python
Untuk sistem komputer menganggap peristiwa papan kekunci simulasi sebagai ketukan kekunci sebenar, anda memerlukan penyelesaian yang sesuai di luar menghantar aksara ke medan input. Satu pilihan yang berdaya maju ialah menggunakan perpustakaan ctypes untuk berkomunikasi secara langsung dengan sistem input sistem pengendalian.
Menggunakan ctypes
ctypes menyediakan cara untuk berinteraksi dengan perpustakaan serasi C dan fungsi dalam Python. Untuk mensimulasikan acara papan kekunci menggunakan ctypes, anda boleh mengikuti langkah berikut:
<code class="python">import ctypes from ctypes import wintypes import time</code>
<code class="python">user32 = ctypes.WinDLL('user32', use_last_error=True)</code>
<code class="python"># Keyboard input structure KEYBDINPUT = ctypes.Structure() KEYBDINPUT._fields_ = (("wVk", wintypes.WORD), ("wScan", wintypes.WORD), ("dwFlags", wintypes.DWORD), ("time", wintypes.DWORD), ("dwExtraInfo", wintypes.ULONG_PTR)) # General input structure INPUT = ctypes.Structure() INPUT._fields_ = (("type", wintypes.DWORD), ("ki", KEYBDINPUT))</code>
<code class="python">def PressKey(hexKeyCode): x = INPUT(type=INPUT_KEYBOARD, ki=KEYBDINPUT(wVk=hexKeyCode)) user32.SendInput(1, ctypes.byref(x), ctypes.sizeof(x)) def ReleaseKey(hexKeyCode): x = INPUT(type=INPUT_KEYBOARD, ki=KEYBDINPUT(wVk=hexKeyCode, dwFlags=KEYEVENTF_KEYUP)) user32.SendInput(1, ctypes.byref(x), ctypes.sizeof(x))</code>
<code class="python">PressKey(VK_MENU) # Alt PressKey(VK_TAB) # Tab ReleaseKey(VK_TAB) # Tab~ time.sleep(2) ReleaseKey(VK_MENU) # Alt~</code>
Pertimbangan Tambahan
Ingat bahawa hexKeyCode merujuk kepada pemetaan papan kekunci maya seperti yang ditakrifkan oleh Windows API. Senarai kod ini boleh didapati pada dokumentasi MSDN Microsoft.
Pendekatan ini membolehkan anda mensimulasikan peristiwa papan kekunci pada tahap rendah, memastikan ia dianggap oleh sistem sebagai ketukan kekunci sebenar.
Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan Acara Papan Kekunci dalam Python Menggunakan ctypes?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!