我通過模擬快捷方式「cmd-shift-ctrl-4」激活了屏幕截圖。如何檢測屏幕截圖被取消?
CGEventRef keyEventDown = CGEventCreateKeyboardEvent(NULL,keyCode,true);
CGEventSetFlags(keyEventDown,flags);
CGEventRef keyEventUp = CGEventCreateKeyboardEvent(NULL, keyCode, false);
CGEventSetFlags(keyEventUp,flags);
CGEventPost(kCGSessionEventTap, keyEventDown);
CGEventPost(kCGSessionEventTap, keyEventUp);
並設置NSTimer來檢查粘貼板的changeCount。如果「changeCount」已更改,則意味着已完成捕獲。
但問題是,如果我按ESC取消屏幕截圖,定時器不知道,它會繼續檢查粘貼板。那麼,如何檢測屏幕截圖被取消?
請注意,通過單擊鼠標按鈕(而不是拖動矩形)也可以取消截屏。實現自己的屏幕捕獲機制可能會更加健壯,特別是用於啓動屏幕捕獲的鍵盤快捷鍵也可以由用戶在系統首選項中更改。 – omz 2012-01-29 16:40:35