我已经实现了隐藏窗口的功能,部分代码如下Private Sub cmdhide_Click()
SetWindowPos(swhwnd, HWND_TOP, 0, 0, 800, 600, SWP_HIDEWINDOW Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER)
End Sub
现在有个问题,因为程序功能,我用了一个第三方的DLL那个DLL只能给我提供GetTopWindowProcess()函数
而且我能从这个GetTopWindowProcess()得到最前端的程序的进程句柄但是
swhwnd = GetTopWindowProcess()
SetWindowPos(swhwnd, HWND_TOP, 0, 0, 800, 600, SWP_HIDEWINDOW Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER)
却不行,原因也很简单,因为原来的swhwnd是拿 FindWindow找到的窗口句柄。而GetTopWindowProcess()传给swhwnd是前台程序的进程句柄~我现在想实现隐藏前台程序,比如一共有两个程序,当第一个被我隐藏了,第二个就变成前台。我如何去隐藏第二个?除了这个GetTopWindowProcess()怎么动态获得前台的窗口句柄?谢谢各位了!
SetWindowPos(swhwnd, HWND_TOP, 0, 0, 800, 600, SWP_HIDEWINDOW Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER)
End Sub
现在有个问题,因为程序功能,我用了一个第三方的DLL那个DLL只能给我提供GetTopWindowProcess()函数
而且我能从这个GetTopWindowProcess()得到最前端的程序的进程句柄但是
swhwnd = GetTopWindowProcess()
SetWindowPos(swhwnd, HWND_TOP, 0, 0, 800, 600, SWP_HIDEWINDOW Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER)
却不行,原因也很简单,因为原来的swhwnd是拿 FindWindow找到的窗口句柄。而GetTopWindowProcess()传给swhwnd是前台程序的进程句柄~我现在想实现隐藏前台程序,比如一共有两个程序,当第一个被我隐藏了,第二个就变成前台。我如何去隐藏第二个?除了这个GetTopWindowProcess()怎么动态获得前台的窗口句柄?谢谢各位了!
【VB声明】
Private Declare Function GetForegroundWindow Lib "user32" Alias "GetForegroundWindow" () As Long【说明】
获得前台窗口的句柄。这里的“前台窗口”是指前台应用程序的活动窗口 【返回值】
Long,前台窗口的句柄 【备注】
windows nt支持多个桌面,它们相互间是独立的。每个桌面都有自己的前台窗口
这样一下子前台的全部被隐藏了,只能恢复前一个被隐藏的窗口,如果连续隐藏多个,如两次。那么上上个被隐藏的,就没有办法显示了:(有没有解决方案呢?
不可以用变量记下曾经用过的swhwnd吗?另:隐藏窗口用这个就可以【函数】
ShowWindow【操作系统】
Win9X:Yes
WinNT:Yes【声明】
ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long【说明】 控制窗口的可见性(在vb里使用:针对vb窗体及控件,请使用对应的vb属性) 【返回值】 Long,如窗口之前是可见的,则返回TRUE(非零),否则返回FALSE(零) 【其它】
【参数表】
hwnd ----------- Long,窗口句柄,要向这个窗口应用由nCmdShow指定的命令 nCmdShow ------- Long,为窗口指定可视性方面的一个命令。请用下述任何一个常数
SW_HIDE
隐藏窗口,活动状态给令一个窗口
SW_MINIMIZE
最小化窗口,活动状态给令一个窗口
SW_RESTORE
用原来的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOW
用当前的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOWMAXIMIZED
最大化窗口,并将其激活
SW_SHOWMINIMIZED
最小化窗口,并将其激活
SW_SHOWMINNOACTIVE
最小化一个窗口,同时不改变活动窗口
SW_SHOWNA
用当前的大小和位置显示一个窗口,不改变活动窗口
SW_SHOWNOACTIVATE
用最近的大小和位置显示一个窗口,同时不改变活动窗口
SW_SHOWNORMAL
与SW_RESTORE相同