VB 如何判断是否全屏游戏、全屏视频中?
答案:2 悬赏:50 手机版
解决时间 2021-02-28 11:55
- 提问者网友:练爱
- 2021-02-27 18:03
vb如果进入了全屏游戏或者全屏视频,那么我就最小化,怎么判断进入了全屏游戏或者全屏视频?
最佳答案
- 五星知识达人网友:蓝房子
- 2021-02-27 18:56
这个是个头疼的问题,之所以说是头疼不是因为做起来难,而是不知道对任何的窗口是不是都有效;谁知道是不是每个程序员都按套路出牌!
说说思路吧:
1)检查当前活动窗口的大小,跟屏幕大小进行比较
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
'这个函数用来得到对应句柄的窗口的坐标
Private Declare Function GetForegroundWindow Lib "user32" () As Long
'这个是用来获得当前活动的窗口的(为什么?全屏的程序不就是当前活动的那一个么?呵呵)
Private Type RECT'定义结构体
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Function IfFullScreen() As Boolean'这个不是我写的,只比较了窗口的X方向上是不是大于等于屏幕的大小(其实如果是正常的窗口,全屏的时候是大于的,因为边框在屏幕外了)
Dim Rc As RECT, lhwnd&
lhwnd = GetForegroundWindow'获得窗口句柄
If lhwnd > 0 And GetWindowRect(lhwnd, Rc) Then
With Screen
IfFullScreen = (Rc.Right - Rc.Left >= .Width / .TwipsPerPixelX) And (Rc.Bottom - Rc.Top >= .Height / .TwipsPerPixelY)
End With
End If
End Function
2)直接检查当前活动窗口的状态
同样要去的窗口句柄
然后用下面的函数就可以得到了
Private Declare Function IsZoomed Lib "user32 " (ByVal hwnd As Long) As Long
'可以直接这样调用CStr(CBool(IsZoomed(Me.hwnd)))
第二个代码没有打全,因为获取句柄的方式跟第一个是一样的,题主改改就好了,这样也可以学到点什么,直接用别人的代码,也没意思是吧!
说说思路吧:
1)检查当前活动窗口的大小,跟屏幕大小进行比较
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
'这个函数用来得到对应句柄的窗口的坐标
Private Declare Function GetForegroundWindow Lib "user32" () As Long
'这个是用来获得当前活动的窗口的(为什么?全屏的程序不就是当前活动的那一个么?呵呵)
Private Type RECT'定义结构体
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Function IfFullScreen() As Boolean'这个不是我写的,只比较了窗口的X方向上是不是大于等于屏幕的大小(其实如果是正常的窗口,全屏的时候是大于的,因为边框在屏幕外了)
Dim Rc As RECT, lhwnd&
lhwnd = GetForegroundWindow'获得窗口句柄
If lhwnd > 0 And GetWindowRect(lhwnd, Rc) Then
With Screen
IfFullScreen = (Rc.Right - Rc.Left >= .Width / .TwipsPerPixelX) And (Rc.Bottom - Rc.Top >= .Height / .TwipsPerPixelY)
End With
End If
End Function
2)直接检查当前活动窗口的状态
同样要去的窗口句柄
然后用下面的函数就可以得到了
Private Declare Function IsZoomed Lib "user32 " (ByVal hwnd As Long) As Long
'可以直接这样调用CStr(CBool(IsZoomed(Me.hwnd)))
第二个代码没有打全,因为获取句柄的方式跟第一个是一样的,题主改改就好了,这样也可以学到点什么,直接用别人的代码,也没意思是吧!
全部回答
- 1楼网友:鱼芗
- 2021-02-27 19:08
'新增模块,并附上如下代码。 '判断是否有全屏任务 option explicit private declare function getwindowrect lib "user32" (byval hwnd as long, lprect as rect) as long private type rect left as long top as long right as long bottom as long end type private declare function getforegroundwindow lib "user32" () as long public function iffullscreen() as boolean dim rc as rect, lhwnd& lhwnd = getforegroundwindow if lhwnd > 0 and getwindowrect(lhwnd, rc) then with screen iffullscreen = (rc.right - rc.left >= .width / .twipsperpixelx) and (rc.bottom - rc.top >= .height / .twipsperpixely) end with end if end function
使用方法如下: private sub timer1_timer() '页面点击 debug.print now() &" 全屏:"&iffullscreen end sub
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯