2012-02-20 8 views
3

Delphiで、EXEファイルの右クリックメニューに追加された項目、具体的にはどこにも登録されていない、またはインストールされていないWindowsサービスアプリケーションEXEを実装できるかどうかは疑問でした。メニューオプションを使用すると、EXEをWindowsサービスとしてインストール/アンインストールできます。これは可能ですか?もしそうなら、どのように? Windows Vista +とのみ互換性があれば問題ありません。EXEファイルの右クリックメニュー

2つのメニュー項目があるでしょう:それは可能であり、Windowsエクスプローラのためのシェル拡張を記述する必要が

  • インストール(またはアンインストール)
  • スタート(または停止)
+0

個々のファイルは、Windowsの右クリックメニューの情報を宣言しません表示する。特定の実行可能ファイルに対してこれを行う方法を尋ねていますか? – ardnew

+3

なぜdownvote?これは完全に有効な質問です。 –

+0

@LeonardoHerrera合意 - 何かが可能であるかどうかという質問は、答えが否定であっても、それが下落されるべきではありません。 –

答えて

5

あなたは、シェルのコンテキストメニュー(Windowsのエクスプローラで右クリックしてウィンドウ)を参照している場合、あなたがすることはできません。すべての.exeファイルに対して表示されるメニューに追加することはできますが、個別のファイルには表示されません。

すべての実行可能ファイルのコンテキストメニューハンドラを登録し、それを処理する必要があるかどうかを確認するために渡されたファイル名をフィルタすることができますが、これは数百あなたのマシン上の実行可能ファイルは、あなたのアプリケーションが右クリックされた可能性があるスリムなチャンスでフィルタが実行されます。

可能な回避策は、サービスのフォルダーにカスタム拡張子のファイルを置き、代わりにそのファイルのコンテキストメニューハンドラーを追加することです。そのファイルを右クリックすると、メニュー項目は適切なコマンドラインパラメータでサービスを呼び出します。

(もちろん、最善の解決策は、行うのですか、具体的に設計されているものであるあなたのサービスを、管理するために、コントロールパネルの[サービス]アプレットを使用することです。)

+0

さらに、コンテキストメニューが機能する前に、シェル拡張をインストールする必要があります。つまり、特定のファイルのインストーラをインストールする必要がありますか? – martinstoeckli

+0

良い点。私はそれがそれが悪い考えであると決める前にそれを考えて気にしなかった。 :) –

+0

結局のところ、実際は答えはイエスですが、恐ろしい結果があるので、本当に答えは非常に推奨されません。 –

3
+1

いいえ、そうではありません。特定の実行可能ファイルのコンテキストメニューに追加することはできません。 *すべての*実行可能ファイルに1つを追加できますが、個別のものは追加できません。 –

+0

私はそれが不可能だとは思わない、http://www.codeproject.com/Articles/441/The-Complete-Idiot-s-Guide-to-Writing-Shell-Extensこの記事から、ファイル名。 –

+2

これは、右クリックされたシステム上のすべての実行可能ファイルに対して、拡張機能が呼び出され、フィルタの実行中にシステムに遅延が発生することを意味します。愚かなことをすることは、システムリソースの無駄であり、システム全体に悪影響を及ぼします。 1つのファイルにコンテキストメニューを追加する*実用的な方法はありません。 (もっと実用的な解決策は、サービスのフォルダに別のファイルを置き、その別ファイルの拡張子用のハンドラを登録して、その新しいファイル拡張子のハンドラとしてサービスを設定することです) –

関連する問題