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

Obsidian 多裝置同步最終版

最近慢慢把筆記主力改到 Obsidian,主要的原因還是最近的 AI 浪潮,幻想以後可以用 CLI 的 AI 工具來快速處理這些筆記。但 Obsidian 有個很大的麻煩是不同裝置間的同步,如果要省事,去訂閱官方的 Obsidian Sync 就 ok,不過我就是想省錢嘛!就得想辦法解決同步的問題。這篇就整理一下我最近試用了一些 Obsidian 同步方案的過程。

Keep Reading

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

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

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

Keep Reading

2026 紐西蘭 北島 D1

大約在一個禮拜前,收到紐航通知,我們回程的班機因為他們員工罷工的關係被取消了,一開始還不清楚會怎麼改,過了一天後,通知國內線改飛基督城、國際線改飛新加坡轉機,雖然新航班回到台灣的時間差不多,但變成我要損失奧克蘭的機場飯店、變成紅眼航班,還多一次轉機,實在不爽,重訂新的機票,多出來的一天就在奧克蘭玩。

因為沒有交通工具,所以只能搭機場巴士到市中心,反正之前也沒去過海事博物館,剛好也看到他們有帆船出航的行程,線上訂位也還有票,快速的在機場巴士上處理一下,現在的網路真方便。

帆船出航也是蠻特別的,一開始先用引擎把船開到港外,然後把帆張開,風就會把船帶著跑,這時引擎關掉無動力航行,非常安靜但又快速前進,奇妙的感覺。我們運氣也不錯,帆船一天才兩班,下午的就因為天氣變差而取消了。搭完船把海事博物館逛了一下,還好,主要還是搭帆船好玩。

下午時間有限,沿著 Queen Street 走回 Sky Tower 搭機場巴士,這段路也是之前沒逛過的。

基本上這趟旅程大致就這樣,很幸運的把之前的遺珠——冰川健行、跳傘——完成,還多划了 Kayak、搭百年蒸氣船、帆船,看了小藍企鵝,想看想玩的好像差不多了,短時間應該不會再來紐西蘭了吧!

2026 紐西蘭 南島 D9

今天要還車和搭飛機回北島,時間有限,早上到 Oamaru 舊城區逛了一下,吃個早午餐。天氣不好,下小毛雨,應該是上次來天氣太好,才會讓我誤以為紐西蘭都是晴天。

因為行程沒排好,要把車開回 Dunedin 搭飛機,途中只停留一個沒什麼人的小海灘,讓小孩下去玩玩沙。

已經比較熟悉他們的機場還車過程,把車停到公司的車格裡,鑰匙給他們,問一下有加滿油和有無事故,一切都是信任制度,他們也不檢查。小孩特別跟他們說車頂有很多海鷗鳥屎,他們笑笑說沒關係。

這次十天開了 1500 公里,沒出什麼特別的事,對行駛圓環也比較熟悉了。

回到奧克蘭後入住機場飯店,到目前為止都是在規劃中的行程,但明天就是很大的意外了。

2026 紐西蘭 南島 D8

昨晚看企鵝太累,今天就睡到飽。早上到 Dunedin 市中心去晃晃,看了教堂和車站,順便吃中餐。

下午先去看世界最陡住宅區街道 Baldwin Street,當成爬個小山。之後往 Oamaru 前進,途中在 Moeraki Boulders 停留,主要是看海灘的石頭,結果發現這裡的沙灘很平緩,就像天空鏡。後來在咖啡廳喝下午茶休息。這個景點讓我想到花蓮的一些景點,其實風景不輸紐西蘭,但發展的就是沒人家好,蠻可惜的。

提早到 Holiday Park check in, 趁晚上看企鵝前的空檔整理一下行李。

晚餐去 Oamaru 鎮上吃了一家不錯的泰式料理。

Oamaru 的小藍企鵝離市區近多了,可以提早進去會場坐,分一般位和 Premium 座位,Premium 位比較看不到企鵝跳上岸,但可以很近的看到他們跑回家,另外座位也舒適一些,建議還是買 Premium 位。這裡的觀賞方式很嚴格,不能用手機相機,連發出較大的聲音都會被警告,要不是昨天已經拍個過癮,只能看不能拍會覺得有點可惜。如果只能選一場,我會推薦 Dunedin 的。

2026 紐西蘭 南島 D7

今天基本上是趕路行程,早上也不能睡太晚。一路從皇后鎮開到 Dunedin, 途中經過高空彈跳的發源地,下去觀賞了一下。其實最開始是想要玩高空彈跳的,但後來決定跳傘後就不想了,所以看別人跳就好。

開到 Dunedin 要參加野生動物遊覽船,不過搞錯報到地點,應該是直接前往碼頭,不是到市區的辦公室 check in, 導致趕不上原本預定的班次,不過他們馬上調整成後一個班次,還是有搭到船。感覺有點像花蓮的賞鯨船,船長搜尋好目標,把船開到岸邊或海上,可以看到一些海獅、海豹,海鷗一大堆就不提了,還可以看到信天翁,蠻特別的。不過船上的汽油味很重,加上小船搖晃,頭暈暈的。

晚上參加小藍企鵝的導覽團,因為它們要到日落時間才會上岸歸巢,所以導覽的時間也很晚,8點半開始,先講解30分鐘,再慢慢走到海邊的觀景平台等日落,陸續會有一批一批的小藍企鵝從海中遊回來爬上岸,比較奇怪的是,他們也不馬上躲回巢穴,而是在山坡集結,走路和跳躍呆頭呆腦的,很可愛。不過這個行程的缺點是太遠太晚,從 Otago 半島開回露營區已經十一點,洗澡洗衣等等都太晚了。

2026 紐西蘭 南島 D6

早上原本預定熱氣球,五點要起床,不過因為天候取消了,不算非常可惜,因為這幾天實在太累,寧可回去睡回籠覺。早上的空檔就去搭 Shotover Jet, 第二次搭,比較沒有新鮮感。

中午趁遊客較少,再去吃一次著名的 Furgburger, 雖然店裡有不少排隊,但感覺非亞洲面孔的遊客,似乎都偏好外帶,所以蠻容易找到位子內用的。

下午讓夫人和小孩去體驗一下室內的 i Fly, 我跳過真的,就不玩了。其實在旁邊看也蠻有趣的,感覺和真的跳應該很不同,訓練一下俯臥是的平衡感,或許還是可以試試。

晚上搭 TSS 百年蒸氣船去湖對岸的農場用餐和看綿羊秀,蒸氣船的引擎和鍋爐就在眼前,感受燒紅的木炭發出陣陣熱氣,很新奇。

半夜在露營區拍星星,這應該是這趟來最晴朗的一晚了,夏季白天的時間太長,想拍星星就要等好晚,而且運氣也沒有冬天來的時候好。

2026 紐西蘭 南島 D5

昨天下午本來想去 Wanaka 湖划 Kayak,但店家說風太大,不開放租借,而且根據氣象預報,今天的風也會很大,原本已經放棄划船的念頭,打算今天改去健行,不過看完孤獨樹後,小孩還是想去問問 Kayak,意外可以租,就租來划一小時,本來是想租一艘單人、一艘雙人,但店家說單人的容易翻船,不建議新手划,所以後來只租一艘雙人的。

和一般小船划起來感覺不同,很貼近水面,水花也容易潑到身上,重心不穩,的確在後半段開始起風後,有幾個大浪差點打翻,而且後來我們離岸邊太近,被沖到岸上卡住,幸好有好心路人救援,下半身都浸濕,蠻狼狽的,不過還算蠻值得的體驗。而且也算幸運,後來風浪大了,店家就不租給後來的客人了。

下午一路開車到 Queenstown,走了上次露營車不能走的 Crown Range Rd., 看了胸罩圍欄,逛了上次沒逛到的 Arrowtown,然後就是 Queenstown 的瘋狂購物。還不錯,都是上次沒有玩到和逛到的地方。