全部產品
Search
文件中心

AgentBay:Application

更新時間:Sep 18, 2025

描述

Application類提供在AgentBay雲環境中管理應用程式的方法,包括列出已安裝的應用程式、啟動應用程式以及停止運行中的進程。

方法

說明

環境

ComputerUseLinux

ComputerUseWindows

BrowserUse

MobileUse

CodeSpace

get_installed_apps

擷取已安裝應用列表(支援過濾開始菜單、案頭捷徑,可排除系統應用)

不支援

支援

不支援

支援

不支援

list_visible_apps

列出所有有可見視窗的應用程式

不支援

支援

不支援

不支援

不支援

start_app

啟動指定應用(支援工作目錄設定,Android平台支援Activity指定)

不支援

支援

不支援

支援

不支援

stop_app_by_pname

通過進程名終止應用

不支援

支援

不支援

不支援

不支援

stop_app_by_pid

通過進程ID終止應用

不支援

支援

不支援

不支援

不支援

stop_app_by_cmd

通過命令終止應用進程

不支援

支援

不支援

支援

不支援

屬性

屬性名稱(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);
  }
}