Application
描述
Application类提供在AgentBay云环境中管理应用程序的方法,包括列出已安装的应用程序、启动应用程序以及停止运行中的进程。
方法 | 说明 | 环境 | ||||
ComputerUseLinux | ComputerUseWindows | BrowserUse | MobileUse | CodeSpace | ||
| 获取已安装应用列表(支持过滤开始菜单、桌面快捷方式,可排除系统应用) | 不支持 | 支持 | 不支持 | 支持 | 不支持 |
| 列出所有有可见窗口的应用程序 | 不支持 | 支持 | 不支持 | 不支持 | 不支持 |
| 启动指定应用(支持工作目录设置,Android平台支持Activity指定) | 不支持 | 支持 | 不支持 | 支持 | 不支持 |
| 通过进程名终止应用 | 不支持 | 支持 | 不支持 | 不支持 | 不支持 |
| 通过进程ID终止应用 | 不支持 | 支持 | 不支持 | 不支持 | 不支持 |
| 通过命令终止应用进程 | 不支持 | 支持 | 不支持 | 支持 | 不支持 |
属性
属性名(Property) | 说明(Description) |
Name | 应用名称 |
StartCmd | 启动命令 |
StopCmd | 停止命令(可选) |
WorkDirectory | 工作目录(可选) |
PName | 进程名称 |
PID | 进程ID |
CmdLine | 命令行参数(可选) |
方法
GetInstalledApps
- 获取已安装的应用程序
Golang
func (am *ApplicationManager) GetInstalledApps(includeSystemApps bool, includeStoreApps bool, includeDesktopApps bool) (*InstalledAppsResult, error)
参数:
includeSystemApps(bool):是否包含系统应用。
includeStoreApps(bool):是否包含商店应用。
includeDesktopApps(bool):是否包含桌面应用。
返回值:
*InstalledAppsResult
:包含已安装应用程序列表和请求ID的结果对象。error
:若操作失败,返回错误信息。
InstalledAppsResult 结构体:
type InstalledAppsResult struct {
RequestID string // 调试用的唯一请求标识符
Apps []*InstalledApp // 已安装的应用程序数组
}
type InstalledApp struct {
Name string // 应用名称
Path string // 应用路径
Version string // 应用版本
Description string // 应用描述
}
Python
def get_installed_apps(
self,
include_system_apps: bool = True,
include_store_apps: bool = False,
include_desktop_apps: bool = True
) -> List[InstalledApp]:
参数:
include_system_apps(bool,可选):是否包含系统应用。默认为
True
。include_store_apps(bool,可选):是否包含商店应用。默认为
False
。include_desktop_apps(bool,可选):是否包含桌面应用。默认为
True
。
返回值:
List[InstalledApp]
:已安装的应用程序列表。
异常:
ApplicationError
:若获取已安装应用程序失败,引发错误。
TypeScript
async getInstalledApps(
includeSystemApps: boolean = true,
includeStoreApps: boolean = false,
includeDesktopApps: boolean = true
): Promise<InstalledApp[]>
参数:
includeSystemApps(boolean,可选):是否包含系统应用。默认为
true
。includeStoreApps(boolean,可选):是否包含商店应用。默认为
false
。includeDesktopApps(boolean,可选):是否包含桌面应用。默认为
true
。
返回值:
Promise<InstalledApp[]>
:返回已安装应用程序列表的Promise。
异常:
APIError
:若获取已安装应用程序失败,抛出错误。
StartApp
- 启动应用程序
Golang
func (am *ApplicationManager) StartApp(startCmd string, workDirectory string) (string, error)
参数:
startCmd(string):启动应用程序的命令。
workDirectory(string):应用程序的工作目录。
返回值:
string
:包含启动进程列表的JSON字符串。error
:若操作失败,返回错误信息。
Python
def start_app(self, start_cmd: str, work_directory: str = "") -> List[Process]:
参数:
start_cmd启动应用程序的命令。
work_directory(str,可选):应用程序的工作目录。默认为空字符串。
返回值:
List[Process]
:启动的进程列表。
异常:
ApplicationError
:若启动应用程序失败,引发错误。
TypeScript
async startApp(startCmd: string, workDirectory: string = ""): Promise<Process[]>
参数:
startCmd(string):启动应用程序的命令。
workDirectory(string,可选):应用程序的工作目录。默认为空字符串。
返回值:
Promise<Process[]>
:返回启动进程列表的Promise。
异常:
APIError
:若启动应用程序失败,抛出错误。
StopAppByPName
- 按进程名停止应用程序
Golang
func (am *ApplicationManager) StopAppByPName(pname string) (string, error)
参数:
pname(string):要停止的进程名称。
返回值:
string
:操作成功时的提示信息。error
:若操作失败,返回错误信息。
Python
def stop_app_by_pname(self, pname: str) -> bool:
参数:
pname(str):要停止的进程名称。
返回值:
bool
:操作成功时返回True
,否则返回False
。
异常:
ApplicationError
:若停止应用程序失败,引发错误。
TypeScript
async stopAppByPName(pname: string): Promise<boolean>
参数:
pname(string):要停止的进程名称。
返回值:
Promise<boolean>
:操作成功时返回true
,否则返回false
。
异常:
APIError
:若停止应用程序失败,抛出错误。
StopAppByPID
- 按进程 ID 停止应用程序
Golang
func (am *ApplicationManager) StopAppByPID(pid int) (string, error)
参数:
pid(int):要停止的进程ID。
返回值:
string
:操作成功时的提示信息。error
:若操作失败,返回错误信息。
Python
def stop_app_by_pid(self, pid: int) -> bool:
参数:
pid(int):要停止的进程ID。
返回值:
bool
:操作成功时返回True
,否则返回False
。
异常:
ApplicationError
:若停止应用程序失败,引发错误。
TypeScript
async stopAppByPid(pid: number): Promise<boolean>
参数:
pid(number):要停止的进程ID。
返回值:
Promise<boolean>
:操作成功时返回true
,否则返回false
。
异常:
APIError
:若停止应用程序失败,抛出错误。
StopAppByCmd
- 按停止命令停止应用程序
Golang
func (am *ApplicationManager) StopAppByCmd(stopCmd string) (string, error)
参数:
stopCmd(string):用于停止应用程序的命令。
返回值:
string
:操作成功时的提示信息。error
:若操作失败,返回错误信息。
Python
def stop_app_by_cmd(self, stop_cmd: str) -> bool:
参数:
stop_cmd(str):用于停止应用程序的命令。
返回值:
bool
:操作成功时返回True
,否则返回False
。
异常:
ApplicationError
:若停止应用程序失败,引发错误。
TypeScript
async stopAppByCmd(stopCmd: string): Promise<boolean>
参数:
stopCmd(string):用于停止应用程序的命令。
返回值:
Promise<boolean>
:操作成功时返回true
,否则返回false
。
异常:
APIError
:若停止应用程序失败,抛出错误。
ListVisibleApps
- 列出可见的应用程序
Golang
func (am *ApplicationManager) ListVisibleApps() (*VisibleAppsResult, error)
返回值:
*VisibleAppsResult
:包含可见进程列表和请求ID的结果对象。error
:若操作失败,返回错误信息。
VisibleAppsResult 结构体:
type VisibleAppsResult struct {
RequestID string // 调试用的唯一请求标识符
Processes []*Process // 可见进程数组
}
type Process struct {
PName string // 进程名称
PID int // 进程 ID
}
Python
def list_visible_apps(self) -> List[Process]:
返回值:
List[Process]
:可见的进程列表。
异常:
ApplicationError
:若列出可见应用程序失败,引发错误。
TypeScript
async listVisibleApps(): Promise<Process[]>
返回值:
Promise<Process[]>
:返回可见进程列表的Promise。
异常:
APIError
:若列出可见应用程序失败,抛出错误。
应用程序管理示例
Golang
package main
import (
"fmt"
"log"
)
func main() {
// 创建会话
agentBay := agentbay.NewAgentBay("your-api-key")
sessionResult, err := agentBay.Create(nil)
if err != nil {
log.Fatal(err)
}
session := sessionResult.Session
// 获取已安装的应用程序
appsResult, err := session.Application.GetInstalledApps(true, false, true)
if err != nil {
log.Printf("Error getting installed apps: %v", err)
} else {
for _, app := range appsResult.Apps {
fmt.Printf("Application: %s\n", app.Name)
}
}
// 启动应用程序
processesResult, err := session.Application.StartApp("/usr/bin/google-chrome-stable", "")
if err != nil {
log.Printf("Error starting app: %v", err)
} else {
var processes []Process
_ = json.Unmarshal([]byte(processesResult), &processes)
for _, process := range processes {
fmt.Printf("Started process: %s (PID: %d)\n", process.PName, process.PID)
}
}
// 列出可见的应用程序
visibleResult, err := session.Application.ListVisibleApps()
if err != nil {
log.Printf("Error listing visible apps: %v", err)
} else {
for _, app := range visibleResult.Processes {
fmt.Printf("Visible application: %s (PID: %d)\n", app.PName, app.PID)
}
}
// 按 PID 停止应用程序
if len(processes) > 0 {
success, err := session.Application.StopAppByPID(processes[0].PID)
if err != nil {
log.Printf("Error stopping app: %v", err)
} else {
fmt.Printf("Application stopped: %s\n", success)
}
}
}
TypeScript
import { AgentBay } from 'wuying-agentbay-sdk';
// 初始化 SDK
const agentBay = new AgentBay({ apiKey: 'your_api_key' });
// 获取已安装的应用程序
async function getApplications() {
try {
const apps = await agentBay.application.getInstalledApps();
console.log(`Found ${apps.length} applications:`);
apps.forEach(app => {
console.log(`Name: ${app.name}, Start Cmd: ${app.start_cmd}`);
});
} catch (error) {
console.error('Error retrieving applications:', error);
}
}
// 启动应用程序
async function startApplication() {
try {
const processes = await agentBay.application.startApp('/usr/bin/google-chrome-stable');
console.log(`Started ${processes.length} processes:`);
processes.forEach(p => {
console.log(`Process Name: ${p.pname}, PID: ${p.pid}`);
});
} catch (error) {
console.error('Error starting application:', error);
}
}
// 按 PID 停止应用程序
async function stopApplicationByPID() {
try {
const success = await agentBay.application.stopAppByPid(12345);
if (success) {
console.log('Application stopped successfully.');
} else {
console.log('Failed to stop application.');
}
} catch (error) {
console.error('Error stopping application:', error);
}
}
// 列出可见的应用程序
async function listVisibleApplications() {
try {
const visibleApps = await agentBay.application.listVisibleApps();
console.log(`Visible applications: ${visibleApps.length}`);
visibleApps.forEach(app => {
console.log(`Name: ${app.pname}, PID: ${app.pid}`);
});
} catch (error) {
console.error('Error listing visible applications:', error);
}
}