| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1156 人关注过本帖
标题:VB如何隐藏两个相同的窗体
只看楼主 加入收藏
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:9 
VB如何隐藏两个相同的窗体
比如说,我打开了两个“计算器”窗口,并且这两个窗口都处于可见 状态,现在我要用VB写个程序,实现点击COMMAND1以后,两个“计算器”窗口同时被隐藏。退出程序时,两个窗口同时恢复可见。不知道如何操作?只有一个窗体的情况下,我已经测试成功。

[ 本帖最后由 msxjc 于 2011-4-25 14:43 编辑 ]
搜索更多相关主题的帖子: 计算器 
2011-04-25 14:42
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4943
专家分:30067
注 册:2008-10-15
收藏
得分:4 
你第一个是怎么办到的??

搜索窗体,得到 HWND ,然后再发消息?

那你可以不可以改为枚举进程,进而得到 计算器的 HWND ,再来发消息??

授人于鱼,不如授人于渔
早已停用QQ了
2011-04-25 15:55
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
收藏
得分:0 
以下是引用风吹过b在2011-4-25 15:55:55的发言:

你第一个是怎么办到的??

搜索窗体,得到 HWND ,然后再发消息?

那你可以不可以改为枚举进程,进而得到 计算器的 HWND ,再来发消息??
第一个是使用findwindow窗体名称,从而得到句柄,然后隐藏。
现在问题是,第一个隐藏了以后,再使用findwindows窗体名称,得到的还是已经隐藏的那个窗体的句柄啊。无法判断这个句柄的窗体是否已经隐藏。

2011-04-25 16:12
鬼王
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2011-1-22
收藏
得分:4 
学习来了。
2011-04-25 17:18
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:4 
Form.Hide  Form.Visible=False Form.show  Form.Visible=true

   唯实惟新 至诚致志
2011-04-25 18:56
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
收藏
得分:0 
以下是引用qq1023569223在2011-4-25 18:56:45的发言:

Form.Hide  Form.Visible=False Form.show  Form.Visible=true
我要隐藏的是第三方EXE程序的窗口,又不是VB自身的窗体。这些语句又不是不懂。

2011-04-25 19:16
libralibra
Rank: 2
等 级:论坛游民
帖 子:8
专家分:19
注 册:2010-8-13
收藏
得分:4 
看看IsIconic
判断是否已经最小化

接VB,MATLAB,python程序
QQ: 790404545
2011-04-25 22:38
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:4 
程序代码:
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Sub Form_Load()
Const SCICALL As String = "SciCalc"
    Dim lret As Long
    lret = FindWindow(SCICALL, vbNullString)
    Do While lret
        Debug.Print "SciCalc", Hex$(lret)
        lret = FindWindowEx(0, lret, SCICALL, vbNullString)
    Loop
End Sub
2011-04-26 02:19
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
收藏
得分:0 
以下是引用bczgvip在2011-4-26 02:19:53的发言:

Option Explicit
 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
 
Private Sub Form_Load()
Const SCICALL As String = "SciCalc"
    Dim lret As Long
    lret = FindWindow(SCICALL, vbNullString)
    Do While lret
        Debug.Print "SciCalc", Hex$(lret)
        lret = FindWindowEx(0, lret, SCICALL, vbNullString)
    Loop
End Sub
不知道您这段代码是如何使用的。是一部分,还是完整代码,我复制您的代码,并且运行,没有任何效果。

2011-04-27 08:33
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 
打开两个以上“计算器”,在调试窗口就能看出结果。
xp,别的系统米试过。
2011-04-27 12:23
快速回复:VB如何隐藏两个相同的窗体
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013368 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved