■ 他アプリのForm2のウインドウタイトル取得方法

[Delphi Q & A 掲示板] [過去ログの一覧]


浜山 2009/03/30(月) 20:32:32
例えばIEのYahooを終了させたいときには

PostMessage(FindWindow(nil,'Yahoo! JAPAN - Microsoft Internet Explorer'), WM_SYSCOMMAND, SC_CLOSE, 0);

これでタイトルを取得して処理できるのですが。


他アプリのForm2のウインドウタイトル取得する方法が知りたいです。
タイトルはソフト名なのですがその新規登録というFORM2を取得して例えばCLOSEさせるには何か方法がありますでしょうか?

そもそも、タブの名称はソフト名だけです、Form2はタブにはでてきません。

なんだか 2009/03/30(月) 21:35:22
そのウィンドウのタイトルが「新規登録」なら、質問するまでもないんじゃないの?
それに「タブ」って一体ナニ? 勘違いしてる気がするんだけど。

浜山 2009/03/30(月) 23:08:27
すいません簡潔に申し上げますと、
他アプリの子ウインドウを終了させたいということです。

・子ウインドウのタイトルは固定です。

D 2009/03/31(火) 03:21:18
IEのタブみたいなことなのかな。
だとするとEnumChildWindows APIを使うのが良いのかな。


function WindowTextGet(hHandle: HWND): String;
var
  li_Len:  Integer;
  lp_Text: PChar;
begin
  Result := '';
  li_Len := GetWindowTextLength(hHandle) + 1;
  if (li_Len > 0) then begin
    lp_Text := AllocMem(li_Len);
    try
      GetWindowText(hHandle, lp_Text, li_Len);
      Result := String(lp_Text);
    finally
      FreeMem(lp_Text);
    end;
  end;
end;


function EnumChildWindowsProc(hHandle: HWND; lParam: LPARAM): Boolean; stdcall;
begin
  if (WindowTextGet(hHandle) = '新規登録') then begin
    HWND(Pointer(lParam)^) := hHandle;
    Result := False;
  end else begin
    Result := True;
  end;
end;

function GetWindow: HWND;
begin
  Result := 0;
  //ソフト名を'Application1'と仮定して
  EnumChildWindows(FindWindow(nil, 'Application1'), @EnumChildWindowsProc, LPARAM(@Result));
end;

毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!

Programming Library