Windows アプリケーションのコモン ダイアログ ボックスをプログラムで操作するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/125710

  •  02-07-2019
  •  | 
  •  

質問

ここでの私の最終的な目標は、フォルダーをすぐに設定できるユーティリティを作成することです。 どれでも ダイアログ ボックスで、「お気に入り」のプリセット リストから選択します。私はプロではなく単なる趣味人なので、.NET を使用することを好みます。それが私が最もよく知っていることです。この作業の中には、C# で実行できる以上のものが必要になる場合があることは承知しています。

コモン ダイアログ ボックス (特に名前を付けて保存) を拡張できるアプリケーションをいくつか見たことがあります。およびファイルを開く) を行うには、ツールバーにボタンを追加します (例: ダイアログボックスアシスタント) または、タイトル バーの最小化、最大化、および/または閉じるボタンの横に追加のボタンを配置します。どちらも良い選択肢だと思いますが、どこから始めればよいのかわかりません。

私が試したアプローチの 1 つは、アプリからダイアログ ボックスのファイル名テキスト ボックスに書き込んだフォルダー名を「ドラッグ」し、Corneliu Tusnea のマウス フック テクニックを使用して強調表示することです。 ホークアイ ランタイム オブジェクト エディター, 次に、SendMessage を WM_SETTEXT でピン呼び出ししてパス名を先頭に追加します。それは(ある程度は)機能しますが、少し不格好に感じます。

このための技術や実装に関するアドバイスをいただければ幸いです。または、これをすでに実行している既存のユーティリティがある場合は、お知らせください。

アップデート:結局のところ、おそらく既存のユーティリティを使用することになると思います。ただし、あるなら知りたいです これをプログラムで行う方法。

役に立ちましたか?

解決

このような場合は、おそらく Win32 API 呼び出しに集中することになるでしょう。.Net で作業するということは、多くの pinvoke を作成することを意味します。あまりお役に立てず申し訳ありませんが、次のような本があったのを覚えています。 「Visual Basic を使用したサブクラス化とフック」 それは役立つかもしれません。これは主に VB 6 用に書かれていますが、VB.Net の要素も含まれていたと思います。

また、 PInvoke.Net は、コピーして貼り付けると役立つかもしれない pinvoke の署名がたくさんある wiki です。

結局のところ、目標を達成するために Windows が内部的にどのように動作するか (メッセージ パッシングなど) についてさらに学ぶ必要があるでしょう。

Spy++ もおそらくあなたの友達になるでしょう。

他のヒント

の仕事のようですね オートホットキー 私に。

私は「プロ」です (少なくともプログラミングでお金をもらっています) が、C#/.NET や、おそらく PInvoke を介した WinAPI を詳しく調べるよりも、まず AutoHotkeys の十分にテストされた多くの関数を使用して Windows にアクセスすることを検討します。

AutoHotkey はいくつかの基本的なユーザー インターフェイス コントロールも提供しており、無料です。

ここにあります AutoHotkey スクリプト それはあなたが求めているものと非常によく似ています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top