AppActivate 函数

更新:2007 年 11 月

激活已经运行的应用程序。

Public Overloads Sub AppActivate( _
      ByVal { Title As String | ProcessId As Integer } _
)

参数

  • Title
    String 表达式,指定要激活的应用程序的标题栏中的标题。您可以使用应用程序启动时分配给应用程序的标题。

  • ProcessId
    Integer,指定分配给此进程的 Win32 进程 ID 号。您可以使用 Shell 函数返回的 ID,只要它不是零即可。

异常

异常类型

错误号

条件

ArgumentException

5

未找到 Title 或 ProcessId。

如果正在升级使用无结构错误处理的 Visual Basic 6.0 应用程序,请参见“错误号”一列。(您可以根据 Number 属性(Err 对象)比较错误号。)然而,如果可能,应当考虑用 Visual Basic 的结构化异常处理概述替换这种错误控制。

备注

可使用 AppActivate 使应用程序的活动窗口进入焦点。您可能没有活动窗口的句柄或引用,或者甚至不知道在给定时刻哪个窗口是活动的。在这种情况下,您不能使用 Focus 方法。

AppActivate 函数将焦点更改到指定的应用程序或窗口,但并不影响它是最大化还是最小化。当用户执行某个操作改变焦点或将窗口关闭时,焦点将从激活的应用程序窗口移走。可使用 Shell 函数启动一个应用程序并设置窗口样式。

如果使用 Title 参数,则 AppActivate 使用不区分大小写的比较,但要求精确匹配标题栏的内容。它首先查找顶级窗口,然后查找子窗口。如果它找不到匹配项,则引发 ArgumentException

只能对具有窗口的进程使用 AppActivate。大多数控制台应用程序都不具有窗口,这意味着它们不包含在 AppActivate 搜索的进程列表中。从控制台应用程序运行时,系统会创建独立的进程以运行应用程序,并将输出返回控制台进程。因此,当您请求当前进程 ID 时,将获得此独立进程的进程 ID,而不是控制台应用程序的进程 ID。

在运行时,AppActivate 函数激活任何标题与 Title 匹配或进程 ID 与 ProcessId 匹配的正在运行的应用程序。如果没有完全匹配项,则该函数激活其标题字符串以 Title 结尾的任何应用程序。如果有多个应用程序名为 Title,则 AppActivate 函数随机激活一个应用程序。

说明:

AppActivate 函数需要 SafeTopLevelWindows 级别的 UIPermission,这可能会对它在部分信任情况下的执行产生影响。有关更多信息,请参见请求权限UIPermission Class

示例

本示例说明了用 AppActivate 函数来激活应用程序窗口的各种用法。如果当前没有运行记事本进程,本示例将引发 ArgumentException。Shell 过程假定应用程序位于指定的路径中。

Dim notepadID As Integer
' Activate a running Notepad process.
AppActivate("Untitled - Notepad") 
' AppActivate can also use the return value of the Shell function.
' Shell runs a new instance of Notepad.
notepadID = Shell("C:\WINNT\NOTEPAD.EXE", AppWinStyle.NormalFocus)
' Activate the new instance of Notepad.  
AppActivate(notepadID)

智能设备开发人员说明

不支持此函数。

要求

命名空间:Microsoft.VisualBasic

**模块:**Interaction

**程序集:**Visual Basic 运行库(在 Microsoft.VisualBasic.dll 中)

请参见

参考

Shell 函数

Focus

ArgumentException