0

ExcelまたはWordプロセスなどから現在開いているファイルを見つける方法はありますか? Windows で実行中のすべてのプロセスと、現在開いているファイルのリストを取得したいと考えています。

4

2 に答える 2

3

VBAを使用して実行中のプロセスのリストはどうですか

Function getProcessInfo()
''On Error Resume Next
Dim objProcess, process, strNameOfUser
ComputerName = "."
Set objProcess = GetObject("winmgmts:{impersonationLevel=impersonate}\\" _
      & ComputerName & "\root\cimv2").ExecQuery("Select * From Win32_Process")
For Each process In objProcess
    If process.Name <> "System Idle Process" And process.Name <> "System" Then
        ''Debug.Print process.Name
        Debug.Print process.Name & "," & process.executablepath _
            & "," & process.Priority & "," & process.sessionid _
            & "," & strNameOfUser & "," & process.handlecount _
            & "," & process.ThreadCount
    End If
Next

Set objProcess = Nothing
End Function

変更元:http ://www.windowsadminscripts.com/coding/networking/processes/

おそらく、開いているウィンドウのリストの方が便利かもしれません。

Private Const GW_HWNDNEXT = 2
Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Sub ListWins(Optional Title = "*", Optional Class = "*")
    Dim hWndThis As Long
    hWndThis = FindWindow(vbNullString, vbNullString)
    While hWndThis
        Dim sTitle As String, sClass As String
        sTitle = Space$(255)
        sTitle = Left$(sTitle, GetWindowText(hWndThis, sTitle, Len(sTitle)))
        sClass = Space$(255)
        sClass = Left$(sClass, GetClassName(hWndThis, sClass, Len(sClass)))
        If sTitle Like Title And sClass Like Class Then
            Debug.Print sTitle, sClass
        End If
        hWndThis = GetWindow(hWndThis, GW_HWNDNEXT)
    Wend
End Sub

そのようにそれを使用してください:

ListWins "*.doc*"

これにより、 .docを含むタイトルのすべてのWordウィンドウが一覧表示されます

于 2012-04-19T11:54:56.733 に答える
1

vb6 を使用する理由はありますか?

編集:それが役立つかどうかはわかりませんが、VB6でプロセスリストを取得する方法の例を含むリンクがあります:http://wiki.robotz.com/index.php/Process_List_and_Locate_VB6

于 2012-04-19T11:08:33.077 に答える