2014-09-24 45 views
-1

我正在研究一次運行多個外部程序的應用程序。 創建過程後,我將過程的每個標題,PID號和句柄存儲在列表框中。 雖然進程存在,我想在該列表框中顯示它。 如果過程結束,我希望列表框自動刪除引用。 有什麼想法?德爾福2010年 - 是否存在PID?如果是,則在列表框中顯示PID,否則從列表框中刪除PID

謝謝

+0

請您發表一個例子嗎? – user2858981 2014-09-24 13:26:47

回答

-1

我終於做到了!如果有其他人在這裏尋找的答案是我做過什麼:

  • 我允許用戶選擇多個文件進行處理,並在第一列表框
  • 每個列表框項目顯示它們,我創建了一個過程,包含文件的唯一名稱並移動第二個列表框中正在處理的文件的名稱。這是通過使用循環整個列表框的計時器完成的。在創建過程後,我將文件名從listbox1移動到listbox2
  • 使用函數我得到了我剛剛創建的進程的句柄。對於每個文件,我將文件名,PID和句柄存儲在第二個列表框中。
  • 我使用第二個計時器以1000ms爲單位循環投擲所有listbox2項目,並將流程句柄與現有流程列表進行比較。如果流程退出,則不做任何操作,否則按字符串刪除listbox2項目。

這個技巧不需要線程。我用100個創建100個獨特流程的文件測試了這一點。我希望我能夠幫助像我一樣尋找解決方案的人。

0

CreateProcess()返回HANDLE新進程。當進程終止時,HANDLE被髮信號通知。只要您打開HANDLE,您可以隨時檢查進程的狀態。您可以在循環/定時器中使用GetExitCodeProcess(),或者使用WaitForSingleObject()或相關等待HANDLE。一旦進程退出,您將能夠檢測到,因此您可以關閉HANDLE並從列表中刪除條目。

相關問題