2012-02-06 9 views
4

サービスはアプリケーションのコンテキストでトリガーされます。たとえば、1つのサービスでペーストボードのテキストを豊富にフォーマットし、それを要求したアプリケーションに貼り付けることができます。OSX Servicesの取り消しを管理するにはどうすればいいですか?

サービスが親のNSUndoManagerへの参照を取得し、元に戻す履歴を変更することは可能ですか?

答えて

0

サービスは、アプリケーションのコンテキストで、という概念的にはですが、そのアプリケーションのプロセスでは実際には実行されません。

取り消し機能は対象アプリケーションの責任です。サービスがアプリに何かを貼り付けると、最終アプリのフロントウィンドウのレスポンダーチェーンの上に-paste:というメッセージが送信されてしまいます。ターゲットアプリケーションの「内在的な」ペースト操作が取り消し可能な場合、「外生的」ペースト操作も元に戻すことができます。同様に、アプリケーションが貼り付け操作の取り消しをサポートしていない場合、サービス元の貼り付けを元に戻すことはできません。

サービスは、hereに記載されているように、ペーストボードによってターゲットアプリケーションから分離されています。彼らは、アプリケーション(または他のオブジェクト)からNSUndoManagerを取得することはできません - どんな巨大で、大きなセキュリティホールがあるか考えてみてください! AppleEventをシステムサービスからアプリケーションに送ることはおそらく可能ですが、それはそれです。

関連する問題