掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
他のアプリのコンボボックスのインデックスを取得するには? (ID:22064)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
これでいかがでしょうか? テスト用 Formを開きComboBoxを配置し、ComboBoxに適当にデータを入力。 FormのCaptionをComboBoxTestにしておく。 (FindWindowで見つけやすくするため) 受信側 FormにMemoとButtonを1個ずつ配置。 ButtonのOnClickに下記のプログラムを割り当てる。 implementation type PHWndArray = ^THWndArray; THWndArray = array[0..500] of HWND; function EnumChildWndProc(hWindow:HWND;lData:LPARAM) : Boolean; var pWA:PHWndArray; begin pWA := PHWndArray(lData); pWA^[0] := pWA^[0]+1; pWA^[pWA^[0]] := hWindow; result := true; end; procedure TForm1.Button1Click(Sender: TObject); var WND : HWND; WNDA : THWndArray; c : array [0..255] of Char; i : Integer; begin // ComboboxのあるFormのハンドルを入手。 WND := FindWindow('TForm1', 'ComboBoxTest'); if WND = 0 then begin Memo1.Lines.Add('対象のFormを発見できませんでした。'); Exit; end; WNDA[0] := 0; // 対象のFormに配置されているウィンドウのハンドルを一覧にして入手。 EnumChildWindows(WND, @EnumChildWndProc, LPARAM(@WNDA)); if WNDA[0] <> 0 then begin // 一覧中からTComboBoxのウィンドウハンドルを探す。 GetClassName(WNDA[i], c, SizeOf(c)); i := 1; while (i <= WNDA[0]) and (c <> 'TComboBox') do begin inc(i); GetClassName(WNDA[i], c, SizeOf(c)); end; if c = 'TComboBox' then begin // ComboBoxから表示しているデータを入手。 SendMessage(WNDA[i], WM_GETTEXT, SizeOf(c), Integer(@c)); if c <> '' then Memo1.Lines.Add(Format('Combobox = %s', [c])); end else Memo1.Lines.Add('Comboboxが見つかりませんでした。'); end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.