描述
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);
}
}