用Delphi实现程序永远置顶

置顶是SetWindowPos(form1.handle,-1,0,0,0,0,SWP_NOSIZE),当按windows+D时它仍会消失。一位朋友说是系统发送了最小化消... 置顶是SetWindowPos(form1.handle, -1, 0, 0, 0, 0, SWP_NOSIZE),当按windows+D时它仍会消失。一位朋友说是系统发送了最小化消息,所以去掉最大化和最小化就行了,我用VB试了(直接去取最大化最小化按钮)可以,但不知delphi怎么弄?实现按windows+D也不最小化,我对delphi还不太了解 展开
 我来答
庾胤尹德元
2020-03-30 · TA获得超过3511个赞
知道大有可为答主
回答量:3124
采纳率:29%
帮助的人:182万
展开全部
貌似可以把Form的
formstyle属性设为StayOnTop,
把Form的ParantForm(ParantWindow我记不太清楚了是那个了,本机没装DELPHI)设为桌面。其句柄为
GetDC(0)
ParantForm:=GetDC(0);
不值得我记得准不准,你可以试下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
每日话题菌
2011-11-18 · TA获得超过243个赞
知道小有建树答主
回答量:252
采纳率:0%
帮助的人:108万
展开全部
procedure TForm1.Button1Click(Sender: TObject);
var
wnd : THandle;
begin
Form1.FormStyle := fsStayonTop;
wnd := FindWindow(nil,'Project1');
SHowWIndow(wnd,SW_HIDE);
end;
望采纳..

参考资料: 大仙

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
经朔S8
推荐于2017-07-19 · TA获得超过761个赞
知道小有建树答主
回答量:647
采纳率:0%
帮助的人:889万
展开全部
自己创建个消息过程吧,不过,这样做,相当于屏蔽掉了窗口最小化。也就是说,这样做不仅仅是Windows+D不消失,就连按窗口的最小化按钮,它也不消失。
在TForm1 = class(TForm)的下面创建消息过程:
procedure CreateParams(var Params:TCreateParams); override;
然后写上过程:
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent := FindWindow('Progman',nil);
end;
编译生成的窗口,不再响应最小化以及Windows+D消息。
另外,需要窗口置顶的话,直接设置窗口的FormStyle为fsStayOnTop即可。

以上代码 Delphi7 + Windows7旗舰版 测试通过。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qq31580388888
2011-11-16
知道答主
回答量:34
采纳率:0%
帮助的人:10.9万
展开全部
te67unw
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式