永发信息网

delphi定时给一个窗口发消息只能发一次不知道为什么?timer好使但是消息发不了

答案:3  悬赏:10  手机版
解决时间 2021-04-24 15:04
  • 提问者网友:佞臣
  • 2021-04-24 03:14

我写了个delphi程序目的是定时打开一个窗口 而且是显示在最前方 程序如下:

procedure TForm1.Button1Click(Sender: TObject);

begin
timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin
SetWindowPos(窗口句柄, HWND_TOP, 0,0, 800,600, SWP_SHOWWINDOW);
end;

然后第一次时候好使 因为一发消息这个窗口在最前端显示 就把delphi程序给盖过了

也就是说delphi程序不是在我当前激活状态(标题栏变灰)然后定时打开窗口就不好使了 当我在点下delphi程序让他在前端时程序照常执行 然后又如上那样不执行 怎么办啊?

最佳答案
  • 五星知识达人网友:夜余生
  • 2021-04-24 03:54

其实这个问题设计到窗体的激活问题,偶然的一次编程我也遇到过这样的问题,尤其是窗体最小化或者缩小到任务栏,程序都会出现这样的“假死”状态,解决方法就是在窗体创建的时候加入下面的代码:


SetForegroundWindow(Self.Handle);


它的作用是让窗体始终保持在最前,实际上它就是让程序始终保持激活状态的重要因素所在。

全部回答
  • 1楼网友:蕴藏春秋
  • 2021-04-24 05:37
我刚也试了一下...没有出现你说的情况...你传递的是哪个窗口的句柄?
  • 2楼网友:等灯
  • 2021-04-24 04:41
我试了下不会出现你说的情况,你检查下timer1的定时有没有设置对,或者是你设置的时间太长了 默认的是1秒,也就是timer1的interval属性值为1000
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯