pretty code

2020年12月17日 星期四

使用 wxWidgets 開發剪貼簿相關工具解決閱讀技術文件痛點

最近一直在閱讀技術文件,這份文件需要搭配某個實體服務,參照它服務裡面各個連結的相關資訊,才能有助於理解此份技術文件。由於它的資料都是 JSON 格式,參照某個項目時,可能需要再開啟相關的其他連結,故只能很克難的不斷複製,並在 Chrome 裡面新增視窗後貼上。

看了幾天後就覺得很阿雜,複製貼上還是小事,之後可能會不斷的開啟這些開啟過的連結,如果每次都是使用人工方式操作,勢必很沒效率。還好這樣的需求我很久以前就有類似的經驗,解決的方式也很簡單,就是去監控 Windows 剪貼簿的變化,只要剪貼簿的資料是我剛才複製的連結,就自動傳遞給 Chrome,Chrome 預設行為就是新開視窗,我就可以從 3 個操作步驟減少成 1 個操作步驟,減輕了不少人力。除此之外,我還可以把這些開啟的各個連結儲存下來,隨時有需要都可以再開啟,甚至不要用複製方式,直接用滑鼠點擊到該行連結,直接去觸發 Chrome 做事。

以前的程式是使用 BCB 6.0 個人版開發,目前手邊並沒有安裝該套軟體。於是便打算使用幾年以前曾經玩過的 wxWidgets 來開發此工具。雖然程式沒有超過 300 行,但還是找了一下資料,解決了一些問題。

1. 開啟 Adobe PDF Reader 遇到的剪貼簿問題。
2. 如何加上 wxDev-Cpp 沒有內建的 Windows Event。
3. 使用 wxWidgets 的 File IO。
4. 使用 wxWidgets 的 INI class。
5. 如何得知 wxTextCtl 點擊時的行數。

其中搞了我最久的就是問題 1,只要在 Adobe PDF Reader 裡面複製文字,就會讓我的程式觸發一個 Error 視窗,而這個視窗是因為程式嘗試要 GetData 而導致失敗。不論我用什麼關鍵字去 Google 查詢,找不到資料就是找不到,可見使用 wxWidgets 的人算是小眾。後來還是去看原始碼,發現它是使用 wxLogSysError 這個函數去彈出視窗,接著便是去找 wxLog 相關的說明文件,終於讓我發現可以使用 wxLog::EnableLogging(false) 來停止這個程式行為。

我終於可以從技術文件中鬆一口氣,雖然我私心認為這個規格不太會成為共通標準,但目前也只能且戰且走。

沒有留言: