根据窗体 TMyForm, 创建了多个非modal的窗体:
win := TfrmChat.Create(Application);
....问题:
我想关闭所有该类型的窗体:
var
HandleT:HWND;
begin
HandleT := findwindow(‘TMyForm’,nil);
while HandleT<>0 do begin
SendMessage(HandleT, WM_CLOSE, 0, 0);
HandleT := findwindow('TfrmChat',nil); //这里总是返回同一个句柄!我用destroywindow也没有用
end;
谢谢!
win := TfrmChat.Create(Application);
....问题:
我想关闭所有该类型的窗体:
var
HandleT:HWND;
begin
HandleT := findwindow(‘TMyForm’,nil);
while HandleT<>0 do begin
SendMessage(HandleT, WM_CLOSE, 0, 0);
HandleT := findwindow('TfrmChat',nil); //这里总是返回同一个句柄!我用destroywindow也没有用
end;
谢谢!
var
hCurrentWindow:HWnd;
szText:array[0..254] of char;
begin
hCurrentWindow:=Getwindow(handle,GW_HWNDFIRST);
while hCurrentWindow <> 0 do
begin
hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);
GetClassName(hCurrentWindow,@sztext,254);
if StrPas(@sztext)='TfrmChat' then SendMessage(hCurrentWindow,WM_CLOSE,0,0);
end;
end;
var
HandleT:HWND;
hCurrentWindow:HWnd;
szText:array[0..254] of char;
pIDTemp,pIDCur:integer;
begin
PIDCur := GetCurrentProcessID();
hCurrentWindow:=Getwindow(handle,GW_HWNDFIRST);
while hCurrentWindow <> 0 do begin
hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);
GetClassName(hCurrentWindow,@sztext,254);
GetWindowThreadProcessId(hCurrentWindow, @pIDTemp);
if (StrPas(@sztext)='TfrmChat') and (pIDTemp=pIDCur) then SendMessage(hCurrentWindow,WM_CLOSE,0,0);
end;
end;