想请教以下问题?
我现在用VB编写了两个程序(分别为one.exe各two.exe)one.exe很简单就是一个窗体Form1,在这个Form1上有一个按钮Command1。
现在就是如何通过two.exe程序来获得one.exe程序Command1的窗体句柄,并通过Findwindow,GetClientRect等API来改变Command1大小?
理伦上已完全通过,但落实代码实现确无从下手,因为我对API不是很熟悉,那位高手能帮我一下,贴出相应代码,在此感激不尽!谢谢

解决方案 »

  1.   

    用FindWindow获得窗体句柄
    GetClientRect函数是用来做什么的,是不是获得大小?
    那设置大小的API函数是什么?
      

  2.   

    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 SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) 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 Sub Command1_Click()
    Dim lngFrmHwnd As Long
    Dim lngBtnHwnd As Long
    Dim x, y, i As Long
        
        lngFrmHwnd = FindWindow(vbNullString, "Form1")  '找到窗口标题为Form1的窗口
        If lngFrmHwnd > 0 Then
            lngBtnHwnd = FindWindowEx(lngFrmHwnd, ByVal 0&, "ThunderCommandButton", "Command1") 'ThunderCommandButton是按钮类,找名称为command1的按钮
        End If
        Debug.Print lngFrmHwnd, lngBtnHwnd
        If lngBtnHwnd > 0 Then
         Call SetWindowPos(lngBtnHwnd, HWND_TOP, 22, 33, 333, 444, SWP_NOZORDER)'设置大小,22为x,33为y,333为宽,444为高
        End If
    End Sub
      

  3.   

    汗。用错id了,要给分直接给小号~~DooDu,那个mmmvp不用了现在~~~
      

  4.   

    GetClientRect 返回指定視窗客戶區矩形的大小
      

  5.   

    谢谢DooDu兄,但你给出的代码有问题,
    HWND_TOP SWP_NOZORDER 变量未定义?因把它设置成什么呢?
      

  6.   

    Const HWND_TOP=0
    Const SWP_NOZORDER = &H4 加上上面两句,放到程序顶端
      

  7.   

    问题解决,再次感谢DooDu兄的帮助,谢谢!:)
    马上结贴,给分!