2009年12月18日 星期五

改造 Taglocity 3.0 Tag Bar (3) ---- 即時更新

改造 Taglocity 3.0 Tag Bar (2) ---- 反映標籤狀態, 只能做到『一次性』的反映標籤狀態。接下來, 要加入『即時更新』的功能。

以下方法各有優缺點, 也不確定是否適合每個人的使用情境, 所以重點放在優缺點的討論 :

.

即時更新 Tag Bar 來 反映標籤狀態

『即時更新』可以用『定時重複執行』或是『觸發執行』來實現,

  • Outlook VBA 並沒有原生的『定時重複執行』功能, 不過 rockman 在 outlookcode.com (2004-12-07) 提出用 user32 函式庫的 SetTimer 和 KillTimer 的方法, 也提到『必須注意有可能當機』

2) If you don't deactivate the timer when the application closes it will likely crash

  • 實作上, 將 Timer 設定成 1~2 秒就夠用了

.

方法

優缺點

定時執行 SetTimer (User32)

@ 前提 : 對 VB 有相當的把握
O 優點 :
  • 只需要一個觸發條件
X 缺點 :
  • 開啟 Outlook 會有巨集警告
  • 容易當機 (Outlook 直接終止)
  • 和其他 Outlook 改造存在相容性的問題需要克服
事件觸發方式,
例如 : Catch all events on a folder (outlookcode.com)


(尚未實作)
O 優點
  • 使用 Outlook 本身的 VBA 功能
X 缺點 :
  • 開啟 Outlook 可能會有巨集警告
  • 必需找到適當的觸發方式, 可能要捕獲不只一個事件
以 AutoHotKey 觸發

@ 前提 :
需要有 AutoHotKey  經驗

O 優點
  • 容易增加判斷條件, 例如 : Outlook 是否為作用中的視窗 ……
X 缺點 :
  • 不是 Outlook 原生, 不見得容易移植

.

AutoHotKey 串連 Outlook 實現自動化

2009-10-10_170220

最後, 目前完成度最高的, 是『AutoHotKey 串連 Outlook』

  • 使用 AutoHotKey 的 SetTimer 來定時觸發
  • 檢查 Outlook 是否為作用中的視窗, 而且螢幕上有 TagBar
  • 使用 AutoHotKey COM Standard Library 來呼叫 反映標籤狀態 的 Outlook 函數, 也就是 COM_Invoke(poul, "updateTagBar")
	COM_Init()
poul := COM_CreateObject("Outlook.Application")
' ... (此處最好有容錯處理)
ol_func := COM_Invoke(poul, "updateTagBar")
' ... (此處最好有容錯處理)
COM_Release(ol_func)
COM_Release(poul)
COM_Term()


.


0 意見:

發表您的回應

張貼留言