怎么才能同时在两个窗口输入文本,或同时给两个窗口模拟光标

运行两个窗口,怎么同时输入账号密码,如打开两个记事本,同一时间在两个记事本输入文本。
现在我使用pyautogui.dragto只能输入一个,因为只有一个光标,要实现这个可能需要两个光标,但是我不知道怎么实现。
如果win32可以,该怎么实现
求解!

该回答引用ChatGPT4与博主@晓码自在合作编写:

要同时控制两个窗口输入,可以使用win32gui和win32con库。实现步骤如下:

  1. 获取两个窗口的句柄,分别存储在hwnd1和hwnd2变量中。可以通过窗口标题等属性来搜索获取。
  2. 获取两个窗口的输入框位置和大小。使用win32gui.SendMessage函数发送WM_GETTEXTLENGTH和WM_GETTEXT消息来获取。
  3. 切换两个窗口的输入焦点。使用win32gui.SetForegroundWindow(hwnd1)将hwnd1窗口切换到前台,接收输入。
  4. 向hwnd1窗口的输入框发送WM_CHAR消息,模拟键入输入字符串。
  5. 切换hwnd2窗口到前台,向其输入框也发送WM_CHAR消息,模拟输入。
  6. 重复步骤3-5,实现在两个窗口之间来回切换并输入。

具体代码如下:

python
import win32gui
import win32con

# 获取窗口句柄
hwnd1 = win32gui.FindWindow(None, '标题1')  
hwnd2 = win32gui.FindWindow(None, '标题2')

# 获取窗口输入框位置和大小
left1, top1, right1, bottom1 = win32gui.GetClientRect(hwnd1)
left2, top2, right2, bottom2 = win32gui.GetClientRect(hwnd2)

input1 = win32gui.GetDlgItem(hwnd1, win32con.IDC_EDIT1)  # 输入框控件ID
input2 = win32gui.GetDlgItem(hwnd2, win32con.IDC_EDIT2)

# 切换窗口并输入  
win32gui.SetForegroundWindow(hwnd1)
win32gui.SendMessage(input1, win32con.WM_CHAR, 'a', 0)

win32gui.SetForegroundWindow(hwnd2) 
win32gui.SendMessage(input2, win32con.WM_CHAR, 'b', 0)  

重复切换并输入其他字符...

这段代码演示了如何通过切换窗口获取输入焦点并模拟键入,实现在两个窗口之间同时控制输入。