5

最近、私はColorSnapperアプリを試しましたが、他のアプリケーションをアクティブに保ちながら動作することに気付きました。

(以下の画面を確認してください。Safari ウィンドウがまだアクティブで、ColorSnapper もアクティブのままであることがわかります)。

ここに画像の説明を入力

この効果をどのように再現できますか?

4

3 に答える 3

4

これらのタイプのアプリは、 plist ファイル内の起動サービス キーとしてLSBackgroundOnlyまたはを使用していると思います (参照)。LSUIElement

もう少し詳しく説明します

于 2012-05-11T11:20:15.300 に答える
2

私はそれを試してみて、LSBackgroundOnlyが解決策ですが、ウィンドウのレベルを設定する必要があります。

例 :

[mySpecialNSWindow setLevel:NSMainMenuWindowLevel];

これにより、他のアプリケーションのウィンドウの上に特別なウィンドウが表示されます。

于 2012-05-11T14:50:31.700 に答える
1

正しいアプローチは、(1) アプリを LSBackgroundOnly にすること、(2)ここで説明されているようにカスタム透明ウィンドウを使用し、そのレベルを NSFloatingWindowLevel に設定すること、(3) アプリのデリゲートでこのようなものを使用してマウスの動きを監視することの混合であると思いますアプリはアクティブではありませんが、たとえば、ウィンドウをマウスの位置に追従させるには:

[NSEvent addGlobalMonitorForEventsMatchingMask:NSMouseMovedMask handler:^(NSEvent *event) {
        [window setFrameOrigin:[NSEvent mouseLocation]];
    }];

次に、(透明な)ウィンドウで好きなようにビューを表示し、それらを移動して、マウスの位置に応じてその内容を変更できます。

于 2012-05-14T21:31:09.140 に答える