用VB程序移动某个程序的窗口至300,600(屏幕坐标) vb 如果实现对别的应用程序的窗口身指定坐标移动?
作者&投稿:泰璧 (若有异议请与网页底部的电邮联系)
vb移动到某坐标问题,求助~
这个函数有两个参数,第一个是要找的窗口的类,第二个是要找的窗口的标题。在搜索的时候不一定两者都知道,但至少要知道其中的一个。有的窗口的标题是比较容易得到的,如"计算器",所以搜索时应使用标题进行搜索。但有的软件的标题不是固定的,如"记事本",如果打开的文件不同,窗口标题也不同,这时使用窗口类搜索就比较方便。如果找到了满足条件的窗口,这个函数返回该窗口的句柄,否则返回0。
第一个是要找的窗口的类,第二个是要找的窗口的标题。
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) 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 SWP_NOSIZE = &H1
Private Sub Command1_Click()
Dim H As Long
Dim EXE As String
EXE = "名称"
H = FindWindow(vbNullString, EXE)
SetWindowPos H, 0, 300, 600, 0, 0, SWP_NOSIZE
End Sub
标题名称用变量代替,这样你可以随时修改变量的值!
你的问题是得不到句柄,得到的话
SetWindowPos h, 0, 300, 600, 0, 0, SWP_NOSIZE
即可实现
h = FindWindow(vbNullString, me.Caption)
SetWindowPos h, 0, 300, 300, 0, 0, SWP_NOSIZE
问的好宽泛啊
以下是全部代码。为了好说明,我以计算器为例。你先运行一个Windows自带计算器。单击按钮就会让他跑道0,0去。然后你就如法炮制,把代码中“计算器”改成你那个窗口名就行了。
==============
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) 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 SWP_NOSIZE = &H1
Private Sub Command1_Click()
Dim h As Long
h = FindWindow(vbNullString, "计算器")
SetWindowPos h, 0, 0, 0, 0, 0, SWP_NOSIZE
End Sub
这个函数有两个参数,第一个是要找的窗口的类,第二个是要找的窗口的标题。在搜索的时候不一定两者都知道,但至少要知道其中的一个。有的窗口的标题是比较容易得到的,如"计算器",所以搜索时应使用标题进行搜索。但有的软件的标题不是固定的,如"记事本",如果打开的文件不同,窗口标题也不同,这时使用窗口类搜索就比较方便。如果找到了满足条件的窗口,这个函数返回该窗口的句柄,否则返回0。
第一个是要找的窗口的类,第二个是要找的窗口的标题。
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) 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 SWP_NOSIZE = &H1
Private Sub Command1_Click()
Dim H As Long
Dim EXE As String
EXE = "名称"
H = FindWindow(vbNullString, EXE)
SetWindowPos H, 0, 300, 600, 0, 0, SWP_NOSIZE
End Sub
标题名称用变量代替,这样你可以随时修改变量的值!
你的问题是得不到句柄,得到的话
SetWindowPos h, 0, 300, 600, 0, 0, SWP_NOSIZE
即可实现
h = FindWindow(vbNullString, me.Caption)
SetWindowPos h, 0, 300, 300, 0, 0, SWP_NOSIZE