Video: MacroPC.Net – Giới thiệu công cụ kéo thả
Mở trên YouTube ↗📊Biến tùy chỉnh & biến hệ thống
Trong ô chữ được engine thay thế, viết {ten_bien}. Lúc chạy, chuỗi đó bị thay bằng str(giá trị). Không có biến đó → giữ nguyên {ten_bien} (không xóa, không báo lỗi). Có thể kéo tên biến từ thanh biến dưới canvas vào ô.
Tên biến
[A-Za-z_][A-Za-z0-9_]*. Không khoảng trắng trong ngoặc. Phân biệt hoa thường: {User} ≠ {user}. Đừng đặt tên trùng phím Gõ: ENTER, TAB, CTRL…A. Biến đầu vào (node Bắt đầu)
- Node Bắt đầu → Properties → Biến đầu vào → mỗi dòng một tên (không giá trị).
- Lưu file
.apc. - Trang Kịch bản → bánh răng → tab Hẹn giờ & biến: mỗi tên thành một ô, điền giá trị.
- API Local:
"variables": { "taikhoan": "acc01" }ghi đè ô đã lưu; key không gửi thì giữ giá trị file settings. Chi tiết start / start-mt.
Giá trị nạp vào runner lúc Start job. Đổi ô Cài đặt không đổi job đang chạy.
B. Biến tạo trong luồng
| Ô trên Properties | Key | Mặc định | Ý nghĩa / cách dùng |
|---|---|---|---|
| Thêm Biến | set_var | — | Ô variable + từng dòng extra_vars. |
| Random | random_var | — | Mặc định rand_val. |
| OCR đọc | ocr | — | Ô variable (mặc định ocr_text) và luôn ghi thêm ocr_text. |
| Tìm chữ OCR | ocr_find | — | Ghi ocr_hit, match_x/y, match_found, match_score. |
| Đọc TXT | read_file | — | Mặc định file_text và luôn ghi thêm file_text. |
| Đọc Excel | read_excel | — | Mặc định excel_text và luôn ghi thêm excel_text. |
| HTTP | http_request | — | variable_response / variable_status; luôn http_response, http_status. JSON object phẳng: từng key + http_json. |
| Javascript | javascript | — | code có {excel_text}; stdout → js_result. Không ghi ngược ctx.vars. |
| Chụp ảnh | take_screenshot | — | Ghi last_screenshot (path PNG); đổi được tên biến lưu. |
| Tạo Folder | create_folder | — | Ghi last_folder (và biến tùy chọn). |
| Tạo File | create_file | — | Ghi last_file (và biến tùy chọn). |
| Stop Exe | stop_exe | — | Ghi stopped_process_count, stopped_process_pids. |
C. Biến hệ thống
| Ô trên Properties | Key | Mặc định | Ý nghĩa / cách dùng |
|---|---|---|---|
| Tiêu đề cửa sổ | app_title | — | Sau Chọn App / Start exe / bind đa luồng. Fullscreen = Toàn màn hình. |
| Tên process | app_process | — | Ví dụ dnplayer.exe. Fullscreen = virtual / primary. |
| Kích thước client | client_w / client_h | — | Vùng client (hoặc khung màn khi fullscreen) — tọa độ click/ảnh theo cái này. |
| OCR mặc định | ocr_text | — | Text OCR đọc. |
| Chữ vừa khớp | ocr_hit | — | Sau Tìm chữ OCR. |
| Tọa độ match | match_x / match_y | — | Tâm ảnh/chữ vừa khớp (client), trước offset click. |
| Điểm khớp | match_score | — | 0–1 (ảnh) hoặc độ tin cậy OCR find. |
| Có thấy | match_found | — | 0 hoặc 1 (Click/Check ảnh, Tìm chữ OCR). |
| Đọc file | file_text / excel_text | — | Bản sao kết quả đọc TXT / Excel. |
| HTTP | http_response / http_status | — | Body (chuỗi) và mã số. |
| Ảnh vừa chụp | last_screenshot | — | Path PNG sau node Chụp ảnh (luôn ghi thêm). |
| Folder / File vừa tạo | last_folder / last_file | — | Path sau Tạo Folder / Tạo File. |
| Stop Exe | stopped_process_count / pids | — | Số process và PID vừa dừng. |
UI còn http_body / http_query — chỉ khi chạy HTTP Server (node không có trên palette). Không hướng dẫn user thường.
D. Ô nào THAY {biến}
Chỉ những chỗ gọi format_message:
- Start exe / Stop Exe:
exe - Gõ phím:
text— sau đó mới parse{ENTER}{TAB}… - Loop:
times - Thêm Biến:
value, vế phải extra_vars - TXT / Folder / File / Xóa / Excel: path, sheet, cell, column, row, content
- Telegram:
message+photo_path(token/chat_id không template) - HTTP:
url,bodyvàheaders(cả ô có {biến}) - Javascript:
code— thay{excel_text}/{tên}; engine cũng injectexcel_text+ctx.vars - Screenshot: folder_path, filename_prefix
- Tìm chữ OCR:
text - Click / Vuốt / Scroll: tọa độ
xyx0… nhận số hoặc{match_x}
Ô KHÔNG thay
Tên biến lưu; Chọn App title/process; If OCR value (so sánh chuỗi thô); Telegram token/chat_id; Ghi chú; số click / threshold.
Gõ phím: {taikhoan}{TAB}{matkhau}{ENTER}
Telegram: Xong {app_title}, vàng={ocr_text}
Excel hàng = {app_title}
Javascript: console.log(String(excel_text).split('|')[0])