vb 如何让其它程序最大化、最小化、关闭?

时间:2021-09-25 23:46:20
想控制千千静听(TTPlayer)最大化、最小化、关闭等功能,请问用VB怎样编写?

8 个解决方案

#1


只能用构子函数了

#2


引用楼主 xwylpsy 的回复:
想控制千千静听(TTPlayer)最大化、最小化、关闭等功能,请问用VB怎样编写?
一般的窗口用findwindow、sendmessage两个api函数基本就可以处理。千千静听有最大化吗?那个最大户点了后貌似变小了。这类非标准界面的程序最好是用sendmessage点击相应的“按钮”,直接向窗口发送最大化最小化可能不会得到想要的结果。

#3


引用 2 楼 sysdzw 的回复:
引用楼主 xwylpsy 的回复:
想控制千千静听(TTPlayer)最大化、最小化、关闭等功能,请问用VB怎样编写?
一般的窗口用findwindow、sendmessage两个api函数基本就可以处理。千千静听有最大化吗?那个最大户点了后貌似变小了。这类非标准界面的程序最好是用sendmessage点击相应的“按钮”,直接向窗口发送最大化最小化可能不会得到想要的结果。

能举个实例吗??小弟是新手!用findwindow这个函数怎样都找不到千千静听这个应用程序

#4


用FindWindow函数怎么找千千静听返回值是0(当前千千静听是播放状态),有什么办法能找到千千静听!

#5


用VB安装盘带的工具Spy++,搜索千千静听的标题,找到它的类型,然后用findwindow函数找到千千静听的句柄,再给它发送消息

关闭:SendMessage Handle, WM_CLOSE, 0, 0
最小化:ShowWindow Handle, SW_MINIMIZE
最大化ShowWindow Handle, SW_MAXIMIZE
恢复ShowWindow Handle, SW_RESTORE
判断最小化:
If IsIconic(Handle) Then
MsgBox "最小化了"
Else
MsgBox "没有最小化"
End If

判断最大化:
If IsZoomed(Handle) Then
    MsgBox "最大化了", , "泰山"
Else
    MsgBox "没有最大化", , "泰山"
End If

#6


我这里没安装千千静听,所以拿不出更详细的代码

#7


引用 4 楼 xwylpsy 的回复:
用FindWindow函数怎么找千千静听返回值是0(当前千千静听是播放状态),有什么办法能找到千千静听!

由于标题不固定所以只能根据类名来查找了,最大化的情况貌似比较复杂,自己找找资料。实在不行就找到右上角最大化按钮的句柄然后点击
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName 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 Const SC_MAXIMIZE = &HF030&
Private Const SC_MINIMIZE = &HF020&
Private Const SC_CLOSE = &HF060&
Private Const WM_SYSCOMMAND = &H112

Private Sub Command1_Click()
    Dim hWnd As Long
    hWnd = FindWindow("TTPlayer_PlayerWnd", vbNullString)
    SendMessage hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0
'    SendMessage whwnd, WM_SYSCOMMAND, SC_CLOSE, 0'关闭
End Sub

#8


引用 7 楼 sysdzw 的回复:
引用 4 楼 xwylpsy 的回复:

用FindWindow函数怎么找千千静听返回值是0(当前千千静听是播放状态),有什么办法能找到千千静听!

由于标题不固定所以只能根据类名来查找了,最大化的情况貌似比较复杂,自己找找资料。实在不行就找到右上角最大化按钮的句柄然后点击
VB code
Option Explicit

Private Declare Function FindW……
点最大化按钮和双击标题栏效果一样的,所以发送个双击的消息即可。
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName 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 Const WM_LBUTTONDBLCLK = &H203

Private Sub Command1_Click()
    Dim hWnd As Long
    hWnd = FindWindow("TTPlayer_PlayerWnd", vbNullString)
    SendMessage hWnd, WM_LBUTTONDBLCLK, 0, 0
End Sub

#1


只能用构子函数了

#2


引用楼主 xwylpsy 的回复:
想控制千千静听(TTPlayer)最大化、最小化、关闭等功能,请问用VB怎样编写?
一般的窗口用findwindow、sendmessage两个api函数基本就可以处理。千千静听有最大化吗?那个最大户点了后貌似变小了。这类非标准界面的程序最好是用sendmessage点击相应的“按钮”,直接向窗口发送最大化最小化可能不会得到想要的结果。

#3


引用 2 楼 sysdzw 的回复:
引用楼主 xwylpsy 的回复:
想控制千千静听(TTPlayer)最大化、最小化、关闭等功能,请问用VB怎样编写?
一般的窗口用findwindow、sendmessage两个api函数基本就可以处理。千千静听有最大化吗?那个最大户点了后貌似变小了。这类非标准界面的程序最好是用sendmessage点击相应的“按钮”,直接向窗口发送最大化最小化可能不会得到想要的结果。

能举个实例吗??小弟是新手!用findwindow这个函数怎样都找不到千千静听这个应用程序

#4


用FindWindow函数怎么找千千静听返回值是0(当前千千静听是播放状态),有什么办法能找到千千静听!

#5


用VB安装盘带的工具Spy++,搜索千千静听的标题,找到它的类型,然后用findwindow函数找到千千静听的句柄,再给它发送消息

关闭:SendMessage Handle, WM_CLOSE, 0, 0
最小化:ShowWindow Handle, SW_MINIMIZE
最大化ShowWindow Handle, SW_MAXIMIZE
恢复ShowWindow Handle, SW_RESTORE
判断最小化:
If IsIconic(Handle) Then
MsgBox "最小化了"
Else
MsgBox "没有最小化"
End If

判断最大化:
If IsZoomed(Handle) Then
    MsgBox "最大化了", , "泰山"
Else
    MsgBox "没有最大化", , "泰山"
End If

#6


我这里没安装千千静听,所以拿不出更详细的代码

#7


引用 4 楼 xwylpsy 的回复:
用FindWindow函数怎么找千千静听返回值是0(当前千千静听是播放状态),有什么办法能找到千千静听!

由于标题不固定所以只能根据类名来查找了,最大化的情况貌似比较复杂,自己找找资料。实在不行就找到右上角最大化按钮的句柄然后点击
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName 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 Const SC_MAXIMIZE = &HF030&
Private Const SC_MINIMIZE = &HF020&
Private Const SC_CLOSE = &HF060&
Private Const WM_SYSCOMMAND = &H112

Private Sub Command1_Click()
    Dim hWnd As Long
    hWnd = FindWindow("TTPlayer_PlayerWnd", vbNullString)
    SendMessage hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0
'    SendMessage whwnd, WM_SYSCOMMAND, SC_CLOSE, 0'关闭
End Sub

#8


引用 7 楼 sysdzw 的回复:
引用 4 楼 xwylpsy 的回复:

用FindWindow函数怎么找千千静听返回值是0(当前千千静听是播放状态),有什么办法能找到千千静听!

由于标题不固定所以只能根据类名来查找了,最大化的情况貌似比较复杂,自己找找资料。实在不行就找到右上角最大化按钮的句柄然后点击
VB code
Option Explicit

Private Declare Function FindW……
点最大化按钮和双击标题栏效果一样的,所以发送个双击的消息即可。
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName 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 Const WM_LBUTTONDBLCLK = &H203

Private Sub Command1_Click()
    Dim hWnd As Long
    hWnd = FindWindow("TTPlayer_PlayerWnd", vbNullString)
    SendMessage hWnd, WM_LBUTTONDBLCLK, 0, 0
End Sub