-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinput_continue.py
More file actions
133 lines (103 loc) · 3.8 KB
/
input_continue.py
File metadata and controls
133 lines (103 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
"""
向 Kiro 聊天框输入"继续"并按回车
直接使用坐标 (1228, 720)
"""
import win32gui
import win32api
import win32con
import time
def input_continue_at_position(x=1228, y=720, text="继续"):
"""
在指定位置输入文本并按回车
参数:
x: X 坐标
y: Y 坐标
text: 要输入的文本
"""
print("=" * 60)
print("向 Kiro 输入文本")
print("=" * 60)
print(f"\n📍 目标位置: ({x}, {y})")
print(f"📝 输入文本: {text}")
print()
# 步骤1: 移动鼠标到目标位置
print("[1/4] 移动鼠标到目标位置...")
win32api.SetCursorPos((x, y))
time.sleep(0.2)
print("✅ 鼠标已移动")
# 步骤2: 点击目标位置
print("\n[2/4] 点击目标位置...")
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
time.sleep(0.05)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
time.sleep(0.3)
print("✅ 已点击")
# 步骤3: 输入文本
print(f"\n[3/4] 输入文本: {text}")
try:
# 使用剪贴板粘贴(最可靠)
import win32clipboard
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(text, win32clipboard.CF_UNICODETEXT)
win32clipboard.CloseClipboard()
time.sleep(0.1)
# Ctrl+V 粘贴
win32api.keybd_event(win32con.VK_CONTROL, 0, 0, 0)
win32api.keybd_event(ord('V'), 0, 0, 0)
time.sleep(0.05)
win32api.keybd_event(ord('V'), 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(win32con.VK_CONTROL, 0, win32con.KEYEVENTF_KEYUP, 0)
print("✅ 文本已粘贴")
except Exception as e:
print(f"⚠️ 剪贴板方法失败: {e}")
print(" 使用逐字符输入...")
# 逐字符输入
for char in text:
vk = win32api.VkKeyScan(char)
if vk != -1:
# 检查是否需要按 Shift
if vk & 0x100: # 需要 Shift
win32api.keybd_event(win32con.VK_SHIFT, 0, 0, 0)
win32api.keybd_event(vk & 0xFF, 0, 0, 0)
time.sleep(0.02)
win32api.keybd_event(vk & 0xFF, 0, win32con.KEYEVENTF_KEYUP, 0)
if vk & 0x100: # 释放 Shift
win32api.keybd_event(win32con.VK_SHIFT, 0, win32con.KEYEVENTF_KEYUP, 0)
print("✅ 文本已输入")
# 步骤4: 按回车
print("\n[4/4] 按回车发送...")
time.sleep(0.3)
win32api.keybd_event(win32con.VK_RETURN, 0, 0, 0)
time.sleep(0.05)
win32api.keybd_event(win32con.VK_RETURN, 0, win32con.KEYEVENTF_KEYUP, 0)
print("✅ 已按回车")
print("\n" + "=" * 60)
print("✨ 完成!")
print("=" * 60)
return True
if __name__ == "__main__":
import sys
# 默认参数
x = 1228
y = 720
text = "继续"
# 解析命令行参数
if len(sys.argv) > 1:
# 如果第一个参数是数字,认为是坐标
if sys.argv[1].isdigit():
x = int(sys.argv[1])
if len(sys.argv) > 2 and sys.argv[2].isdigit():
y = int(sys.argv[2])
text = " ".join(sys.argv[3:]) if len(sys.argv) > 3 else "继续"
else:
text = " ".join(sys.argv[2:]) if len(sys.argv) > 2 else "继续"
else:
# 否则认为是文本
text = " ".join(sys.argv[1:])
print(f"\n📝 将要输入: {text}")
print(f"📍 目标位置: ({x}, {y})")
print("\n⏰ 3 秒后开始...")
print("💡 提示:请确保 Kiro 窗口可见\n")
time.sleep(3)
input_continue_at_position(x, y, text)