如何得知程序是不是当前的活动程序???

kmzs 2003-10-10 12:42:32
比如IE在不是活动程序后,就会暂停播放当前网页中背景音乐,等到重新成为被用户使用的活动程序后继续播放,那么它是如何知道自己是不是当前活动程序的呢?用VB该怎么做呢???
...全文
33 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
kmzs 2003-10-11
  • 打赏
  • 举报
回复
那有没有可能知道当前活动的程序是什么呢???
  • 打赏
  • 举报
回复
使用API 获取系统活动窗口,
GetActiveWindow 便可知!
pigpag 2003-10-11
  • 打赏
  • 举报
回复
可以使用GetForegroundWindow和Parent追踪判断是不是某个应用程序的子窗体。
Gelim 2003-10-11
  • 打赏
  • 举报
回复
还有如下:

Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Sub Timer1_Timer()
Dim a As Long
a = GetForegroundWindow()
Text1 = CStr(a)
Text2 = Me.hwnd
If a <> Me.hwnd Then SetForegroundWindow (Me.hwnd)
End Sub

GetForegroundWindow

VB声明
Declare Function GetForegroundWindow Lib "user32" Alias "GetForegroundWindow" () As Long
说明
获得前台窗口的句柄。这里的“前台窗口”是指前台应用程序的活动窗口
返回值
Long,前台窗口的句柄
注解
windows nt支持多个桌面,它们相互间是独立的。每个桌面都有自己的前台窗口

SetForegroundWindow

VB声明
Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long
说明
将窗口设为系统的前台窗口。这个函数可用于改变用户目前正在操作的应用程序
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,带到前台的窗口
注解
不应随便使用它,因为一旦程序突然从后台进入前台,可能会使用户产生迷惑

Gelim 2003-10-11
  • 打赏
  • 举报
回复
上面的不对,请看下面的!

GetActiveWindow

VB声明
Declare Function GetActiveWindow Lib "user32" Alias "GetActiveWindow" () As Long
说明
获得活动窗口的句柄
返回值
Long,活动窗口的句柄,如没有窗口处于活动状态,则返回零值

Gelim 2003-10-11
  • 打赏
  • 举报
回复
IsWindowEnabled

VB声明
Declare Function IsWindowEnabled Lib "user32" Alias "IsWindowEnabled" (ByVal hwnd As Long) As Long
说明
判断窗口是否处于活动状态(在vb里使用:针对vb窗体和控件,请用enabled属性)
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
hwnd Long,待检测窗口的句柄

Top

pigpag 2003-10-10
  • 打赏
  • 举报
回复
//易如反掌的问题:
//在form_activete form_deactivete 之中监视一下

断章取义,你自己试试就知道了,嘿嘿
pigpag 2003-10-10
  • 打赏
  • 举报
回复
???楼上的代码?
fytzzh 2003-10-10
  • 打赏
  • 举报
回复
举个例子:
Public fflag As Boolean
Private Sub MDIForm_Load()
fflag = False
End Sub

Private Sub numDept_Click()
If fflag = True Then
MsgBox "打开新窗口前,请关闭其他窗口", vbOKOnly, "警告"
Exit Sub
End If
Load Dept_frm
numDept.Enabled = False
End Sub

Private Sub numEmp_Click()
If fflag = True Then
MsgBox "打开新窗口前,请关闭其他窗口", vbOKOnly, "警告"
Exit Sub
End If
Load Employee_frm
numEmp.Enabled = False
End Sub

Private Sub numExit_Click()
Unload Me
End Sub

Private Sub numSalary_Click()
If fflag = True Then
MsgBox "打开新窗口前,请关闭其他窗口", vbOKOnly, "警告"
Exit Sub
End If
Load Salary_frm
numSalary.Enabled = False
End Sub
sunliangchao 2003-10-10
  • 打赏
  • 举报
回复
易如反掌的问题:
在form_activete form_deactivete 之中监视一下
dim bActive as boolen
private sub form activate()
bactive = true
end sub
provate sub form deactivate()
bavtive = false
end sub
kmzs 2003-10-10
  • 打赏
  • 举报
回复
不能知道程序已经不在活动状态了吗?
wangchong 2003-10-10
  • 打赏
  • 举报
回复
好难,不知道怎么做!!
射天狼 2003-10-10
  • 打赏
  • 举报
回复
这是VB的问题,VB没有提供这样的事件!!

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧