再问一个问题,如何用VB解决禁止多个实例运行?

hanhf 2001-03-12 01:03:00
象IE那样,如果打开了一个IE,当第二次打开网页文件时,仍然在同一个IE窗口,而且可以BACK。我原先想用App.PreInstance属性,后来觉得它只能检测到有无实例在运行,却不能把控制权交给它。
请问如何解决,最好有简单的code示例。
...全文
191 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
MarsChen 2001-03-12
  • 打赏
  • 举报
回复
1。如果是想把已经有的实例关闭,
api函数 FindWindow , SetForegroundWindow , PostMessage (自己查一下它们的定义)

dim hWnd as long
hWnd=FindWindow(vbnullstring,要查找的窗口标题)
setforegroundwindow hWnd
postMessage hWnd,WM_CLOSE,……

用FindWindow的方法不是很好,因为有时窗口标题会变,要做得更完善的话,要用其它API函数,不过比较复杂了,这里不便详述

2。如果是发现已经有实例在运行,则还让该实例打开新文件,可以这样做:
自己编写callback函数,
在sub main()中判断 app.preinstance ,如果有实例在运行,则发送一个消息给前实例,使其做相应的动作
dave75 2001-03-12
  • 打赏
  • 举报
回复
这恐怕必须用API函数来解决.
先用findwindow得到你的程序窗口句柄.
hwnd=findwindow(vbnullstring,"你的窗体的caption")
然后 用showwindow把控制权交给它.
showwindow(hwnd,1) 即可.


7,787

社区成员

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

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