求助:怎么获取到Windows系统自带的Windows照片查看器打开的图片绝对路径

xunis 2012-10-08 03:50:03
求助:怎么获取到Windows系统自带的Windows照片查看器打开的图片绝对路径

求解,先谢谢了!
...全文
1990 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mygame0302 2012-11-12
  • 打赏
  • 举报
回复
xp下直接双击打开是explorer进程加载shimgvw.dll,并没产生进程吧。 而win7下产生进程dllhost.exe,其command line的形式如:command line:C:\Windows\system32\DllHost.exe /Processid:{76D0CB12-7604-4048-B83C-1005C7DDC503} 也是没有路径。
嗷嗷叫的老马 2012-10-12
  • 打赏
  • 举报
回复
WIN7貌似有些不同,不是直接向另一个进程传参数的.

我手里没有WIN7系统,找找有WIN7的哥们跟踪一下调用过程应该就可以了.
无·法 2012-10-09
  • 打赏
  • 举报
回复 1
    Option Explicit  

Private Sub Form_Load()
getProcessCommandLine "rundll32.exe"
End Sub
'得到所有进程名为proName的详细列表,参数一定要写完整。
Private Function getProcessCommandLine(ByVal proName As String) As String
Dim objWMIService As Object
Dim colProcessList As Object
Dim objProcess As Object
Dim objProType As Object
Dim strResult As String
Set objWMIService = GetObject("winmgmts:" & "{impersonationlevel=impersonate}!//./root/cimv2")
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name='" & proName & "'")

If colProcessList.Count <> 0 Then
For Each objProcess In colProcessList
For Each objProType In objProcess.Properties_
If objProType.Name = "CommandLine" Then
strResult = strResult & objProType.Value & vbCrLf
Exit For
End If
Next
Next
End If
If strResult <> "" Then
getProcessCommandLine = strResult
MsgBox strResult
End If
End Function
无·法 2012-10-09
  • 打赏
  • 举报
回复
"rundll32.exe" C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen C:\test.gif

上面是用图片查看器打开一张图片的命令。反之获取rundll32.exe进程的命令行参数即可获得。
孤独剑_LPZ 2012-10-09
  • 打赏
  • 举报
回复
任务管理器里只是隐藏进程不显示,但还是可以查到pid

Dim hwnd As Long
hwnd = FindWindow(vbNullString, "功能说明.jpg - Windows 图片和传真查看器")
MsgBox hwnd
xunis 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
求助:怎么获取到Windows系统自带的Windows照片查看器打开的图片绝对路径

求解,先谢谢了!
[/Quote]

照片查看器貌似没有PID
xunis 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

你什么系统,怎么会是dllhost.exe呢?
[/Quote]
我是win7系统,我在win2003系统上实验,colProcessList.Count=0,也是没有rundll32.exe进程,但是我转向进程win2003上指向的却是explorer.exe这个进程,莫非这样子查进程是不对的?谢谢你!
无·法 2012-10-09
  • 打赏
  • 举报
回复
你什么系统,怎么会是dllhost.exe呢?
xunis 2012-10-09
  • 打赏
  • 举报
回复
我尝试了其他的进程 比如VB6.EXE可以获取到VB6.EXE的绝对路径
xunis 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

任务管理器里只是隐藏进程不显示,但还是可以查到pid

Dim hwnd As Long
hwnd = FindWindow(vbNullString, "功能说明.jpg - Windows 图片和传真查看器")
MsgBox hwnd
[/Quote]

谢谢你的详细解答,我刚尝试了下你提供的方法,我也看懂了你的思路,但是我这边存在一个问题。
rundll32.exe在我的进程管理器里面是没有找到,因此colProcessList.Count=0。

任务管理器-应用程序页签-右键照片查看器-转到进程,发现指向了dllhost.exe
我在网上搜到打开图片的实际调用了shimgvw.dll
http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763104687270e54f73477909b4623c3933fc239045c0731b0ed3022674689876b6675e9120afdf1407232022bb491dccd179ded9d6d74d47169355d914062c468d9dc3654d651944d9ade0ee6cae74293b9a5d8c82427dd23036d81809c2b0403be6ae71541f4d69f5f615f07ca9927168c4e7659885236a13788f7436a10f287ca5c3dd45bda766692b845c32963c204a56f0c5443b73db01f212127903930fe342a75e4fc2d963d783034c64fa4c8c7a1ea389badea26e8ffdcdf588210e2&p=c37adc5f91904eaa08e2977e0c4d88&user=baidu&fm=sc&query=windows%CD%BC%C6%AC%B2%E9%BF%B4%C6%F7%B4%F2%BF%AA%CD%BC%C6%AC+%C8%E7%BA%CE%B5%C3%B5%BD%CD%BC%B5%C4%C2%B7%BE%B6&qid=eb922d4d4393a509&p1=14 2楼

嗷嗷叫的老马 2012-10-09
  • 打赏
  • 举报
回复
如何取得指定进程的命令行参数(VB6.0,马大哈原创)

只适用于双击打开的情况,调用GetRemoteCmdLine,传入查看器的PID,就会返回命令行.

1,486

社区成员

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

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