2013-10-12 33 views
0

我想獲得在Windows中打開的應用程序的列表中,但最終得到使用查找打開的應用程序

tasklist 

我想開了(不是所有進程)的應用程序列表中的進程列表和它們的進程ID。例如:如果一個文件複製正在進行,那麼我想知道它的進程ID,並且類似地,如果Chrome中正在下載某些內容,那麼我想知道該下載窗口的進程ID。

我在Python中這樣做,所以解決方案可以是與Python或命令提示符相關的任何東西。

回答

1

如果你想處理請參考post @尼克珀金斯和@ 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() 
+0

感謝Kobi ......但是即使在我的系統中打開了很多東西,您的代碼仍會給我空的結果。你提到的鏈接很好,但他們不能解決我的問題:( – aki92

+0

@ aki92奇怪這是解決方案,它適用於我,我用它來捕捉示波器驅動程序的窗口,另一部分我是發送VISA命令到窗口當你運行它時,你有打開的窗口嗎? –

+0

是的,當我運行它時,我有很多打開的窗口,但結果仍然是空的 – aki92

相關問題