中日友谊诗:VB 能否控制 office 应用程序窗口的位置和大小

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/30 05:38:23
希望利用VB编写一个应用程序,通过他来控制用户打开的excell应用程序窗口的大小和位置。我在网上查阅了一些资料,发现基本都是介绍如何控制VB编写的窗­体,也就是控制应用程序内部的窗体的大小位置。VB是否可以通过调用windows api 来控制 操作系统打开的office应用程序的窗口呢?
谢谢各位的帮助,最后我是通过第三方组件实现的,就把大旗给第二位老兄了,谢谢了

用消息嘛,发个消息给excel。给你个简单的实例:(直接复制到窗体模块中,测试成功)
------------------------------------------------
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub Command1_Click()
Dim exlhwnd As Long
exlhwnd = FindWindow("XLMAIN", vbNullString)
If exlhwnd <> 0 Then
MoveWindow exlhwnd, 100, 100, 500, 500, 1
Else
MsgBox "没有找到打开的Excel程序"
End If
End Sub
-----------------------------------------
Declare Function MoveWindow Lib "user32" Alias "MoveWindow" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
说明
改变指定窗口的位置和大小。顶级窗口可能受最大或最小尺寸的限制,那些尺寸优先于这里设置的参数
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
hwnd Long,欲移动窗口的句柄
x Long,窗口新的左侧位置
y Long,窗口新的顶部位置
nWidth Long,窗口的新宽度
nHeight Long,窗口的高宽度
bRepaint Long,如窗口此时应重画,则设为TRUE(非零)。FALSE(零)则表明应用程序会自己决定是否重画窗口

可以 用API函数吗
先用FindWindow函数获得窗口的句柄
再用InflateRect函数调整大小

wxs77bb所说的第一段
建立一个模块module1,声明函数(FindWindow和MoveWindow):
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As .....

请问wxs77bb:
MoveWindow exlhwnd, 100, 100, 500, 500, 1中的1是什么意思???
MoveWindow中的bRePaint参数是一个布尔型数据,怎么能取1呢
请教一下 Thank you!!!!!!!!

不能