2009-06-09 32 views
3

標準システムのファイルを開くダイアログを、私が書いたダイアログと置き換えたいのです。つまり、ファイルを開いているプログラムに関係なく、標準のダイアログの代わりにダイアログが表示されます。これは可能ですか?システムオープンファイルダイアログを置き換えることはできますか?

これを達成するために提供されているAPIはないと思われますが、いくつかのフック技法を使用することは可能ですが、これは信頼性が高く、アンチウィルスツールとしてスパイウェアとして扱われないでください。

他のオプションはありますか?

これが不可能な場合は、標準オープンファイルダイアログのスペースバーまたはツールバーに、ファイルを選択して選択したファイルのパスを返すダイアログを呼び出すボタンを追加することは可能ですか?標準ダイアログの "ファイル名"入力ボックス?

ヒット、リンク、コード例があれば幸いです。 Vistaで起動する

+0

Windowsを使用していますか? –

答えて

1

、FileOpen関数/のFileSaveダイアログは今IFileOpenDialog & IFileSaveDialogは2つの公表の実装であるの "Common Item Dialogs" です。

既知のCLSIDを持つCOMオブジェクトなので、CLSIDを使用して再登録するだけで置き換えられる可能性があります。そのようなことは一度も試したことがなく、あらゆる種類の警鐘を鳴らすかもしれません。

Vista以前のファイルダイアログボックスはhooked in processになる可能性がありますが、グローバルフックまたはこれに相当するものについては何も出たことがありません。

0

ファイル/フォルダをダイアログのファイル名フィールドにコピーすると、通常は完全なパスが貼り付けられます。

たとえば、標準の開く/保存ダイアログボックスを呼び出すプログラムと、作業するファイルまたはパス(開いている/保存する場所)にウィンドウを開いている場合は、エクスプローラウィンドウからファイル/フォルダをコピーし、ダイアログボックスのファイル名フィールドに貼り付けると、ファイル/フォルダの完全パスが挿入されます。カスタムスクリプトは必要ありません!

また、この手順が失敗したカスタムダイアログボックスを使用するプログラムでは、ウィンドウ内の同じファイル/フォルダを同じウィンドウのアドレスバーにコピーします(表示されていると仮定します)。これにより、完全なパスが貼り付けられます。このパスは再度コピーして、この完全なパスをカスタムダイアログボックスに貼り付けます。ハイパーリンクの挿入ダイアログが最初の方法で機能しないため、Officeハイパーリンク(Ctrl + K)を作成するときによく使用します。

同様の方法を使用することもできますが、アドレスバーのフィールドに貼り付けることもできます。

+5

これは、Open Fileダイアログをどのように置き換えるかという質問にどう答えているのか分かりません。 –

関連する問題