1

おい、ここで困ってる…

sendkeys を使用してフィールドからテキスト全体を削除するにはどうすればよいですか?

左矢印で押したctrl + shiftを送信し、その後キーを削除するにはどうすればよいですか?

編集:

たとえば、コードのこの部分があります

ctypes.windll.user32.SetCursorPos(910,475)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0)
time.sleep(0.1)
shell.SendKeys(inf_firstname)

この部分は、フィールドを選択して名前の情報を貼り付ける(マクロのようなもの)のですが、フィールドの内容を削除する情報を貼り付ける前に何かしたいのですが、もしあれば...

カピチェ?

4

2 に答える 2

4

Sendkeys についてはわかりませんが、ctypes でキーストロークを送信できることは知っています。

CTRL+A と BACK を送信してテキストを削除する方法は次のとおりです。

ctypes.windll.user32.keybd_event(0x11, 0, 0, 0) #CTRL is down
ctypes.windll.user32.keybd_event(ord("A"), 0, 0, 0) #A is down
ctypes.windll.user32.keybd_event(ord("A"), 0, 0x0002, 0) #A is up
ctypes.windll.user32.keybd_event(0x11, 0, 0x0002, 0) #CTRL is up
ctypes.windll.user32.keybd_event(0x08, 0, 0, 0) #BACK is down
ctypes.windll.user32.keybd_event(0x08, 0, 0x0002, 0) #BACK is up

Windows の仮想キー コードを送信する必要があります。完全なリストについては、こちらを参照してください。

SendKeys と似ているかもしれません

役立つことを願っています

于 2010-08-04T06:07:22.597 に答える
3

代わりにCtrl+Aを実行したいですか?うまくいかないコードの簡単な例を挙げていただけますか?

SendKeysの実装によっては、一度にすべてを受け入れるとは限りません。複数のSendKeys呼び出しが必要になる場合があります。SendKeysへの個別の呼び出しで、一度に1つずつ実行してみることができます。

編集:

http://msdn.microsoft.com/en-us/library/8c6yea83.aspx

あなたはこれを行うことができるはずだと私には思えます:

shell.SendKeys("^a")
shell.SendKeys("{DELETE}")
于 2010-08-03T22:14:42.367 に答える