为什么用findwind查到的hwnd与me.hwnd不同?

lzqgj 2003-05-28 10:07:36
我做了个屏保程序,为防止重复运行,用If App.PrevInstance = 1 Then End来执行,结果发现好象无法中止,程序照样重复运行。我想用
wnd = FindWindow(vbNullString, Me.Caption)
If wnd <> Me.hWnd Then
end
End If
即若已有程序运行,则wnd<>me.hwnd,程序中止。
运行发现当只有一个程序运行时,找到的wnd与me.hwnd仍然不同(应该是同一程序的hwnd)。为什么?有什么办法解决?
...全文
51 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fullor2000 2003-05-28
  • 打赏
  • 举报
回复

wnd = FindWindow(vbNullString, Me.Caption)

FindWindow(
LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
)

lpWindowName 是窗口的名称,不是Me.Caption
rainstormmaster 2003-05-28
  • 打赏
  • 举报
回复
试着输出一下wnd,看看是不是等于0,我估计wnd=0
叶帆 2003-05-28
  • 打赏
  • 举报
回复
If App.PrevInstance = 1 Then
unload me '不如改成这样
endif
lzqgj 2003-05-28
  • 打赏
  • 举报
回复
wnd的值<>0,说明可以找到,可能是不能用me.caption,但窗口名称怎么得到?我用ctrl+alt+del的方法知道VB程序进程名称总是“工程1”。难道它就是窗口名称吗?能修改吗?

1,486

社区成员

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

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