感悟网 导航

VB 切换到指定的应用程序上 VB中如何切换到其它运行中的程序

作者&投稿:晋光 (若有异议请与网页底部的电邮联系)
VB点击按钮切换到其他程序~

这是一个根据窗口标题用枚举法模糊查找一个匹配的窗口句柄,并将该句柄指向的窗口呼出前台。为了能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

语句:Process.Start(Path) ' Path 是要打开的程序的路径

用AppActivate其实挺容易实现的,代码如下

-------------------------------------------------------------------
'一个窗体,一个textbox,一个cmdButton,textbox内填写你要切换的程序窗口标题,比如说“PopKart Client”或者“诛仙” (注意不含引号)

'以下是代码
Private Sub Command1_Click()
Dim MyAppID, ReturnValue '调用AppActivate
If Text1.Text = "" Then '防止出现空字符串
MsgBox "请填写窗口标题"
Else: AppActivate Text1.Text '将制定的窗口激活
End If
End Sub

'在VB6.0下调试通过,另外在我的网盘www.hankcs.ys168.com里面有工程文件

------------------------------------------------------
你也可以看看相关的教程:
激活一应用程序窗口。

语法

AppActivate title[, wait]

AppActivate 语句的语法具有以下几个命名参数:

部分 描述
title 必需的。字符串表达式,所要激活的应用程序窗口的标题。可以使用 Shell 函数返回的任务识别码来替换 title,以激活应用程序。
wait 可选的。Boolean 值,说明在激活另一个应用程序之前调用的应用程序是否有焦点。如果为 False(缺省),那么,即使调用的应用程序没有焦点,也直接激活指定的应用程序。如果为 True,则调用的应用程序会等到有焦点后,才激活指定的应用程序。

说明

AppActivate 语句将焦点移动到命名的应用程序或窗口,但并不影响焦点是否最大化或最小化。当用户采取行动改变焦点或将窗口关闭时,就会将焦点从活动的应用程序窗口移动出去。可用 Shell 函数启动一个应用程序并设置窗口样式。

在决定激活哪个应用程序时,请将 title 与每一个运行中的应用程序的标题字符串进行比较。如果没有完全匹配,就激活任何这样的应用程序,其标题字符串以 title 开头。如果以 title 命名的应用程序有很多实例,则激活任何一个实例。

--------------------------------------------------------------------------------

AppActivate 语句示例
本示例说明使用 AppActivate 语句来激活应用程序的各种用法。示例中用到的 Shell 语句均假定该应用程序已经存在指定的路径中。

Dim MyAppID, ReturnValue
AppActivate "Microsoft Word" ' 激活 Microsoft
' Word。

' AppActivate 也可利用 Shell 函数的返回值。
MyAppID = Shell("C:\WORD\WINWORD.EXE", 1) ' 运行 Microsoft Word。
AppActivate MyAppID ' 激活 Microsoft
' Word。

' 您也可使用 Shell 函数的返回值。
ReturnValue = Shell("c:\EXCEL\EXCEL.EXE",1) ' 运行 Microsoft Excel。
AppActivate ReturnValue ' 激活 Microsoft
' Excel。

--------------------------------------------------------------------------------

相关基础知识:

命名参数
一参数,在对象库中预先定义了其名称。对每个参数,不必拘泥于语法所规定的特定顺序来提供值,而是只需按任何顺序用命名参数分配值。例如,假设一方法接受了三个参数:

DoSomeThing namedarg1, namedarg2, namedarg3

在对命名参数赋值时,可使用以下语句:

DoSomeThing namedarg3 := 4, namedarg2 := 5, namedarg1 := 20

注意,命名的参数不必按语法中安排的正规顺序出现。

字符串表达式
任何其值为一连串字符的表达式。字符串表达式的元素可包含返回字符串的函数、字符串文字、字符串常数、字符串变量、字符串 Variant 或返回字符串 Variant (VarType 8) 的函数。

Boolean 数据类型
只有两种值的数据类型,这两种值分别为 True(-1) 或 False(0)。布尔变量是以 16 位 ( 2 字节 ) 数字存储的。
----------------------------------------------

呵,如果是可执行程序的话,就用下面的:
shell (pathname,Windowstyle)例如我要打开暴风影音,
Private Sub Command1_Click()
Shell "C:\Program Files\StormII\Storm.exe", 1
end sub

如果不是可执行程序,你就要指定找开此文件的程序,如我要打开C盘上的一个叫123.txt的文件,
Private Sub Command1_Click()
Shell "notepad.exe C:\123.txt", 1
end sub

shell "d:\哈哈.exe"

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网