2012-01-29 13 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); 

ペーストボードのchangeCountをチェックするようにNSTimerを設定します。 「changeCount」が変更された場合、キャプチャが行われたことを意味します。

しかし、問題は、私は、画面キャプチャをキャンセルするEscキーを押すと、タイマーはそれがペーストボードをチェックし続ける、ということを知らなかった、です。だから、画面キャプチャを検出する方法はキャンセルされていますか?

+1

画面キャプチャも(代わりに矩形をドラッグ)マウスボタンをクリックすることでキャンセルすることができることに留意されたいです。おそらく、画面キャプチャを開始するためのキーボードショートカットは、システム環境設定で、ユーザが変更することができ、特にとして、あなた自身の画面キャプチャメカニズムを実装するために、より堅牢になります。 – omz

答えて

2

ハードコードされたキーシーケンス(コメントに記載されているomzが間違っている可能性があります)を押してスクリーンショットを開始する代わりに、NSTaskを使用してscreencaptureを実行します。出力ファイルを作成せずにプロセスが終了すると、ユーザーはキャンセルされます。

+0

恐ろしい!それは動作します!!〜ありがとうございました。 –

+0

これは、信頼性の低い偽キープレスのおかげさまでは遥かに優れています。 – malhal

関連する問題