利用findwindow(nil,'窗口名')找到窗口句柄,设置ShowWindow(句柄,SW_Hide),并做了一个隐藏的按钮,在只有一个程序的情况下,可以实现。
但是如果需要打开两个程序,两个程序的窗口名是相同的,那么怎样才能实现点击这个隐藏按钮,同时把两个程序都隐藏起来呢?用上面的程序使用,一般情况是先隐藏了其中的一个,把程序关掉,再执行,有时候可以把第二个也隐藏掉,有时候就不行。请问各位,有什么方法可以实现功能??
但是如果需要打开两个程序,两个程序的窗口名是相同的,那么怎样才能实现点击这个隐藏按钮,同时把两个程序都隐藏起来呢?用上面的程序使用,一般情况是先隐藏了其中的一个,把程序关掉,再执行,有时候可以把第二个也隐藏掉,有时候就不行。请问各位,有什么方法可以实现功能??
解决方案 »
- 加了UAC,却看不到盾牌标志
- 升级到Delphi2010的问题,关于WM_QueryEndSession
- 开发个论坛发帖的软件,有经验者进。
- 如何设置和获取当前系统的时间格式?
- 初學delphi,小小問題,請各位幫忙,謝謝.
- 用delphi7开发的webservice客户端程序如何截取发向服务端和从服务端接收的xml数据
- 耗材库存系统提问?
- 关于memo的问题
- 为什么我找不到TSQLC onnection组件?
- 如何捕获dbgrid中选中的是第几条记录?
- 如何读出 PhotoShop 中的 PSD 格式图片中的文字,并把它修改之后再写进去。而不会损坏图片
- 在WINDOWS中程序需要被另外的一个EXE调用,请问程序启动时怎样知道是另一个EXE调用的?
var
hd: HWND;
sz: PAnsiChar;
begin
hd:=GetWindow(Handle,GW_HWNDFIRST);
GetMem(sz, 200);
while hd<>0 do
begin
GetWindowText(hd, sz, 200);
if sz = 'Form1' then
ShowWindow(hd, SW_Hide);
hd:=GetWindow(hd,GW_HWNDNEXT);
end;
FreeMem(sz);
end;
意思是,运行两个记事本程序,取同样的文件名'测试 - 记事本',
怎么使点击隐藏按钮,同时的把两个记事本全部隐藏起来unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
WinH:THandle;
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
WinH:=FindWindow(nil,'测试 - 记事本');
if WinH = 0 then
ShowMessage('未找到');
end;procedure TForm1.Button1Click(Sender: TObject);
begin
ShowWindow(WinH,SW_Hide);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
ShowWindow(WinH,SW_Show);
end;end.我把代码贴出来了,用这个代码执行,一次只能隐藏一个记事本.
hCurrentWindow:HWnd;
szText: array[0..254] of char; begin
hCurrentWindow := GetWindow(Handle, GW_HWNDFIRST);
while hCurrentWindow <> 0 do
begin
GetWindowText(hCurrentWindow, @szText, 255);
if StrPas(@szText)):='测试 - 记事本' then
ShowWindow(hCurrentWindow,SW_Hide);
hCurrentWindow:=GetWindow(hCurrentWindow, GW_HWNDNEXT);
end;
end;遍历窗口,如果窗口标题='测试 - 记事本'就隐藏它。