Browse Tag

AutoHotkey

AutoHotkey 實戰:RDP 斷線與鎖定 Session 下的 Windows UI 自動化突破(AutoWorklistUpdate 背景排程開發紀錄)

在臨床醫療自動化工作流中,為了隨時掌握放射科資訊系統 (Radiology Information System, RIS) 的待打報告工作清單 (Worklist) 狀態,我設計了一套整合自動化方案:

  1. 背景自動化推送 (Background Automation):透過 Windows 工作排程器 (Task Scheduler) 定時執行獨立的 AutoHotkey Utility 腳本,自動讀取並抓取 RIS 工作清單的未報告筆數。
  2. 資料庫儲存與整合 (Database Integration):將抓取到的工作清單狀態推送到 n8n Webhook,並利用 n8n Data Table 建立一個輕量級的小型資料庫來儲存最新數據。
  3. 隨時手動查詢 (On-demand Query):隨時透過 Telegram Bot 發送指令,手動讀取該 n8n 資料庫中的最新工作清單狀態。

設計此方案的初衷與痛點:
在日常臨床工作中,雖然可以直接透過 VPN 連回醫院主機並開啟 RDP 去查看工作清單,但醫院的 VPN 並非隨時隨地都方便連線;此外,每次開啟電腦、連線 VPN、開 RDP 登入查看的過程也相當耗時且繁瑣。因此,我希望能設計一個更輕量、能快速取得 Worklist 狀態的方案,讓我僅需透過手機 Telegram 發個訊息,就能在幾秒內掌握當前科內報告的累積狀況。

然而,在 Windows 環境下,當試圖在後台自動化 UI 時,遇到一個經典的棘手問題:本機運作完全正常,但只要透過遠端桌面 (Remote Desktop Protocol, RDP) 連線後直接關閉視窗(中斷連線),自動化 UI 便完全卡死或失效。

本文將以完整的時間軸與技術演進紀錄,回顧當初在 RisController 裡開發此功能的過程,深入分析 RDP 斷線後 UI 自動化失效的底層原因,並探討如何透過獨立運作的 AutoWorklistUpdate.v2.ahk 腳本與 UI Automation (UIA) 技術優化,完美突破此限制,實現 24/7 的穩定背景更新。

Keep Reading

NoduleTracker.ahk 開發日誌 (2026/1~3)

來 update 一下最近調整肺結節報告工具的心得,最近越來越覺得它是工作上不可或缺的存在了。

之前只定義了兩組視窗物件對應的 pattern,後來發現其實遠遠不止,陸續擴充到十組左右,雖然依序比對的速度應該也不慢,但還是希望可以盡可能在越前面的組別就 match 到,改用動態命中排序 (Dynamic Pattern Sorting),新增了 PatternStats.ini 統計機制,會記錄每種抓取模式的歷史命中次數,並在啟動時自動調整掃描順序。常用的模式會被排在最前面,大幅減少無效偵測的延遲。

Keep Reading

輔助肺結節 (Lung Nodule) 報告的 AHK 工具

作為放射科醫師,最磨人的工作之一莫過於處理 Lung Nodule (肺結節) 的追蹤報告。在目前的醫院文化中,許多微小、subpleural(肋膜下)的小點,甚至有些根本不具備結節特徵的影像,都被要求詳盡報告。最痛苦的是:你可能要在前後兩份 CT 影像中比對十幾個點,每顆都要手動標註位置、Series 與 Image 序號。

當你看到前一份報告長得像下面這樣,真的會暈倒:

Tiny nodules/GGOs in RUL (Ser/Img:4/13,14,17,20,23,27), RLL (Ser/Img:4/24,28,29,39,46), LUL (Ser/Img:4/13,17) and LLL (Ser/Img:4/24,50) of lung, up to 7mm in LUL. No significant interval change.

為了找回工作的快樂,我決定用 AutoHotkey (AHK) 開發一個小工具。目標很明確:看到 Nodule 時按一下快速鍵,自動紀錄影像位置,最後一鍵產出格式化的文字。

Keep Reading

在 AHK 以 Acc 控制 Chrome 裡的物件

之前有用 AutoHotKey 在網頁裡填寫表單資料,只是很簡單的 Send 文字,Tab 改變輸入格,Space 勾選 checkbox,然後再 Enter submit 表單,但不知道從哪一版的 Chrome 開始,沒辦法用 space 鍵來 toggle checkbox,只好每次勾選完後再手動送出,很不方便。

一開始想查有沒有其他鍵盤快速鍵可以 toggle checkbox, 查到的都是舊方法已經失效,後來發現這篇 “Re: Check if the checkbox is checked (in chrome)“,看到解決的契機,如果能用 AHK 來控制網頁裡的元件,除了能解決 toggle checkbox 的問題,還可以精準填寫資料到正確的 <input> 裡,不需預先點選輸入格,或點錯格造成自動化失敗。

Keep Reading

以 AutoHotKey 自訂 ShuttlePro v2 功能

ShuttlePro v2 通常是影音工作者在用的輸入工具,不過用在放射科醫師的閱片工作上也蠻不錯的,主要是它有個可以設定不同速率的外環, 扳著旋鈕就可以依照設定的速率滾動 CT 之類的影像,減少重複滾動滑鼠滾輪這個動作造成的職業傷害,但官方的設定程式其實有限制,重複的頻率沒辦法設得很細(如下圖),例如每秒兩次的下一級就是五次,再來就是十次,變化有點大,時間久了當然也習慣了,但總覺得不能細調有點可惜(我就想要每秒滾 2.5 次不行嗎?)

Keep Reading

用 AutoHotKey 偵測 Smart Card 讀卡機狀態

放在 Smart Card 讀卡機裡的醫事人員卡

因科內最近在注意報告的 24 小時簽章率,這個 KPI 要求正式報告發出後,在 24 小時內使用醫事人員卡做簽章動作的完成率。目前科裡最常遇到的情形是假日沒有帶卡回家,或是家裡電腦沒有讀卡機、沒有安裝背景簽章程式等等,導致未及時簽章。

有一個妥協的方式是,把報告先發成「初步報告」,臨床可以看到報告內容,而又不會造成 24 小時未簽章,等進辦公室可以正常簽章時,再改為正式報告。所以我在會議中便提議,是否直接在報告系統中去偵測,如果沒有插卡,便不讓使用者發正式報告,無奈遭到主管的反對,反對理由是「不可能!簽章系統不是我們做的,無法整合」,但真的一點辦法也沒有嗎?

Keep Reading

拷貝舊報告的介紹影片

今年一月的時候就把 SmartWonder(敝科的 radiology information system)裡用 AutoHotKey 做了一個開啓舊影像及複製報告的 extension 的雛形,期間陸陸續續又有一些小修改,上禮拜,某位主任把它拿去用,讓我又發現了一些小問題,所以下午替它做了些調整。

Keep Reading

  • 1
  • 2