2012-01-11 13 views
1

私は自分のアンチウイルスでディレクトリをスキャンできるように、右クリックをカスタマイズする必要があります。私はレジストリキーを使ってそれを行う方法を知っていますが、問題は、ディレクトリをスキャンするたびにプログラムの新しいインスタンスを開始したくないということです。私のアンチウイルスは、いくつかのシグネチャデータベースをロードする必要があります。そのため、プログラムがそれらをロードするのに約15秒かかります。私はすでに開いていて、ディレクトリをスキャンするために実行しているプログラムのインスタンスを使用する必要があります。どうやってやるの?プログラムの既存のインスタンスで右クリックをカスタマイズするにはどうすればよいですか?

私はC++ Builderを使用しています。

ありがとうございました。

答えて

1

すでに右クリックコンテキストメニューに項目を追加する方法を知って考えると、私はアプリケーションのクライアント/サーバー・セットの実装をお勧め:あなたは上のコンピュータの電源を入れたときにアップロードしてい

  • をサーバー
  • IPC - プロセス間通信を使用して何をすべきかを指示するクライアント。

クライアントアプリケーションをさまざまなコンテキストメニューに追加し、右クリックした内容に応じてサーバーに何を実行させるべきかを示す引数を渡します。

IPCはバットの痛みです。最も簡単な方法は、TCP/IPを使用してネットワークライブラリを使用してローカルネットワーキングを行うことです。

  • QtNetwork:多くのそこにありますが、しかし、あなたはおそらく、このようなUI要素とトレイアイコンなどの他の機能を持っているしたいと思う与え、私はあなたが、Qtの時、すなわち、以下のコンポーネントを見てください通信を行うためのクライアントとサーバーの実行可能ファイルの間。

  • QSystemTrayIcon:トレイに小さなアイコンを表示する場合。

のQtのかなりの数の他の少しビットはあなたが(すべての素晴らしいUIのもののように)疑いの出会いよ、と幸いQtは十分に立証されて、助けはここに常に利用可能で、とQt Developerからあります。ネットワーク。あなたは、SDKをダウンロードしてインストールすることでQtのを使い始めることができます。

http://qt.nokia.com/downloads/

幸運を祈る:)。

+0

ありがとうございましたが、私はサーバークライアントアプリケーションを作成する必要はありませんでした。私はメッセージの受け渡し方法を使ってみましたが、Embarcadero C++ビルダーで作業しているので、ON_REGISTERED_MESSAGESを使用することはできません。 –

+0

@lili lili正直言って、サーバークライアントシステムは最も単純な方法であり、私はQtを提案する。うーん、残念ですが、C++ Builderで本当にお手伝いすることはできません。また、ON_REGISTERED_MESSAGESは15年の間、私が避けたMFCです。私は掘り起こして、私があなたのために何かを考え出すことができるかどうかを見ます。 –

+0

@ililili私は、MFCはWindowsの唯一の解決策であることを示唆しているかもしれません。将来、他のプラットフォームへの移植を期待していません。 –

1

アンチウイルスでDDEサーバーを実装し、ddeexecサブキーをレジストリキーに追加します。または、IDropTargetインターフェイスを実装するアプリケーションにOLEオートメーションオブジェクトを追加し、DropTargetサブキーをオブジェクトのCLSIDを指定するレジストリキーに追加します。

どちらの方法でも、メニュー項目が呼び出されると、Windowsは既存のアプリケーションインスタンスが既に実行されている場合はそれを呼び出します。そうでない場合は、新しいインスタンスが起動されてから呼び出されます。いずれにしても、Windowsはそれをすべて処理しています。あなたがやっていることは、Windowsが呼び出すためのエントリーポイントを提供することだけです。

IDropTargetメソッドをお勧めします。これは、DDEが推奨されておらず、IDropTargetがより柔軟であるためです。あなたのアプリが実行されている間、同じIDropTargetオブジェクトを再利用して、OLEドラッグ&あなたのアプリのUIウィンドウとタスクバーボタンのドロップ操作を処理し、他のアプリケーションによるスキャナの自動呼び出しをサポートすることができます。

関連する問題