要出人命拉,各位大侠一定要指点迷津那!

orinyangyang 2001-12-14 02:42:31
请问:哪位大侠知道怎么用VB(用VC也行)得到所有应用程序正在打开的用户文件(名)。比如用户现在 用记事本打开了一个“1.txt”,用WORD打开了文件“2.doc”等等,我怎么用程序获得这些 文件名(如:1.txt,2.doc)呢?当然了,最好能得到完整路径名。各位,在此先谢谢了。恳望不吝赐教!!

OuYang
oyzd的Email:oyzd@263.net
...全文
113 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
orinyangyang 2001-12-15
  • 打赏
  • 举报
回复
Marki兄:
首先一万分的真诚感谢老兄对小弟的热心帮助和那漂亮的源代码。
看看老兄,小弟真是惭愧万分哪。是你的及时援助才使小弟少走了一大截
的弯路。谢谢、谢谢、再谢谢!!(好啦,N(N-->∞)分奖励给你喽。)
另外,老兄可别见笑,小弟太罗嗦了。我的程序的主要功能是:当
用户双击运行我的程序时,能通过我的程序找到当时用户已经打开还没有关
闭的文件名(含路径)。比如,用户当时打开了“test1.doc”、“test2.txt”
“test3.xls”三个文件,我怎么通过我的程序用代码查到这三个文件的文件
名,包括其路径呢(只限于本地机)?当然了,通过窗体的Caption属性可以
得到部分文件名(因为,据小弟所知不是所有的应用程序都会把打开的文件
名显示在窗体的Caption属性中的。),再则文件的路径也不好确定呀。
最后,恳望Marki兄能在百忙之中帮小弟一把(小弟可真是急呀)在此
谢先了!若老兄不嫌弃,还望以后能向你多多请教,探讨打扰之处,望见谅!!
我差点儿问了,你的信箱是Marki@163.net,不是Marki@163.com吧。
祝:愉快,万分感谢送给你!!
还有呀,各位大哥、大虾、前辈高人,就此问题若还有其它高见,还望不吝赐教!


OuYang
oyzd@263.net
2001/12/15
mamaye 2001-12-14
  • 打赏
  • 举报
回复
有收到嗎? 給分給分~ 哈~
mamaye 2001-12-14
  • 打赏
  • 举报
回复
我E給你
orinyangyang 2001-12-14
  • 打赏
  • 举报
回复
Mr mamaye:
能简单的讲以下你的程序的思路吗,小弟有些不明白。再谢拉!
orinyangyang 2001-12-14
  • 打赏
  • 举报
回复
Mr mamaye:
莫、莫急,待小弟先试一下。放心吧,小弟绝不食言。谢先啦!!
mamaye 2001-12-14
  • 打赏
  • 举报
回复
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function GetForegroundWindow Lib "user32" () As Long
Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Const LB_ADDSTRING = &H180
Public Const LB_FINDSTRINGEXACT = &H1A2
Public Const LB_ERR = (-1)

Public Const GW_OWNER = 4
Public Const GWL_EXSTYLE = (-20)

Public Const WS_EX_APPWINDOW = &H40000
Public Const WS_EX_TOOLWINDOW = &H80

Public Declare Function IsZoomed Lib "user32" (ByVal hwnd As Long) As Boolean
Public Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long

Public Declare Function DrawIconEx Lib "user32" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long
Public Const DI_NORMAL = &H3

Public Declare Function GetClassLong Lib "user32" Alias "GetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Integer) As Long

Public Const WM_GETICON = &H7F
Public Const GCL_HICON = (-14)
Public Const GCL_HICONSM = (-34)
Public Const WM_QUERYDRAGICON = &H37

Public Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long

' 這里還可得到ICON 呵呵~ :)
Public Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long

Public Function fEnumWindows(lst As ListBox) As Long
With lst
.Clear
frmTasks.lstNames.Clear
Call EnumWindows(AddressOf fEnumWindowsCallBack, .hwnd)
fEnumWindows = .ListCount
End With
End Function

Private Function fEnumWindowsCallBack(ByVal hwnd As Long, ByVal lParam As Long) As Long

Dim lExStyle As Long, bHasNoOwner As Boolean, sAdd As String, sCaption As String

If IsWindowVisible(hwnd) Then
bHasNoOwner = (GetWindow(hwnd, GW_OWNER) = 0)
lExStyle = GetWindowLong(hwnd, GWL_EXSTYLE)

If (((lExStyle And WS_EX_TOOLWINDOW) = 0) And bHasNoOwner) Or _
((lExStyle And WS_EX_APPWINDOW) And Not bHasNoOwner) Then
sAdd = hwnd: sCaption = GetCaption(hwnd)
Call SendMessage(lParam, LB_ADDSTRING, 0, ByVal sAdd)
Call SendMessage(frmTasks.lstNames.hwnd, LB_ADDSTRING, 0, ByVal sCaption)
End If
End If

fEnumWindowsCallBack = True
End Function

Public Function GetCaption(hwnd As Long) As String
Dim mCaption As String, lReturn As Long
mCaption = Space(255)
lReturn = GetWindowText(hwnd, mCaption, 255)
GetCaption = Left(mCaption, lReturn)
End Function

' 給分給分~
orinyangyang 2001-12-14
  • 打赏
  • 举报
回复
Mr liu_student_wei:
你看你把小弟想哪儿去了,我那有那本事呀!
是这样的,我的程序的主要功能就是当用户在本地机器上开始启动我的程序时查看
以下用户本地机器上已经打开的用户自己的文件,当然是本地计算机上的啦。
liu_student_wei 2001-12-14
  • 打赏
  • 举报
回复
是监视远程用户还是监视本地计算机上的历史用户?
you are a hacker
orinyangyang 2001-12-14
  • 打赏
  • 举报
回复
衷心的感谢各位的支持和对此问题的关注!谢谢!!
我的问题是这样的:我想用程序查到当前用户打开了那些用户自己的文件。比如,用户
现在已经打开了一个word文件“test1.doc”和一个Excel文件“test2.xls”.我怎么用
程序查到这些已经被用户打开的(用户自己的)文件("test1.doc","test2.xls"等等)呢?
这样清楚了吗!这样叙述大家明白吗。小弟实在是急呀,大伙儿尽力帮这个忙好吗?
小弟再次谢谢各位啦!!!

注:(1.)这些文件是用户通过应用程序打开的。如通过Word,Excel,Autocad 等打开的文
件。
(2.)楼上漠清说使用Windows的消息,具体些吗,谢谢。该用什么消息呢。
(3.) 刚才大眼鱼说用标题栏,小弟觉的好象有点儿困难,因为不是所有的应用程序
都会把打开的文件名显示在标题栏中的呀。
lgs73327 2001-12-14
  • 打赏
  • 举报
回复
用标题栏行吗?
minglx 2001-12-14
  • 打赏
  • 举报
回复
从文档里可以吗/??
moqing 2001-12-14
  • 打赏
  • 举报
回复
使用Windows的消息
apollo 2001-12-14
  • 打赏
  • 举报
回复
你是怎么样的一个操作,在什么控件中打开的
sxmzmxh 2001-12-14
  • 打赏
  • 举报
回复
关注

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧