2013-02-08 50 views
0

我是新來編程。我做了一個運行Windows程序PostOpen的一個簡單的代碼塊,當我打開Lotus Notes中的應用8.5.3(基本)蓮花腳本 - 檢查Windows進程正在運行

' [ML]Check if user is member of the [ConnectClient] role. 
ipConnect = HasRole("[ConnectClient]") 
If ipConnect = True Then 
    Dim result As Integer 
    Print "Postopen: Has [ConnectClient] role - starting Connect Client" 
    result = Shell("c:\program files (x86)\ipvision\Connect\connect.exe", 1) 
End If 

有沒有辦法爲Lotus腳本來檢查的Windows進程已經運行?

感謝

+0

如果它只是你的代碼,開始的過程中,使用shellid而不是外殼 - 你會得到進程ID可以再檢查。 –

回答

1

根據這個片段:http://blog.panagenda.com/pub/panablog.nsf/d6plinks/FLOR-7D5KZR 我認爲下面的代碼可能工作:http://coderstalk.blogspot.sk/2009/10/list-windows-xp-running-process-and.html

Option Explicit 

Dim oProc, oWMIServ, colProc 
Dim strPC, strList 
Dim StrSpace 

strPC = "." 

Set oWMIServ = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strPC & "\root\cimv2")  

Set colProc = oWMIServ.ExecQuery("Select * from Win32_Process") 

strSpace = string(20," ") 
strList = "ProcName" & strSpace & vbTab & "ProcID" & vbCrLf & string(45,"-") 

For Each oProc In colProc 
    strSpace = string(28 - len(oProc.Name)," ") 
    strList = strList & vbCrLf & oProc.Name & strSpace & vbTab & oProc.ProcessId 
Next 

所以一旦你有進程ID(假設你已經跑了通過shellid功能時,您的任務),對所有正在運行的進程執行chceck,並確定是否有你的ProcessID已經開始。

順便說一句:相同的方法可被用於終止這種過程。只需谷歌>「winmgmts」lotusscript <。

+0

稍加調整這應該工作,謝謝! –

1

使用Shell運行tasklist並直接輸出到文件中。然後在LotusScript中讀取該文件,並檢查該進程是否在那裏列出。

編輯

看起來你甚至可以檢查是否有特定的過程,如果使用tasklist運行:

tasklist /FI "IMAGENAME eq connect.exe" /FO CSV > search.log 

How to check if a process is running via a batch script