用这个API, SetForegroundWindow("你要激活的窗口句柄")

解决方案 »

  1.   

    你的问题不是很清楚。如果你有2个窗体,你可以用以下代码:Private Sub Command1_Click()
      Form2.Show      '显示窗体2,它会得到焦点
      Form2.SetFocus  '如果窗体2已经有了,用这代码可以让它得到焦点
    End Sub如果你只有1个窗体,可以试试下面的代码,可以让窗体失去焦点:
    Private Sub Command1_Click()
      Form1.Hide
    End Sub不过要再把焦点找回来就有点麻烦了。不过你可以设置一个定时器,让窗体定时显示。
      

  2.   

    Private Declare Function GetDesktopWindow Lib "user32" () As Long
    Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Longreturnvalue = SetForegroundWindow(GetDesktopWindow)
      

  3.   

    getdesktopwindow'取得桌面窗口的句柄
    gettopwindow'在内部窗口列表中第一窗口的句柄
    getfocus'拥有输入焦点的窗口的句柄
    getactivewindow'获得活动窗口的句柄
    呵呵,差不多了.........
      

  4.   

        SetActiveWindow YourHwnd
         apiSetFocus YourHwnd
      

  5.   

    以下代码打开开始菜单
    Const KEYEVENTF_KEYUP = &H2
    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwflags As Long, ByVal dwExtraInfo As Long)
    Private Sub Command1_Click()
        keybd_event 92, 0, 0, 0  ' press H
        keybd_event 92, 0, KEYEVENTF_KEYUP, 0  ' release H
    End Sub
      

  6.   

    你所说的失去焦点是说焦点转移还是该窗体隐藏?窗体句柄:form1.hwnd
      

  7.   

    Windows获得焦点的窗口只能有一个,而且必须有一个,你不能单纯的把某个窗口置于非焦点状态,而只能考虑把其它的窗口设置为焦点状态,这样你的窗口也就自动的被设置为非焦点状态了。
      

  8.   

    小草说得对.
    是我没说明白.
    比如说,当前windows有N个窗体(程序)打开,其中一个是我自己做的窗体(程序)
    是有焦点的窗体,我想使另外一个程序的窗体获得焦点,(比如一个金山词霸)
    如何实现?
      

  9.   

    得到窗口句柄
    然后setwindowpos
      

  10.   

    Private Const SW_SHOWNOACTIVATE = 4
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Private Sub Command1_Click()
    Me.Hide
    ShowWindow Me.hwnd, SW_SHOWNOACTIVATE
    End Sub
      

  11.   

    给你一个窗口大全,嘻嘻
    AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 
    AnyPopup 判断屏幕上是否存在任何弹出式窗口 
    ArrangeIconicWindows 排列一个父窗口的最小化子窗口 
    AttachThreadInput 连接线程输入函数 
    BeginDeferWindowPos 启动构建一系列新窗口位置的过程 
    BringWindowToTop 将指定的窗口带至窗口列表顶部 
    CascadeWindows 以层叠方式排列窗口 
    ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄 ClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标 
    CloseWindow 最小化指定的窗口 
    CopyRect 矩形内容复制 
    DeferWindowPos 该函数为特定的窗口指定一个新窗口位置 
    DestroyWindow 清除指定的窗口以及它的所有子窗口 
    DrawAnimatedRects 描绘一系列动态矩形 
    EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入 
    EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态
    EnumChildWindows 为指定的父窗口枚举子窗口 EnumThreadWindows 枚举与指定任务相关的窗口 
    EnumWindows 枚举窗口列表中的所有父窗口 
    EqualRect 判断两个矩形结构是否相同 
    FindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口 
    FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口 
    FlashWindow 闪烁显示指定窗口 
    GetActiveWindow 获得活动窗口的句柄 
    GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收) 
    GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息 GetClassLong 取得窗口类的一个Long变量条目 
    GetClassName 为指定的窗口取得类名 
    GetClassWord 为窗口类取得一个整数变量 
    GetClientRect 返回指定窗口客户区矩形的大小 
    GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄 
    GetFocus 获得拥有输入焦点的窗口的句柄
    GetForegroundWindow 获得前台窗口的句柄 
    GetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄 
    GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息 GetParent 判断指定窗口的父窗口 
    GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄 
    GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分 
    GetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系 
    GetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID 
    GetWindowLong 从指定窗口的结构中取得信息 
    GetWindowPlacement 获得指定窗口的状态及位置信息 
    GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内 GetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容 
    GetWindowTextLength 调查窗口标题文字或控件内容的长短 
    GetWindowWord 获得指定窗口结构的信息 
    InflateRect 增大或减小一个矩形的大小 
    IntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集
    InvalidateRect 屏蔽一个窗口客户区的全部或部分区域 
    IsChild 判断一个窗口是否为另一窗口的子或隶属窗口 IsIconic 判断窗口是否已最小化 
    IsRectEmpty 判断一个矩形是否为空 
    IsWindow 判断一个窗口句柄是否有效 
    IsWindowEnabled 判断窗口是否处于活动状态 
    IsWindowUnicode 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字 
    IsWindowVisible 判断窗口是否可见 
    IsZoomed 判断窗口是否最大化 
    LockWindowUpdate 锁定指定窗口,禁止它更新 
    MapWindowPoints 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统 MoveWindow 改变指定窗口的位置和大小 
    OffsetRect 通过应用一个指定的偏移,从而让矩形移动起来 
    OpenIcon 恢复一个最小化的程序,并将其激活 
    PtInRect 判断指定的点是否位于矩形内部 
    RedrawWindow 重画全部或部分窗口
    ReleaseCapture 为当前的应用程序释放鼠标捕获 
    ScreenToClient 判断屏幕上一个指定点的客户区坐标 
    ScrollWindow 滚动窗口客户区的全部或一部分 
    ScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分 SetActiveWindow 激活指定的窗口 
    SetCapture 将鼠标捕获设置到指定的窗口 
    SetClassLong 为窗口类设置一个Long变量条目 
    SetClassWord 为窗口类设置一个条目 
    SetFocusAPI 将输入焦点设到指定的窗口。如有必要,会激活窗口 
    SetForegroundWindow 将窗口设为系统的前台窗口 
    SetParent 指定一个窗口的新父 
    SetRect 设置指定矩形的内容 
    SetRectEmpty 将矩形设为一个空矩形 
    SetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID SetWindowLong 在窗口结构中为指定的窗口设置信息 
    SetWindowPlacement 设置窗口状态和位置信息
    SetWindowPos 为窗口指定一个新位置和状态 
    SetWindowText 设置窗口的标题文字或控件的内容 
    SetWindowWord 在窗口结构中为指定的窗口设置信息 
    ShowOwnedPopups 显示或隐藏由指定窗口所有的全部弹出式窗口 
    ShowWindow 控制窗口的可见性 
    ShowWindowAsync 与ShowWindow相似 
    SubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果 TileWindows 以平铺顺序排列窗口 
    UnionRect 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果 
    UpdateWindow 强制立即更新窗口 
    ValidateRect 校验窗口的全部或部分客户区 
    WindowFromPoint 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口
      

  12.   

    FindWindow VB声明 
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal 
    lpClassName As String, ByVal lpWindowName As String) As Long 
    说明 
    寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个 
    用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分 
    。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标 
    题) 
    返回值 
    Long,找到窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError 
    参数表 
    参数 类型及说明 
    lpClassName String,指向包含了窗口类名的空中止(C语言)字串的指针;或设为零, 
    表示接收任何类 
    lpWindowName String,指向包含了窗口文本(或标签)的空中止(C语言)字串的指针; 
    或设为零,表示接收任何窗口标题 
    注解 
    很少要求同时按类与窗口名搜索。为向自己不准备参数传递一个零,最简便的办法是传递 
    vbNullString常数 示例 
    Dim hw&, cnt& 
    Dim rttitle As String * 256 
    hw& = FindWindow("ThunderRT5Main", vbNullString) '' ThunderRTMain under VB4 
    cnt = GetWindowText(hw&, rttitle, 255) 
    MsgBox Left$(rttitle, cnt), 0, "RTMain title"