如何使用 Python 从 windows OS 中的 window 标题获取 PID?
How do I get a PID from a window title in windows OS using Python?
我需要从我知道标题的 window 中输入 PID。
这是一个安装程序,当在我的代码中以编程方式按下第一个 "next" 按钮时,它似乎会更改重要凭据。
我认为它之所以这样做是因为 window 淡出然后又淡入,但是当我单击后退按钮并再次单击下一步时它不会再这样做。
第一个 "next" 按钮,我第一次点击它时,上面有一个盾牌,所以我认为它可能与 UAC 有关。
我正在向 window 发送一个带有此代码的 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,所以我想知道如果我拥有的唯一信息是 windows 标题,我将如何获得它。
我已经尝试使用 pywinauto 和 运行 来解决同样的问题,除了许多在 pywinauto 中不应该访问的成员之外,它对于我需要做什么来使用它非常不直观,所以我宁愿避开它,直到代码被清理..
我还注意到 window 的句柄发生了变化,所以如果我能以某种方式从 window 标题中获取句柄,然后从句柄中获取 PID 也可以。
GetWindowThreadProcessId 函数似乎可以执行您希望从 HWND 获取 PID 的操作。 FindWindow 是使用其标题查找 window 的常用方法。所以下面得到一个
import win32gui,win32process
def get_window_pid(title):
hwnd = win32gui.FindWindow(None, title)
threadid,pid = win32process.GetWindowThreadProcessId(hwnd)
return pid
我想知道如果你想驾驶 UI,你是否应该尝试使用 UI Automation。我没有尝试通过 Python.
使用它
我需要从我知道标题的 window 中输入 PID。
这是一个安装程序,当在我的代码中以编程方式按下第一个 "next" 按钮时,它似乎会更改重要凭据。
我认为它之所以这样做是因为 window 淡出然后又淡入,但是当我单击后退按钮并再次单击下一步时它不会再这样做。
第一个 "next" 按钮,我第一次点击它时,上面有一个盾牌,所以我认为它可能与 UAC 有关。
我正在向 window 发送一个带有此代码的 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,所以我想知道如果我拥有的唯一信息是 windows 标题,我将如何获得它。
我已经尝试使用 pywinauto 和 运行 来解决同样的问题,除了许多在 pywinauto 中不应该访问的成员之外,它对于我需要做什么来使用它非常不直观,所以我宁愿避开它,直到代码被清理..
我还注意到 window 的句柄发生了变化,所以如果我能以某种方式从 window 标题中获取句柄,然后从句柄中获取 PID 也可以。
GetWindowThreadProcessId 函数似乎可以执行您希望从 HWND 获取 PID 的操作。 FindWindow 是使用其标题查找 window 的常用方法。所以下面得到一个
import win32gui,win32process
def get_window_pid(title):
hwnd = win32gui.FindWindow(None, title)
threadid,pid = win32process.GetWindowThreadProcessId(hwnd)
return pid
我想知道如果你想驾驶 UI,你是否应该尝试使用 UI Automation。我没有尝试通过 Python.
使用它