C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: コンボボックスの項目をAPIで変更する方法


(過去ログ 59 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■33737 / inTopicNo.1)  コンボボックスの項目をAPIで変更する方法
  
□投稿者/ MINO (1回)-(2009/03/08(Sun) 20:50:42)

分類:[VB.NET/VB2005 以降] 

こんばんは、いつもお世話になっております。

VB2005でWindowsアプリを開発しています。

他のソフト(メモ帳を例にします)で表示させた『名前をつけて保存』ダイアログを制御したいと思います。
『名前をつけて保存』画面を表示させた時に、「ファイルの種類」というコンボボックスがあるのですが、
これをAPI(sendmessage)を使って、既定の「テキスト文書」から「すべてのファイル」に
変更したいと思います。

Spy++を使用してコンボボックスのウィンドウハンドルは取得できていますが、
最後のsendmessage部分をどのように記述すればよいのかわかりません。

SendMessage(hChild, ?, ?, ?)

Googleであれこれ探し回ったのですが、ほしい情報を見つけられず・・・
ご存知の方がいましたら、ご教授いただけると助かります。
よろしくお願い致します。
引用返信 編集キー/
■33740 / inTopicNo.2)  Re[1]: コンボボックスの項目をAPIで変更する方法
□投稿者/ オショウ (109回)-(2009/03/09(Mon) 00:38:52)
> Spy++を使用してコンボボックスのウィンドウハンドルは取得できていますが、
> 最後のsendmessage部分をどのように記述すればよいのかわかりません。

  Spy++ でウィンドウハンドルを取得しているのであれば
  そのままSpy++でそのコンボボックスのウィンドウメッセ
  ージをモニターしてみれば、解りますが・・・

  で、参考までに・・・

  http://mrxray.on.coocan.jp/Halbow/Chap13.html

  ここの記述の・・・
CB_SETCURSEL = $014E; // 特定項目を選択してエディットに表示

  この辺・・・
  後は、メッセージ投げて実験するだけ・・・

以上。
引用返信 編集キー/
■33743 / inTopicNo.3)  Re[2]: コンボボックスの項目をAPIで変更する方法
□投稿者/ Azulean (317回)-(2009/03/09(Mon) 07:38:04)
下記に挙げるようなことで引っかかると思います。

・「すべてのファイル」が候補にないこともあります。
・ここの文字列(フィルタ文字列)はプログラム開発者が任意に設定するものなので、細かい違いがあることもあります。
・OSのバージョンによってウィンドウの構造が変わることがあります。
・VistaではUACの影響でそういった操作ができないウィンドウが存在することがあります。

特定のOSの特定のアプリを対象としていれば「できなくもない」というのが実情だと思います。
引用返信 編集キー/
■33788 / inTopicNo.4)  Re[3]: コンボボックスの項目をAPIで変更する方法
□投稿者/ MINO (2回)-(2009/03/09(Mon) 21:31:24)
オショウさん、Azuleanさん

ご回答ありがとうございます。

頂いたアドバイスを元にあれこれ試してみまして、下記のコードで対応することができました。

SendMessage(hChild, CB_SELECTSTRING, 0, "すべてのファイル")

Azuleanさんにご指摘いただいた点、まさしくその通りでして、この部分の機能は今、まさに開発中です。
なんとか、無事完了することできそうです。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -