从 python 中的 .exe 文件获取应用程序名称
Get Application Name from .exe file in python
我正在使用以下代码获取当前活动的 window 标题和 exe 文件路径
hwnd = win32gui.GetForegroundWindow()
_, pid = win32process.GetWindowThreadProcessId(hwnd)
if hwnd != 0 or pid != 0:
try:
hndl = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, 0, pid)
self.newExe = win32process.GetModuleFileNameEx(hndl, 0)
self.newWindowTitle = win32gui.GetWindowText(hwnd)
except:
self.newExe = ''
self.newWindowTitle = ''
问题是,尽管经常如此,但 window 标题并不总是应用程序名称(用户理解为应用程序主要部分的名称),而这正是我所需要的。例如,从 calc.exe 获取计算器而不依赖 window 标题。
目的是创建一个脚本,该脚本将登录 xml 比较计算机上任何软件的使用情况
这可能吗?
大多数 Windows 应用程序将此类信息存储在它们的资源表中。有 API 个调用可用于提取它。
以下从给定的应用程序中提取文件描述:
import win32api
def getFileDescription(windows_exe):
try:
language, codepage = win32api.GetFileVersionInfo(windows_exe, '\VarFileInfo\Translation')[0]
stringFileInfo = u'\StringFileInfo\%04X%04X\%s' % (language, codepage, "FileDescription")
description = win32api.GetFileVersionInfo(windows_exe, stringFileInfo)
except:
description = "unknown"
return description
print(getFileDescription(r"C:\Program Files\Internet Explorer\iexplore.exe"))
输出为:
Internet Explorer
因此,您可以将调用 win32process.GetModuleFileNameEx()
的结果传递给此函数。
我正在使用以下代码获取当前活动的 window 标题和 exe 文件路径
hwnd = win32gui.GetForegroundWindow()
_, pid = win32process.GetWindowThreadProcessId(hwnd)
if hwnd != 0 or pid != 0:
try:
hndl = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, 0, pid)
self.newExe = win32process.GetModuleFileNameEx(hndl, 0)
self.newWindowTitle = win32gui.GetWindowText(hwnd)
except:
self.newExe = ''
self.newWindowTitle = ''
问题是,尽管经常如此,但 window 标题并不总是应用程序名称(用户理解为应用程序主要部分的名称),而这正是我所需要的。例如,从 calc.exe 获取计算器而不依赖 window 标题。
目的是创建一个脚本,该脚本将登录 xml 比较计算机上任何软件的使用情况
这可能吗?
大多数 Windows 应用程序将此类信息存储在它们的资源表中。有 API 个调用可用于提取它。
以下从给定的应用程序中提取文件描述:
import win32api
def getFileDescription(windows_exe):
try:
language, codepage = win32api.GetFileVersionInfo(windows_exe, '\VarFileInfo\Translation')[0]
stringFileInfo = u'\StringFileInfo\%04X%04X\%s' % (language, codepage, "FileDescription")
description = win32api.GetFileVersionInfo(windows_exe, stringFileInfo)
except:
description = "unknown"
return description
print(getFileDescription(r"C:\Program Files\Internet Explorer\iexplore.exe"))
输出为:
Internet Explorer
因此,您可以将调用 win32process.GetModuleFileNameEx()
的结果传递给此函数。