gpt4 book ai didi

python - 如何使用 Python 从 Windows 操作系统中的窗口标题获取 PID?

转载 作者:可可西里 更新时间:2023-11-01 11:51:34 24 4
gpt4 key购买 nike

我需要从一个我知道其标题的窗口中输入一个 PID。

这是一个安装程序,当在我的代码中以编程方式按下第一个“下一步”按钮时,它似乎会更改重要凭据。

我认为它这样做是因为窗口淡出然后又淡入淡出,但是当我单击后退按钮并再次单击下一步时它不会再这样做。

第一个“下一步”按钮,我第一次点击它时,上面有一个盾牌,所以我认为它可能与 UAC 有关。

我正在使用以下代码向窗口发送 ENTER 键盘按键:

import win32com.client


shell = win32com.client.Dispatch("WScript.Shell")


def setwindowfocus(windowname): # can be the window title or the windows PID

shell.AppActivate(windowname)


def sendkeypresstowindow(windowname, key):

setwindowfocus(windowname)
shell.SendKeys(key)
time.sleep(0.1)


sendkeypresstowindow(u'Some Known Window Title', '{ENTER}')
time.sleep(5) # Wait for next window
sendkeypresstowindow(u'Some Known Window Title', '{ENTER}')
time.sleep(5) # Wait for next window

shell.AppActivate() 也可以获取 pid,所以我想知道如果我拥有的唯一信息是窗口标题,我将如何获得它。

我尝试过使用 pywinauto 并遇到了同样的问题,除了许多在 pywinauto 中不应该访问的成员之外,它对于我需要做什么来使用它非常不直观,所以我宁愿避开它直到代码被清理..

我还注意到窗口的句柄发生了变化,所以如果我能以某种方式从窗口标题中获取句柄,然后从句柄中获取 PID,那也可以。

最佳答案

GetWindowThreadProcessId函数似乎做你想从 HWND 获取 PID 的事情。 FindWindow 是使用标题查找窗口的常用方法。所以下面得到一个

import win32gui,win32process
def get_window_pid(title):
hwnd = win32gui.FindWindow(None, title)
threadid,pid = win32process.GetWindowThreadProcessId(hwnd)
return pid

我想知道你是否应该尝试使用 UI Automation尽管如果您正在尝试驱动 UI。我没有尝试通过 Python 使用它。

关于python - 如何使用 Python 从 Windows 操作系统中的窗口标题获取 PID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28068754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com