当前位置:主页>仓库管理软件> 列表

很有意思的一个问题!大家帮帮忙!我在程序中取得了别一个De 找零售管理

财务软件版1楼: 我头都大了!
我在程序中取得了别一个Delphi程序的Application句柄想用API隐藏和显示程序的主窗口
但对的Application句柄用只能隐藏它在任务栏的那个按钮,我想只有得到主窗口句柄对它
用才行!我想用GetWindowThreadProcessId打开进程来找可能OK!但我不会!请大家帮帮
忙!
showwindow(主窗口句柄,SW_HIDE);//隐藏
showwindow(主窗口句柄,SW_SHOW);//显示

还有我用了SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE Or SWP_NOSIZE);
使别的程序[总在最前]就是窗口最前!请问要用什么方法才能去除它的[总在最前]就是
窗口最前呢?和Windows的程序管理器(Ctrl+Alt+Del)的菜单第二项中的[前端显示]!

2楼: 使用EnumWindows能列这进程的全部窗口
如:
窗口句柄:3343832,窗口类名:TForm4,窗口标题:Form4
窗口句柄:4261458,窗口类名:TForm1,窗口标题:Form1
窗口句柄:14222950,窗口类名:TForm3,窗口标题:Form3
窗口句柄:26019376,窗口类名:TForm2,窗口标题:Form2
窗口句柄:4064762,窗口类名:TApplication,窗口标题:Project1
窗口句柄:1574610,窗口类名:MSCTFIME UI,窗口标题:M
窗口句柄:2295382,窗口类名:IME,窗口标题:Default IME



但我没有法在它们中找到主窗口!
大家帮帮忙! 如零售管理

3楼: 分不明谁是主窗口

4楼: 想通过Application获得外部程序主窗口不太容易.
VCL和MFC一样.都是Application是一个1X1的不可见窗口.他们才是真正的主窗口.任务栏上面的按钮对应的就是他们.而我们的主Form其实对他们来说也是一个普通的Form而已.

建议你现确定它们的主Form类的类名.以后用FindWindow这个API来查找到对应的窗口.

H := FindWindow(''主窗口的类名'',nil);
if H = 0 then
begin
//没找到
end
else
begin
//找到了
end;

5楼: 用这个判断:
function IsMainWindow(AHandle: THandle): Boolean;
var
nParentWnd: THandle;
nExStyle: DWORD;
begin
if IsWindowVisible(AHandle) then
begin
nParentWnd := GetWindowLong(AHandle, GWL_HWNDPARENT);
nExStyle := GetWindowLong(AHandle, GWL_EXSTYLE);
Result := ((nParentWnd = 0) or (nParentWnd = GetDesktopWindow)) and
((nExStyle and WS_EX_TOOLWINDOW = 0) or (nExStyle and WS_EX_APPWINDOW <> 0));


end
else Result := False;
end;

6楼: to LSUPER
你的这个function IsMainWindow(AHandle: THandle): Boolean;只能确认Application窗口

财务软件版7楼: 那么我用了SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE Or SWP_NOSIZE);
使别的程序[总在最前]就是窗口最前!请问要用什么方法才能去除它的[总在最前]就是
窗口最前呢?和Windows的程序管理器(Ctrl+Alt+Del)的菜单第二项中的[前端显示]!

回答这个我一样给全分!!@!!@!

8楼: 毛了哟,一个一个试三,一般Form1是主窗口,因为是第一个创建