• ベストアンサー

LISTBOXで「他アプリ」を操作する

例えば、こういった「他アプリ」があったとします。 Listboxをマウスクリックして選択項目を選択すると ダイアログが表示されて変更されたことを表示するアプリです。 上記の内容を自作アプリで操作したのです。 そこで、 まず、「SendMessage ******, LB_SETCURSEL, 2, 0)」で Listboxのindex「2」に選択をさせるメッセージを送信しました。 インテックス選択(変更)は行われましたが、マウスクリックした ようなイベントはおこりませんでした。 そこで、質問なんですが、上記「他アプリ」を自作ソフトで操作するには どのようにしたら良いのでしょうか? わかる方がいらっしゃいましたらご教授願えませんでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

LBN_SELCHANGEかな

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=894824
hitPoint200
質問者

お礼

お世話になりましたおかげさまで、Listの内容を相手方のイベントで反映させることができました。ありがとうございました

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

エクセルVBAでやってます。VBにも同じようなものはあるので修正してください。SendMessageとかのレベルへもって行かなくても良いように思って、一筆。 Sub test06() Worksheets("sheet5").ListBox1.AddItem "新規" Worksheets("sheet5").ListBox1.AddItem "変更" Worksheets("sheet5").ListBox1.AddItem "抹消" End Sub で例えば3項目をリストボックスにアイテムを登録。 リストボックスのクリックイベントに Private Sub ListBox1_Click() MsgBox Worksheets("sheet5").ListBox1.List(ListBox1.ListIndex) _ & "を実行しました" End Sub 例えば、新規をクリックすると「新規を実行しました」と表示します。ここを修正して ListBox1.ListIndexの値で、各モジュールに飛ばせばどうですか。 力不足の勘違いならご免あそばせ。

全文を見る
すると、全ての回答が全文表示されます。
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.2

>マウスクリックしたようなイベントはおこりませんでした ListBOXを選択させているだけのSendMessageでマウスのクリックイベントが発生するはずもなく。マウスクリックのイベントを発生させたいのなら、同様にマウスクリックのイベントもSendしましょう。(参考URLの1828 ) が、プログラム的には別にインデックスの変更だけ見張っておいても問題ないかと思いますが。マウスクリックを発生させる利点は別にないかと。

参考URL:
http://www.bcap.co.jp/hanafusa/VBdengon/log_1801to1850.htm
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA ListBoxの操作で

    ListBoxに表示された項目をクリック等で 別の場所へ内容を表示することは出来るの ですが、このListboxの項目に番号を付けて その番号が押されたら(テンキー使用)そ の番号の項目を別の場所に表示させること は出来ますか。 10002 ○商店 ○○県 ↓ 番号を付ける 1 10002 ○商店 ○○県 ↓  1をテンキーで選択 宜しくお願いします。

  • C++を使った外部アプリケーションのタブ操作で

    C++で外部アプリケーションを動かすというものを作っているのですが、タブを切り替えるという操作の際に行き詰まりました。 SendMessage関数を使い、指定のタブを選択するところまではできたのですが、タブを選択した状態になっているのに表示が前に選択していたタブの内容のまま変わらないのです。この対処方法がわかる方がいましたら、アドバイスいただけると助かります。 参考までに画像も乗せます。 例)SendMessage(hWndTab, TCM_SETCURSEL, 5, 0);   といった感じで5番目のタブを選択することはできましたが、表示されている内容が1番目のタブ の内容のままという形です。

  • いくつかのアプリを操作していて、他のアプリが画面の外に隠れてしまって画面に現れないことがありますが

    いくつかのアプリを操作していて、他のアプリが画面の外に隠れてしまって画面に現れないことがありますが、簡単に復帰させる方法教えて下さい。 「最大化」なら現れますが、その後サイズ変更がききません。 要するに普通なら、ステータスバーからクリックで 普通に戻るはずなのですが

  • ListBoxを数字Keyで選択したい

    お世話になります。 OSはWin XP Home、Excel2002を使用しています。 EXCELのsheet1にCommandButton1とListBox1を貼り付けて以下のようにコーディングしています。 'Listbox1表示 Private Sub CommandButton1_Click() ListBox1.Visible = True End Sub '使用者はリストボックスのダブルクリックでリストボックスの入力ができる。 Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) ListBoxDataSet End Sub '使用者はリストボックスでマウスで選択後EnterKeyで入力ができる。 Private Sub ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii = vbKeyReturn Then ListBoxDataSet KeyAscii = 0 '←これがないとなぜかEXCELが異常終了するので注意! End If End Sub 'リストボックスで選択したリストを、シートの選択セル(単一)に転記し、 'その後でリストボックスを非表示 Sub ListBoxDataSet() ActiveCell.Value = ListBox1.Text ListBox1.Visible = False End Sub さらにListBox1のプロパティのListFillRangeはA1:B100としており、A列は1から100の連番、B列は上から順に「中山」、「常盤」、「高島」・・・98番目には「吉岡」という名前があります。 現在A列の数字は表示以外の機能は持っておらず、ダブルクリックか、マウスで1クリックで項目選択をした後にEnterKeyで名前だけがActivecellに転記されるようになっています。 100件もの項目をひとつのリストボックスには表示しきれず、スクロールバーで探すのも大変なので、例えば数字Keyで1と打てばすぐに「中山」が選択され、さらにEnterKeyで転送される、98と打てば「吉岡」が選択され・・・という風に機能追加したいのです。 いろいろ調べましたが、方法が分かりませんでした。 よろしくお願いします。

  • 他のアプリの表示、非表示について

    他のアプリケーション(アプリA)をコントロールするプログラムを作っています。アプリAと自作アプリは起動したままです。自作アプリでボタンを押すとアプリAを表示させてアクティブにして仕事をさせ、終わったら非表示にします。 アプリAのハンドルをhandle = FindWindow()で取得して ShowWindow(handle,SW_SHOWNORMAL)で表示して、 ShowWindow(handle,SW_HIDE);で隠しています。 ボタンを押したときに、アプリAが表示されていると、非表示にしたあとタスクバーのアプリを手動で表示できません。 MINIMIZEやCloseWindos()も試しましたが、それだと画面の左下にアプリAが残ってしまいます。 SendMessage(handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);も試しましたがうまくいきません。使い方が悪いのかもしれません。 アプリAを隠す事と元のサイズで表示する。という二つの動作をプログラムで交互に行う場合に、途中で手動でアプリAの最小化、あるいはタスクバーから出すという動作をさせることができるのが希望です。どうすればよいでしょうか。 OSはXPです。

  • マウス操作、タッチ操作、どれがどれに相当する?

    マウス操作の、ポイント(マウスカーソルを重ねるだけ)、 クリック、ダブルクリック、ドラッグ、右クリック、など、 それぞれ、タッチ操作の、どの操作に相当しますか? また上に「など」と書きましたが、 マウス操作も、タッチ操作も、 上記の他にあれば、追加して教えてくださいませんか。

  • ExcelでListBoxを閉じるには?

    Excelにリストボックスを作成します。 そして、特定のセルの値が変更されたら、入力候補をリストボックスに表示する。 リストボックスの項目をダブルクリックまたはEnterキーを入力したら、 リストボックスを非表示にする。 (要は、オートコンプリートなんですが、入力候補は別シートの値を表示したい) ということをしたいのです。 が、VBAで Private sub ListBox1_KeyDown(...) ListBox1.Visible = false end sub とやってしまうと、excelがアプリケーションエラーで死んでしまいます。 どのようにすればよいのでしょうか? よろしくお願いします。

  • ListBox内のDropDownListに任意の項目を追加し、データと連動させるには?

    初心者です。質問させていただきます。 ListBoxを使っているのですが、その中にDropDownListがあります。 そのDropDownListのプロパティのItemsというところから北海道、青森……沖縄と都道府県を入れて選択できるようにして、 DataGridなどの選択ボタンでデータベースの東京を選択してListBoxを開いたときに、 ListBox内のDropDownListの東京が選択されて表示されて、 そのDropDownListをクリックすれば、都道府県がまた選べて、 更新ボタンを押すと更新される。 というようなのを作成したいのですが、 うまくいかず、悩んでいます。 LabelやTextBoxではうまく表示されたのですが、 リストから選択して更新するということができないので、 DropDownListで同じようにしてみると、 クリックしてDropDownListを開いても東京なら東京だけしか出てきませんでした。 VBだと簡単にできるのに、どうしていいかわかりません。 どうか、よろしくお願いしますm(_ _)m

  • Excel VBA ListBoxについて

    お世話になります。 Excelで以下のようなフォーム画面を作成しております。 1.フォーム画面には、リストボックス、テキストボックス、登録ボタンを設定 2.リストボックスには、Sheet1のデータが表示される。 3.リストボックスのレコードを選択すると、選択した値がテキストボックスに表示される。 4.登録ボタンをクリックすると、テキストボックスのデータが、Sheet1に反映される。 今1~3まではできましたが、4で悩んでおります。 テキストボックスの値を取得してセルに反映させようと以下のコードを書きました。 'リストボックスで選択したレコード数 ListNo = Me.ListBox1.ListIndex 'TextBox1の値を、Sheet1のセルにセット Sheets("sheet1").Cells(ListNo, 1).Value = Me.TextBox1.Value  これを実行すると、何故かここから3のリストボックスのレコードをクリックしたイベントを呼びます。 Private Sub ListBox1_Click() クリックしてもいないのですが、Private Sub ListBox1_Click() を呼ばないようにしたいので、 ListBoxをEnableプロパティをfalseにしても、呼んでました。 呼びにいかない方法をご教授いただけますでしょうか。 よろしくお願いいたします。

  • Win7、8.1でアプリを大きく見せる方法の違い

    Win7、Win8.1で、高解像度の設定でアプリを起動すると アプリのダイアログが小さく見えるため、見にくいです。 このダイアログを大きくする方法が2つあります。 (1)解像度を落とす。 (2)「ディスプレイ表示の変更」画面で、    「テキストやその他の項目の大きさの変更」で高倍率を選ぶ    Win7の場合、デスクトップで右クリックして、「画面の解像度」    を選び、リンク「ディスプレイ表示の変更」をクリックして    表示される画面で、下の方にあるラジオボタンを選ぶと    画面が大きくなる。 しかし、各々のメリット/デメリットがわかりません。 例えば、上記(2)は高解像度のまま出来るという事ですが、具体的には どのようなメリットがあるのでしょうか。 {→(2)でもデスクトップの範囲は狭まって見えます。} 御教示ください。