PyAutoGUIで文字列入力させるプログラムを作成していたところ、コロン「:」を入力させようとするとアスタリスク「*」になってしまいました。
フルパスを自動入力させたいのですがうまくいかず、対処方法を調べてみると以下のファイルを直接編集するとうまく動作するようです。(パスはPythonのインストール先に合わせて読み替えてください。)
C:\Programs Files\Python36\Lib\site-packages\pyautogui_pyautogui_win.py
以下の赤字部分のとおり、 Shiftは不要という処理を追加するとうまくいきました。”@”、”^”も同様の事象が発生するようで、処理を追加しています。
if key==':': needsShift = False
if key=='@': needsShift = False
if key=='^': needsShift = False
"""
# OLD CODE: The new code relies on having all keys be loaded in keyboardMapping from the start.
if key in keyboardMapping.keys():
vkCode = keyboardMapping[key]
elif len(key) == 1:
# note: I could use this case to update keyboardMapping to cache the VkKeyScan results, but I've decided not to just to make any possible bugs easier to reproduce.
vkCode = ctypes.windll.user32.VkKeyScanW(ctypes.wintypes.WCHAR(key))
if vkCode == -1:
raise ValueError('There is no VK code for key "%s"' % (key))
if vkCode > 0x100: # the vk code will be > 0x100 if it needs shift
vkCode -= 0x100
needsShift = True
"""