请教GetWindowThreadProcessId的问题
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Dim a As Long
Private Sub Form_load()
WebBrowser1.Navigate "D:\" '图片仓库\相片集\2004五一青岛\"
a = FindWindowEx(Me.hwnd, 0, "Shell Embedding", vbNullString)
a = FindWindowEx(a, 0, "SHELLDLL_DefView", vbNullString)
a = FindWindowEx(a, 0, "DUIViewWndClassName", vbNullString)
a = FindWindowEx(a, 0, "DirectUIHWND", vbNullString)
a = FindWindowEx(a, 0, "CtrlNotifySink", vbNullString)
a = FindWindowEx(a, 0, "syslistview32", vbNullString)
End SubPrivate Sub Timer1_Timer()
b = SendMessage(a, LVM_GETSELECTIONMARK, 0, 0)
GetWindowThreadProcessId a, PIdMe.Caption = GetListviewItem(a, PId, 0, b)End Sub
用这段代码在一个程序中可以得到 Pid,但是到了另一个程序中却怎么也得不到Pid。郁闷啊。后来我把代码改成下面这样后,还是显示Me.Caption为空。
Private Sub Form_load()WebBrowser1.Navigate "D:\" '图片仓库\相片集\2004五一青岛\"End SubPrivate Sub Form_activate()
a = FindWindowEx(Me.hwnd, 0, "Shell Embedding", vbNullString)
a = FindWindowEx(a, 0, "SHELLDLL_DefView", vbNullString)
a = FindWindowEx(a, 0, "DUIViewWndClassName", vbNullString)
a = FindWindowEx(a, 0, "DirectUIHWND", vbNullString)
a = FindWindowEx(a, 0, "CtrlNotifySink", vbNullString)
a = FindWindowEx(a, 0, "syslistview32", vbNullString)
End Sub设置单步调试后却可以得到Pid的值, Me.Caption也不再为空。怎么回事呢?请赐教。
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Dim a As Long
Private Sub Form_load()
WebBrowser1.Navigate "D:\" '图片仓库\相片集\2004五一青岛\"
a = FindWindowEx(Me.hwnd, 0, "Shell Embedding", vbNullString)
a = FindWindowEx(a, 0, "SHELLDLL_DefView", vbNullString)
a = FindWindowEx(a, 0, "DUIViewWndClassName", vbNullString)
a = FindWindowEx(a, 0, "DirectUIHWND", vbNullString)
a = FindWindowEx(a, 0, "CtrlNotifySink", vbNullString)
a = FindWindowEx(a, 0, "syslistview32", vbNullString)
End SubPrivate Sub Timer1_Timer()
b = SendMessage(a, LVM_GETSELECTIONMARK, 0, 0)
GetWindowThreadProcessId a, PIdMe.Caption = GetListviewItem(a, PId, 0, b)End Sub
用这段代码在一个程序中可以得到 Pid,但是到了另一个程序中却怎么也得不到Pid。郁闷啊。后来我把代码改成下面这样后,还是显示Me.Caption为空。
Private Sub Form_load()WebBrowser1.Navigate "D:\" '图片仓库\相片集\2004五一青岛\"End SubPrivate Sub Form_activate()
a = FindWindowEx(Me.hwnd, 0, "Shell Embedding", vbNullString)
a = FindWindowEx(a, 0, "SHELLDLL_DefView", vbNullString)
a = FindWindowEx(a, 0, "DUIViewWndClassName", vbNullString)
a = FindWindowEx(a, 0, "DirectUIHWND", vbNullString)
a = FindWindowEx(a, 0, "CtrlNotifySink", vbNullString)
a = FindWindowEx(a, 0, "syslistview32", vbNullString)
End Sub设置单步调试后却可以得到Pid的值, Me.Caption也不再为空。怎么回事呢?请赐教。
解决方案 »
- 请教,两段代码功能相同,使用函数不同,为什么一段可以,一段不正常
- vb能读写一个高位的存储地址吗?不是Windows外挂用的.
- 关于CopyMemory的第三个参数问题
- 请问镜像文件(扩展名是iso)是如何通过编程组织实现的。如用VB、VC等如何编程组织目录结构实现。
- 关于写dll的问题
- 为什么用MKDIR或者API函数CreateDirectory都只能一级级的创建目录阿?
- 请教。
- 关于listview的小问题
- 超级难题2:listview用鼠标画框选择项目时虚框移开选中项目的捕获(说不清,高手进去看)
- VB关于数据库的学习(有请高手发表,初学者参考)
- 高手请教一下
- VB这几种记录集意思是?
更多可能是,你没有得到正确的a,
用Me.Caption 可以显示一下a的值,估计是0
Navigate是异步执行的,页面没加载完成前,FindWindow不会有结果,你可把所有FindWindow放到
webBrowser1_DocumentCompleted事件中执行
或者,在Timer事件中,多次查找
webBrowser1_DocumentCompleted事件中执行