tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: ホットキーの実装
投稿日: 2017/05/26(Fri) 16:06
投稿者魔界の仮面弁士
> >そのフィールドは、UIAutomation で拾えますか?
>  windowハンドルが取れたようなので、拾えてるのかな。。

UI Automation は、Window ハンドル(HWND) とは無関係です。
https://blogs.msdn.microsoft.com/japan_platform_sdkwindows_sdk_support_team_blog/2011/05/26/ui-automation/

UI Automation あるいは MSAA では、フォームのタイトルバーにある
最小化ボタン・最大化ボタン・閉じるボタンさえも個別に拾えますが、
ウィンドウハンドルとしてはこれらは同一のものですよね。


> もし、お時間があれば向学のためお願いします
> (1)ご紹介いただいたページの説明にある[アトム]とは何でしょうか
この場合は、『一意な値 (unique value)』のことです。

追加の説明が必要であれば下記を参照してみてください。
http://eternalwindows.jp/ipc/globalatom/globalatom01.html
https://msdn.microsoft.com/ja-jp/library/cc429867.aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/ms649053.aspx


> (2)このプログラムですが、F-8でステップ実行すると、wndProcで、ステップ以外の
> 停止、メニュー操作、終了が一切できなくなりますが、どうしてでしょうか
「サブクラス化」のためにメッセージループを横取りしているにも関わらず、
一時停止によって、メッセージ応答が阻害されてしまうためです。

大前提として、AddressOf WndProc でサブクラス化している最中は、
一時停止や終了などを行ってはいけません。止める前には、
サブクラス化を解除(先の例では UnHook の呼びだし)せねばなりません。


サブクラス化中に一時停止すると処理が阻害される問題を軽減するため、
大昔は、Microsoft のサイト(Visual Basic Owner's Area)において、
"Debug Object for AddressOf Subclassing" (DbgWProc.Dll) という
ActiveX DLL が公開されていました。

同サイトは現在閉鎖していますが、同 DLL は今でも下記から入手できます。
使用方法については割愛。
http://www.mvps.org/vbvision/_other_files/DbgWProc.zip
http://www.mvps.org/vbvision/dbugproc_dll.htm
http://vb.mvps.org/tools/ControlsAndComponents.asp


> このページは保存して、そのうち.netでもやってみます
> (コールバック関数が出てくると鼻水がとまらなくなりますが)
VB.NET なら WndProc を直接扱えるので、VB6 よりも楽ですよ。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。