【问题标题】:Finding Opened Applications查找打开的应用程序
【发布时间】:2013-10-12 15:55:15
【问题描述】:

我正在尝试获取 Windows 中打开的应用程序列表,但最终获得了使用的进程列表

tasklist

我想获取打开的应用程序列表(不是所有进程)及其进程 ID。

例如:如果 文件复制 正在进行,那么我想知道它的进程 ID,类似地,如果 Chrome 中正在下载某些东西,那么我想知道那个下载窗口的进程 ID。

我在 Python 中执行此操作,因此解决方案可以是与 Python 或命令提示符相关的任何内容。

【问题讨论】:

    标签: python windows cmd taskmanager


    【解决方案1】:

    如果你想要处理请参考这个post@Nick Perkins 和@hb2pencil 给出了一个非常好的解决方案。

    要获得所有打开的应用程序标题,您可以使用下面的代码,我也在我的一个驱动程序中使用它,它来自 site

    还有另一个类似问题的帖子here 和@nymk 给出了解决方案。

    import ctypes
    
    EnumWindows = ctypes.windll.user32.EnumWindows
    EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.POINTER(ctypes.c_int),     ctypes.POINTER(ctypes.c_int))
    GetWindowText = ctypes.windll.user32.GetWindowTextW
    GetWindowTextLength = ctypes.windll.user32.GetWindowTextLengthW
    IsWindowVisible = ctypes.windll.user32.IsWindowVisible
    
    def foreach_window(hwnd, lParam):
    
        titles = []
    
        if IsWindowVisible(hwnd):
            length = GetWindowTextLength(hwnd)
            buff = ctypes.create_unicode_buffer(length + 1)
            GetWindowText(hwnd, buff, length + 1)
            titles.append(buff.value)
            print buff.value
    
        return titles
    
    
    def main():
    
        EnumWindows(EnumWindowsProc(foreach_window), 0)
    
       #end of main
    if __name__ == "__main__":
        main()
    

    【讨论】:

    • 谢谢 Kobi ......但是即使在我的系统中打开了很多东西,你的代码也会给我空结果。你提到的链接很好,但它们不能解决我的问题:(
    • @aki92 奇怪的是,这是解决方案,它对我有用,我用它来捕捉示波器驱动程序的窗口,另一部分我正在向那个窗口发送 VISA 命令。运行时是否有打开的窗口?
    • 是的,我运行它时打开了许多窗口,但结果仍然是空的。
    • 我刚刚又试了一次,效果很好。你的操作系统是什么?蟒蛇版?
    • 操作系统:Windows 8,Python 版本:2.7.4。
    猜你喜欢
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 2011-08-06
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    相关资源
    最近更新 更多