code_run自动注入常用import+memory路径; ljqCtrl_sop补充文本输入方法

This commit is contained in:
Liang Jiaqing
2026-03-24 00:00:20 +08:00
parent 515b0cd985
commit 5643bfb5f0
2 changed files with 4 additions and 2 deletions

3
ga.py
View File

@@ -20,7 +20,8 @@ def code_run(code, code_type="python", timeout=60, cwd=None, code_cwd=None, stop
cwd = cwd or os.path.join(script_dir, 'temp'); tmp_path = None cwd = cwd or os.path.join(script_dir, 'temp'); tmp_path = None
if code_type == "python": if code_type == "python":
tmp_file = tempfile.NamedTemporaryFile(suffix=".ai.py", delete=False, mode='w', encoding='utf-8', dir=code_cwd) tmp_file = tempfile.NamedTemporaryFile(suffix=".ai.py", delete=False, mode='w', encoding='utf-8', dir=code_cwd)
tmp_file.write(code) _mem = os.path.join(script_dir, 'memory')
tmp_file.write(f"import sys, os, json, re, time; sys.path.append(r'{_mem}')\n" + code)
tmp_path = tmp_file.name tmp_path = tmp_file.name
tmp_file.close() tmp_file.close()
cmd = [sys.executable, "-X", "utf8", "-u", tmp_path] cmd = [sys.executable, "-X", "utf8", "-u", tmp_path]

View File

@@ -41,4 +41,5 @@ ljqCtrl.Click(px, py)
- **物理验证**:模拟操作前必须确保窗口已通过 `activate()` 置于前台。 - **物理验证**:模拟操作前必须确保窗口已通过 `activate()` 置于前台。
- **偏移量**:所有的相对偏移像素值(如“向右移动 10 像素”)同样需要除以 `dpi_scale` - **偏移量**:所有的相对偏移像素值(如“向右移动 10 像素”)同样需要除以 `dpi_scale`
- **坐标对齐**: 物理坐标 = 截图坐标ljqCtrl 自动处理 DPI 换算,禁止手动重复计算。 - **坐标对齐**: 物理坐标 = 截图坐标ljqCtrl 自动处理 DPI 换算,禁止手动重复计算。
- **⚠️ 窗口坐标转换陷阱**:使用 `win32gui.GetWindowRect(hwnd)` 获取的矩形包含标题栏和边框,而截图内容是客户区。点击截图内元素时,必须用 `win32gui.ClientToScreen(hwnd, (0, 0))` 获取客户区原点的屏幕坐标,再加上截图内坐标。禁止直接用 GetWindowRect 左上角 + 截图坐标。 - **⚠️ 窗口坐标转换陷阱**:使用 `win32gui.GetWindowRect(hwnd)` 获取的矩形包含标题栏和边框,而截图内容是客户区。点击截图内元素时,必须用 `win32gui.ClientToScreen(hwnd, (0, 0))` 获取客户区原点的屏幕坐标,再加上截图内坐标。禁止直接用 GetWindowRect 左上角 + 截图坐标。
- **文本输入**ljqCtrl 无 TypeText/SendKeys。向输入框键入文本先点击/三击选中字段,再 `pyperclip.copy('文本'); ljqCtrl.Press('ctrl+v')`