2012-01-29 84 views
1

我通過模擬快捷方式「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取消屏幕截圖,定時器不知道,它會繼續檢查粘貼板。那麼,如何檢測屏幕截圖被取消?

+1

請注意,通過單擊鼠標按鈕(而不是拖動矩形)也可以取消截屏。實現自己的屏幕捕獲機制可能會更加健壯,特別是用於啓動屏幕捕獲的鍵盤快捷鍵也可以由用戶在系統首選項中更改。 – omz 2012-01-29 16:40:35

回答

2

而不是通過按硬編碼的按鍵序列(其中,如他的評論中指出的,可能是錯誤的)啓動屏幕截圖,請使用NSTask運行screencapture。如果進程退出但未創建其輸出文件,則用戶取消。

+0

太棒了!那有效!!〜非常感謝。 – 2012-01-30 01:04:03

+0

這比不可靠的假按鍵感謝好多了。 – malhal 2012-10-09 00:58:20