5

mdworker(Spotlight)が最初のスキャンを完了したことを確認するにはどうすればよいですか?私は基本的に小さな「。」がどこにあるかを探しています。スポットライトの検索アイコンが消え、検索を実行できるようになります。(OSには、準備ができるまでドットが表示されるため、これを判断する方法があることは明らかです...)何も表示さmdutilれず、SpotlightAPIに何も見つかりません。

私は現在、を使用して同期的に自分のスキャンを強制していますmdimportが、これにより長い遅延が発生し(検索する場所についての積極性に応じて数分から数時間)、mdworkerすでに実行している作業が複製されます。

ここでは、あらゆるソリューション(プログラム、スクリプト、文書化、または文書化されていない)が公正なゲームです。

4

1 に答える 1

1

私はAppleとこのためのDTSを開きました。答えは、10.7の時点でこれを行うためのサポートされている方法がないということです。スポットライト検索アイコンが使用する「小さな点」は、プライベートインターフェイスで制御されます。

私の目標は、インストールされているアプリケーションのインベントリを取得することでした。

fts私の現在の解決策は、「。app」という名前のものを使用して検索し、サブアプリケーションを取得しないようにプルーニングすることで、/Applications内のすべてのアプリのリストを収集することです。(これはで行うNSDirectoryEnumerationのが簡単ですが、この特定のコードはCoreFoundationを使用したC++です。で行うのは簡単ですがCFURLEnumerator、10.4をサポートする必要があります。それでfts問題ありません。)

このリストのスキャンは非常に高速です。ボックスにあるアプリの最小数がわかったら、それをsystem_profiler出力と比較します。system_profiler/ Applicationsにあるとわかっているよりも少ないアプリがあると言われたら、すべてのバンドルを自分でスキャンします。それ以外の場合は、からの出力を使用しますsystem_profiler

これは理想的ではありませんが、まともなヒューリスティックであり、「ほぼ」正しく、アプリケーションの大幅な過少報告を防ぎます。

于 2012-03-31T15:16:32.660 に答える