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


浜山  2009-03-31 05:32:32  No: 33793

例えばIEのYahooを終了させたいときには

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

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

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

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


なんだか  2009-03-31 06:35:22  No: 33794

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


浜山  2009-03-31 08:08:27  No: 33795

すいません簡潔に申し上げますと、
他アプリの子ウインドウを終了させたいということです。

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


D  2009-03-31 12:21:18  No: 33796

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;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加