有一个外部程序的窗体,但此窗体为顶层窗体并且没有工具栏按钮,请问我如何可以将其设置为非顶层体并调出其最大化和最小化按钮,关闭按钮就不用了!

解决方案 »

  1.   

    呵呵,用SENDMESSAGE很容易办到,
    这个家伙发送一个消息,就可以让任何控件具有系统按钮(最大化,最小化,关闭)一下全冒出来了
    今天喝的实在是不少了,就先给楼主这些提示。自己找找
      

  2.   

    设置非顶层比较容易
    只要用findwindow找到对方窗口
    然后使用setwindowpos就可以了并调出其最大化和最小化按钮
    这个就比较有难度了不知道用setwindowslong修改他的状态行不
      

  3.   

    用SetWindowPos设置窗体为非顶层窗体,用SetWindowLong调出其最大化和最小化按钮
      

  4.   

    .......我对API没多少心得,能说仔细一些吗?
    麻烦了
      

  5.   

    faysky2大哥能给一个实例吗?学习
      

  6.   

    调试搞定
    Private Sub Command9_Click()
    s1 = FindWindow(vbNullString, "计算器")
    lWnd = GetWindowLong(s1, GWL_STYLE)
    lWnd = lWnd And Not (WS_MINIMIZEBOX)
    lWnd = lWnd And Not (WS_MAXIMIZEBOX)
    lWnd = SetWindowLong(s1, GWL_STYLE, lWnd)
    End SubPrivate Sub Command10_Click()
    s1 = FindWindow(vbNullString, "计算器")
    lWnd = GetWindowLong(s1, GWL_STYLE)
    lWnd = lWnd + WS_MINIMIZEBOX
    lWnd = lWnd + WS_MAXIMIZEBOX
    lWnd = SetWindowLong(s1, GWL_STYLE, lWnd)
    End Sub需要声明api FindWindow  GetWindowLong SetWindowLong
    常数 WS_MINIMIZEBOX
    WS_MAXIMIZEBOX
      

  7.   

    按下command9 运行窗中窗口名为计算器的将没有最小化最大化按钮
    按下command10 运行窗中窗口名为计算器的将恢复最小化最大化按钮
    只要把command10的代码窗口名改为你的窗口名字就可以了
      

  8.   

    取消置顶的代码
    s1 = FindWindow(vbNullString, "你的程序窗体名")
    SetWindowPos s1, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
      

  9.   

    使用aspower方法点击按钮后没有成功,不知道是不是有什么地方没注意,有特别要注意的地方吗?
      

  10.   

    不好意思aspower,没有声明常数(是不是很晕?),麻烦再问一下,两个常数的值应该是多少?
    不好意思,谢谢!
      

  11.   

    饭来张口衣来伸手阿Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
    Private 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 Long
    Private Const WM_CLOSE = &H10Private Declare Function SetWindowLong Lib "user32" _
    Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal _
    nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Declare Function GetWindowLong Lib "user32" _
    Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal _
    nIndex As Long) As Long
    Const WS_MINIMIZEBOX = &H20000
    Const WS_MAXIMIZEBOX = &H10000
    Const GWL_STYLE = (-16)Const HWND_TOPMOST = -1
    Const HWND_NOTOPMOST = -2
    Const SWP_NOSIZE = &H1
    Const SWP_NOMOVE = &H2
    Const SWP_NOACTIVATE = &H10
    Const SWP_SHOWWINDOW = &H40