2012-04-19 19 views
0

有没有办法从Excel或Word进程中查找当前打开的文件等?我想获得Windows中所有正在运行的进程以及它们当前打开的文件的列表。如何获取当前运行在vb6中的进程的文件名

+1

呃,你的问题第一部分,第二部分和标题不匹配... – Deanna 2012-04-19 11:21:29

+4

我现在看到,这是关于同一主题的一组三个问题中的第二个。这不是现在的作品。 (1)http://stackoverflow.com/questions/10202842/how-do-i-get-the-list-of-open-file-handles-by-process-in-vb6(3)http:// stackoverflow .com/questions/10240742/view-opened-locked-files-in-my-system – Fionnuala 2012-04-20 06:58:44

回答

1

是否有原因,你为什么使用vb6?

编辑: 我不知道,如果这会帮助你,但这里是一个链接,用一些例子来说明如何获得VB6进程列表:http://wiki.robotz.com/index.php/Process_List_and_Locate_VB6

+0

bcz我已经在vb.net中完成了这项工作,但每当我安装windows时,我都需要安装.net框架,如果我在vb6 ...无需安装任何东西 – user1153193 2012-04-19 11:13:42

+0

观看链接,它可能有助于解决您的问题。 – chris6523 2012-04-19 11:19:26

+0

你是否在.NET中执行它?相同的概念/ Win32 API也可以在其他语言中使用。另外,你需要自己的应用程序? [Process Explorer](http://technet.microsoft.com/en-us/sysinternals/bb896653)已经做到了。 – Deanna 2012-04-19 11:20:09

2

如何使用正在运行的进程的列表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*" 

这将列出所有Word窗口包含标题.DOC

+0

remou非常感谢您的代码此代码显示什么过程在运行应用程序例如wmplayer.exe进程显示resulte ç:\ programfile \的Windows媒体播放器等,但没有显示什么文件运行在Windows媒体播放器..我需要当前运行文件不是当前运行程序 – user1153193 2012-04-19 12:21:53

+0

您可能想阅读http://social.technet.microsoft.com/Forums/en/ITCG/thread/0c6a8b1b-c99e-402c-bf9b-a09343aaa724 – Fionnuala 2012-04-19 12:49:25

+0

remou没有这个帖子.. handle.exe很好工具,但它的命令提示符 – user1153193 2012-04-19 13:01:14

相关问题