判断一个句柄是否为主窗口可以用两种方法
1. GetParent(hwnd) == NULL
2. GetWindows(hwnd, GW_OWNER) == NULL
具体:http://zwkufo.blog.163.com/blog/static/258825120104717513/
我发现这两种方法都不是很准确,有时对有时错。
请问有什么更精确的方法吗?多谢
1. GetParent(hwnd) == NULL
2. GetWindows(hwnd, GW_OWNER) == NULL
具体:http://zwkufo.blog.163.com/blog/static/258825120104717513/
我发现这两种方法都不是很准确,有时对有时错。
请问有什么更精确的方法吗?多谢
解决方案 »
- 请教NMSMTP控件的connect()方法如何写才正确啊?
- 怎么写一个代替alt+talbe切窗口的程序
- 怎么捕捉maskedit错误?
- DLL中的cli窗口,怎么操作主mdi窗口中的Button.Enabled:=True;??
- Delphi7的弹出菜单在那里?
- Delphi 中 ASCII码怎么互相转换
- 有谁知道哪里有turbo pascal 6.0的编译器下载?急急急!!!
- 请问斑竹、cobi、chechy等高人,你们遇到过:物理数据库中字段映射到client端对象的问题吗?
- delphi学习方法讨论
- 请教和讨论: 在INTERNET环境下, MIDAS应用服务器在网络中的位置及其安全. 高手请进....
- 求Delphi PPt播放源代码
- 学校的网站要改版,哪个CMS比较安全
wndInfo=packed record
dwProcessId:DWORD;
hWind:HWND;
end;
LPWNDINFO=^wndInfo;function EnumWindowsProc(
hwnd: HWND;
lParam: LPARAM
): BOOL; stdcall;
var
vProcessID: THandle;
vBuffer: array[0..255] of Char;
nStyle:integer;
pInfo:LPWNDINFO;
begin
Result:= true;
GetWindowThreadProcessId(hwnd, vProcessID);
pInfo:=LPWNDINFO(lParam);
if vProcessID = pInfo.dwProcessId then
begin
nStyle:=GetWindowLong(hWnd,GWL_HWNDPARENT);
if nStyle=0 then
Result:=True
else
begin
pInfo.hWind:=nStyle;
Result:=FALSE;
end;
end;
end;
function GetProcessMainWnd(dwProcessId:DWORD):HWND;
var
Dwnd:wndInfo;
begin
wi.dwProcessId:=dwProcessId;
wi.wnd:=HWND(nil);
EnumWindows(@EnumWindowsProc,LPARAM(@Dwnd));
result:=Dwnd.hWind;
end;MSDN上解释:
GWL_HWNDPARENT->Retrieves a handle to the parent window, if any.