偶编一个程序,需要激活其它的窗口,如计算器,用VB中Appactivate是不行的,上一些网一查,都说用SetForegroundWindow,但我试了一下,还是不行,只看到窗口的标题栏在闪烁,却得不到焦点。我用的测试方法为:加入一个Timer,然后设为1500。在timer事件中加入SetForegroundWindow me.hwnd。然后一运行程序就点其它的窗口,可怎么也不能让自己拥有焦点。这是什么原因?别人怎么可以的?还请高手指教。
解决方案 »
- VB 窗体一打开就Post一个表单出去
- 想用以下语句rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
- 重装的WIN2K+SP4,为什么VB6在每次关闭程序的时候,总是提示:VB6.EXE产生了错误,要被WIN关闭。正在创建错误日志。是什么原因?????
- 如何使用VB读NT域帐号信息
- 關于DTPicker控件的莫名其妙的問題﹐煩請高手指點。
- 一条命令太长,想分两行写,怎么连接让vb知道是一行而不是两行
- 使一个窗体始终保持在其他窗体(MDI窗体,MDI子窗体,模式窗体)的前面,并能被激活?
- 谁能提供一个直接发给pop3服务器的源码,即不通过smtp服务器
- 请问一个简单的问题,是关于报表的,解决了一定给分
- 初来贵论坛,送礼金咯
- 如何呢把数据库的操作在后台完成?
- 实时错误‘3251’
lRet = ShowWindow(lWnd, SW_SHOWNORMAL)
lRet = SetForegroundWindow(lWnd)
Public Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long
【说明】
将窗口设为系统的前台窗口。这个函数可用于改变用户目前正在操作的应用程序
【返回值】
Long,非零表示成功,零表示失败。会设置GetLastError
【参数表】
hwnd ----------- Long,带到前台的窗口
【其它】
不应随便使用它,因为一旦程序突然从后台进入前台,可能会使用户产生迷惑
Public Declare Function BringWindowToTop Lib "user32" Alias "BringWindowToTop" (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As LongPrivate Sub Command1_Click()
Dim h As Long
h = FindWindow("SciCalc", vbNullString)
If h Then
SetForegroundWindow h
End If
End Sub除了楼上大虾说的,BringWindowToTop,还有一招就是设置窗体topmost,然后把bringwindowtotop,setforegroundwindow,setactivewindow等等都加上咯,最后去掉topmost,呵呵。
Call SetWindowPos(Me.hwnd, -1, 0, 0, Me.Width, Me.Height, &H40)'先置顶Call SetWindowPos(Me.hwnd, -2, 0, 0, Me.Width, Me.Height, &H40)'再取消置顶