🧵 Start đơn luồng & đa luồng
Hai URL, cùng body:
POST /api/v1/scripts/{name}/start
POST /api/v1/scripts/{name}/start-mt
Content-Type: application/jsonstart-mtbắt buộc cówindows/hwnd/process/title/windowhoặcuse_saved_multithread: true. Nếu không resolve được cửa sổ →409 no_windows.startkhông truyền cửa sổ → chạy 1 job (giống nút Chạy, không bật đa luồng). Nếu file đó đã có job →409 already_running(trừ khiforce: truehoặc bạn truyền cửa sổ để mở thêm luồng).
Body
Mọi field đều tuỳ chọn, trừ start-mt như trên.
{
"variables": {
"taikhoan": "acc01",
"matkhau": "secret"
},
"hwnd": 198764,
"title": "LDPlayer-1",
"process": "dnplayer.exe",
"window": { "hwnd": 198764, "title": "LDPlayer-1", "process": "dnplayer.exe" },
"windows": [
{ "hwnd": 198764, "title": "LDPlayer-1", "process": "dnplayer.exe" },
{ "hwnd": 198900, "title": "LDPlayer-2", "process": "dnplayer.exe" }
],
"max_threads": 2,
"arrange": true,
"use_saved_multithread": false,
"force": false
}| Field | Ý nghĩa |
|---|---|
variables | Biến custom — ghi đè giá trị đã lưu ở nút Cài đặt kịch bản. Thiếu key thì lấy giá trị đã lưu trên UI. Dùng {taikhoan} trong node Gõ phím / HTTP… Khai báo tên trên node Bắt đầu — xem Khai báo biến. |
hwnd | Bind một cửa sổ |
title / process | Tìm cửa sổ (title chứa + process). Nếu không có windows[], API liệt kê mọi cửa sổ khớp rồi chạy đa luồng. |
window | Một object {hwnd, title, process} |
windows | Danh sách cửa sổ (ưu tiên). Resolve giống UI đa luồng: HWND còn sống → title đúng + process → title chứa nếu khớp duy nhất. |
max_threads | 1–8, không vượt slot trống (tối đa 16 toàn cục). Bỏ trống: = số cửa sổ (đã kẹp 8) hoặc giá trị đã lưu trên UI nếu use_saved_multithread. |
arrange | Mặc định true khi có cửa sổ — xếp cửa sổ trên màn hình rồi chạy. |
use_saved_multithread | true = dùng danh sách cửa sổ / số luồng đã tick trong Cài Đặt Đa Luồng trên UI. |
force | start đơn luồng: bỏ qua already_running của chính file đó (vẫn không chạy 2 job không bind HWND). |
Khi start, engine gắn forced_hwnd / title / process vào runner: node Chọn App không nhảy sang cửa sổ khác. Biến {app_title}, {app_process}, {client_w}, {client_h} lấy từ cửa sổ đó.
Response 200
{
"ok": true,
"message": "started",
"name": "DemoFlow",
"path": "D:\\...\\DemoFlow.apc",
"mode": "multithread",
"started": [
{
"job_id": "a1b2c3d4e5f6",
"hwnd": 198764,
"title": "LDPlayer-1",
"process": "dnplayer.exe",
"instance_key": "hwnd:198764"
}
],
"queued": [
{ "hwnd": 198900, "title": "LDPlayer-2", "process": "dnplayer.exe" }
],
"skipped": [
{ "hwnd": 199000, "title": "LDPlayer-3", "reason": "already_running" }
],
"running_count": 1,
"jobs": [],
"slots_used": 1,
"slots_max": 16,
"threads_max": 8
}| Field | Ý nghĩa |
|---|---|
mode | single hoặc multithread |
started | Job vừa launch (có job_id) |
queued | Còn cửa sổ, sẽ tự start khi có slot / khi luồng khác xong (hàng đợi API, giống UI). Chỉ sống khi app còn mở — restart app = mất hàng đợi. |
skipped | Bỏ qua (đang chạy, lỗi start…) |
Nếu started rỗng và không start được → HTTP 409/500, xem mã lỗi.
Giống / khác UIGiống: bind HWND, xếp cửa sổ, max 8/16, hàng đợi. Khác: API không bật lịch hẹn giờ;
variables chỉ ghi đè biến, không sửa file .apc.