首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VB6 -向TopMost添加异常

VB6 -向TopMost添加异常
EN

Stack Overflow用户
提问于 2013-06-23 22:20:49
回答 3查看 257关注 0票数 0

我已经搜索了几个小时,但没有找到合适的结果。我想做的是,在我的form1上做一个最上面的外部窗口。所以我的form1是最顶端的,但是当默认浏览器通过should打开时,它应该一直在顶端,直到被关闭。

我的代码是:

代码语言:javascript
复制
   Dim r As Long
   r = ShellExecute(0, "open", "http://www.google.com", 0, 0, 1)

当"google.com“被打开时,默认浏览器应该保持在顶部,直到我前面提到的关闭为止。

有没有合适的解决方案?如果是这样的话,如果有人能告诉我怎么做,我将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-24 15:39:20

使用WaitForSingleObject winapi函数等待浏览器窗口关闭。请查看以下链接以获取相同的信息:

How to wait for a shell process to finish before executing further code in VB6

http://www.ex-designz.net/apidetail.asp?api_id=539

http://us.generation-nt.com/answer/how-start-notepad-modal-dialog-vb-application-help-54054422.html

票数 2
EN

Stack Overflow用户

发布于 2013-06-24 16:37:40

看一下SetWindowPos应用编程接口

代码语言:javascript
复制
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
票数 0
EN

Stack Overflow用户

发布于 2013-06-25 15:04:44

如果你的窗口和浏览器窗口都在最上面。然后,您可以将代码放入应用程序的激活事件中,以便:

代码语言:javascript
复制
SetWindowPos(browserHandle, Me.hwnd, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);

为了获得浏览器句柄,您需要使用ShellExecuteEx而不是ShellExecute。这将为您提供一个hProcess。使用它,您可以EnumWindows()并查看哪些窗口具有该GetWindowThreadProcessID()。然后将这些窗口存储在一个列表中,并调用SetWindowPos应用程序接口对它们进行迭代,以便它们位于表单句柄的后面。

如果您的窗体是MDI父级,则可以考虑使浏览器成为MDI子级,因为任何窗口都可以成为MDI子级。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17261662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档