例えばIEのYahooを終了させたいときには
PostMessage(FindWindow(nil,'Yahoo! JAPAN - Microsoft Internet Explorer'), WM_SYSCOMMAND, SC_CLOSE, 0);
これでタイトルを取得して処理できるのですが。
他アプリのForm2のウインドウタイトル取得する方法が知りたいです。
タイトルはソフト名なのですがその新規登録というFORM2を取得して例えばCLOSEさせるには何か方法がありますでしょうか?
そもそも、タブの名称はソフト名だけです、Form2はタブにはでてきません。
そのウィンドウのタイトルが「新規登録」なら、質問するまでもないんじゃないの?
それに「タブ」って一体ナニ? 勘違いしてる気がするんだけど。
すいません簡潔に申し上げますと、
他アプリの子ウインドウを終了させたいということです。
・子ウインドウのタイトルは固定です。
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;
ツイート | ![]() |