5

ここでの私の最終的な目標は、「お気に入り」のプリセット リストから選択して、任意のダイアログ ボックスでフォルダーをすばやく設定できるユーティリティを作成することです。私はプロではなく単なる愛好家であるため、.NET を使用したいと考えています。このようなものの中には、C# でできる以上のものが必要になる場合があることは認識しています。

ツールバーにボタンを追加するか (例: Dialog Box Assistant )、タイトル バーの最小化、最大化、閉じるボタン。どこから始めればよいのかわかりませんが、どちらも良い選択肢です。

私が試した 1 つの方法は、作成したアプリからフォルダー名をダイアログ ボックスのファイル名テキスト ボックスに「ドラッグ」し、Corneliu Tusnea のHawkeye Runtime Object Editorから取得したマウス フック手法を使用して強調表示し、先頭に追加することです。 WM_SETTEXT で SendMessage を pinvoking してパス名を指定します。それは(一種の)機能しますが、少しぎこちなく感じます。

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

更新:すべてが完了したら、おそらく既存のユーティリティを使用できると思います。ただし、プログラムでこれを行う方法があるかどうかを知りたいです。

4

2 に答える 2

5

私にはAutoHotkeyの仕事のように思えます。

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

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

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

于 2008-09-24T06:38:58.753 に答える
1

このような場合、おそらくWin32API呼び出しに集中することになります。.Netから作業するということは、たくさんのピンボークを作ることを意味します。あまりお役に立てないのではないかと思いますが、「VisualBasicによるサブクラス化とフック」という本があったことを覚えています。これは主にVB6用に書かれていますが、VB.Netのものが含まれていると思います。

また、PInvoke.Netは、コピーして貼り付けることができる多くのピンボーク署名を備えたWikiです。

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

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

于 2008-09-24T14:11:09.773 に答える