VB点击按钮切换到其他程序
一个记事本问窗口,一个VB程序窗口,点击VB程序窗口中的按钮能将记事本窗口为当前状态,不要模拟ALT+tab键,希望能100%选择的是记事本窗体。紧急,谢谢。...
一个记事本问窗口,一个VB程序窗口,点击VB程序窗口中的按钮能将记事本窗口为当前状态,不要模拟ALT+tab键,希望能100%选择的是记事本窗体。紧急,谢谢。
展开
4个回答
展开全部
这是一个根据窗口标题用枚举法模糊查找一个匹配的窗口句柄,并将该句柄指向的窗口呼出前台。为了能100%选择记事本窗体,应尽量提供完整的窗口标题,并确保窗口标题的唯一性,否则程序只会将第最后一个匹配的窗口呼出。
以下代码运行后点击按钮即将标题含有“记事本”的窗口转到当前状态。我都加了注释,你可以根据需要来修改:
'新建一个工程 _
'创建一个textbox:text1
'创建一个按钮:command1
'粘贴以下代码:
Private Sub Form_Load()
Text1 = "记事本"
End Sub
Private Sub Command1_Click()
If Text1 = "" Then Exit Sub
LHWND = 0 '枚举前为0,预防找不到时查错
EnumWindows AddressOf EnumWindowsProc, 0& '枚举第一个匹配的句柄
ShowWindow LHWND, SW_RESTORE '窗口被最小化时的呼出
SetForegroundWindow LHWND '设置为活动状态
If LHWND = 0 Then MsgBox "找不到匹配窗口标题的句柄!"
End Sub
添加一个模块粘贴以下代码:
添加一个模块粘贴以下代码:
添加一个模块粘贴以下代码:
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Public Const SW_RESTORE = 9
Public LHWND As Long
Public Function EnumWindowsProc(ByVal lngHwnd As Long, ByVal lParam As Long) As Boolean
Dim s As String * 255
GetWindowText lngHwnd, s, 255 '获得窗口标题文字
If InStr(s, Form1.Text1) <> 0 Then '判断是否匹配要查找的窗口的标题
LHWND = lngHwnd '得到匹配的窗口的句柄
End If
EnumWindowsProc = True
End Function
以下代码运行后点击按钮即将标题含有“记事本”的窗口转到当前状态。我都加了注释,你可以根据需要来修改:
'新建一个工程 _
'创建一个textbox:text1
'创建一个按钮:command1
'粘贴以下代码:
Private Sub Form_Load()
Text1 = "记事本"
End Sub
Private Sub Command1_Click()
If Text1 = "" Then Exit Sub
LHWND = 0 '枚举前为0,预防找不到时查错
EnumWindows AddressOf EnumWindowsProc, 0& '枚举第一个匹配的句柄
ShowWindow LHWND, SW_RESTORE '窗口被最小化时的呼出
SetForegroundWindow LHWND '设置为活动状态
If LHWND = 0 Then MsgBox "找不到匹配窗口标题的句柄!"
End Sub
添加一个模块粘贴以下代码:
添加一个模块粘贴以下代码:
添加一个模块粘贴以下代码:
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Public Const SW_RESTORE = 9
Public LHWND As Long
Public Function EnumWindowsProc(ByVal lngHwnd As Long, ByVal lParam As Long) As Boolean
Dim s As String * 255
GetWindowText lngHwnd, s, 255 '获得窗口标题文字
If InStr(s, Form1.Text1) <> 0 Then '判断是否匹配要查找的窗口的标题
LHWND = lngHwnd '得到匹配的窗口的句柄
End If
EnumWindowsProc = True
End Function
展开全部
给你个思路,自己试试去,记事本有自己的句柄,你在VB程序窗口中的按钮点下去将这个句柄调用。好久没用了,大体思路是这样。
追问
能不能给我个例子,我不知道怎么将该句柄为当前响应状态 我是会想不会写啊 急需类似的例子 谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub Command1_Click()
Shell "C:\WINDOWS\system32\notepad.exe", 1
End Sub
Shell "C:\WINDOWS\system32\notepad.exe", 1
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sendkeys
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询