系统粉 > 电脑问答 > 其他问答

已解决怎样用API使被最小化的窗口最大化并前置

提问者:树怪喽罗  |  浏览次  |  提问时间:2017-01-10  |  回答数量:7

怎样用API使被最小化的窗口最大化并前置 在使用VB6的过程中发现一个问题。当一个程序窗口被最小化后,用以下的语句将无法还原。Private Declare Function FindWindow Lib \"user32 \" Alias \"FindWindowA\" (ByVal lpClassName As Any, ByVal lpWindowName As String) As LongPrivate Declare Function SetForegroundWindow Lib \"User32\" (ByVal hWnd As Long) As LongPrivate Declare Function ShowWindow Lib \"User32\" (ByVal hWnd As Long, ByVal nCmdShow As Long) As LongPrivate Const SW_MAXIMIZE = 3Private Sub Command1_Click()hwndCalc = FindWindow(0&, \"test\")ShowWindow hwndCalc, SW_MAXIMIZE

已有7条答案
只为梦中的妳

只为梦中的妳

回答数:30  |  被采纳数:119

我这里用记事本测试是没问题的
2017-01-10 04:39:11
赞 3
雪白的婚纱丶

雪白的婚纱丶

回答数:212  |  被采纳数:101

同样是用VB编写的程序就不行的。

您可以试一下这个。
我做的是当一个程序启动时检测自身是否已在运行中,如果正在运行中,那就将正在运行中的那份前置,然后退出第二次运行的程序。
连续执行两次编译出来的程序就行。(1)

测试用例.rar

2011-02-15 15:09 上传点击文件名下载附件下载积分: 电元 -5
4 KB, 下载次数: 4, 下载积分: 电元 -5

2017-01-10 09:17:30
赞 21
su_vc

su_vc

回答数:57  |  被采纳数:64

感觉你FindWindow找到的是自己
2017-01-10 10:45:45
赞 5
为打酱油路过

为打酱油路过

回答数:164  |  被采纳数:116

咦,这样啊,我再试一下。
2017-01-10 06:12:16
赞 16
theeighthpawn

theeighthpawn

回答数:41  |  被采纳数:51

唉,头痛了,刚刚听从您的建议,在程序确认是第一次启动后再修改标题名,确实,窗口能正常显示出来了。然后多测试了两次,突然间又失效了…………悲剧啊…………
2017-01-10 05:09:31
赞 4
d调慢节奏

d调慢节奏

回答数:11  |  被采纳数:26

(2) 太感谢了!已经成功了。果然是电脑出问题了。注销了下就一切正常了。
代码如下:
Private Declare Function FindWindow Lib "user32 " Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Private Sub MDIForm_Load()
Me.Caption = "test"
If App.PrevInstance = True Then
hwndCalc = FindWindow(0&, "测试")
ShowWindow hwndCalc, 9
hwndCalc = SetForegroundWindow(hwndCalc)
End
Else
Me.Caption = "测试"
'Form1.Show
'Form1.Top = 50
'Form1.Left = 50
End If
End Sub
2017-01-10 15:00:00
赞 1
鲁鲁的世界

鲁鲁的世界

回答数:97  |  被采纳数:147

我也想下来看看啊
2017-01-10 23:40:17
赞 9
相关问答
最新其他问答
解决方法