我想做一个程序,功能是让指定任意窗口常居顶端(WINDOWS 2000下),《程序员》杂志里有篇文章里提到,瘟到死两千下为了安全,不能直接得到其他程序的信息,这样我就无法得到其他窗体的句柄,请问如何才能得到当前活动窗体的句柄(VB实现)。

解决方案 »

  1.   

    Declare Function GetActiveWindow Lib "user32" () As Long
      

  2.   

    Public Declare Function SetWindowPos Lib "user32" _
        (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
         ByVal X As Long, ByVal Y As Long, _
         ByVal cx As Long, ByVal cy As Long, _
         ByVal wFlags As Long) As LongPrivate Sub Form_Load()
        '使窗口始终位于最前端
        SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3        
    End Sub
      

  3.   

    Private Const HWND_TOPMOST = -1Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongSub SetFirst(ByVal strWindowName As String)
    '--------------------------------------------------------------
    '功能:
    '       将指定的窗体置于最前端
    '参数:
    '       strWindowName......要操作的窗体名
    '返回值:
    '       无
    '--------------------------------------------------------------
    Dim lwinHwnd As Long     '应用程序的句柄
        
        '---首先判断计算器是否已经运行如果运行则不再运行
        lwinHwnd = FindWindow(vbNullString, strWindowName)        '获取计算器的应用句柄
        SetWindowPos lwinHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZEEnd Sub
      

  4.   

    Public Declare Function SetWindowPos Lib "user32" _
        (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
         ByVal X As Long, ByVal Y As Long, _
         ByVal cx As Long, ByVal cy As Long, _
         ByVal wFlags As Long) As LongPrivate Sub Form_Load()
        SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3    
        Me.move 0,0
    End Sub