delphi程序中为啥运行后程序窗口不显示,进程中有

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi程序中为啥运行后程序窗口不显示,进程中有相关的知识,希望对你有一定的参考价值。

procedure TForm1.FormCreate(Sender: TObject);
var
systemtime:TSystemTime;
datetime:TDateTime;
t:string;
f:TextFile;
begin
AssignFile(f,getcurrentdir+'\nts.cfg');
Reset(f);
Readln(f,t);
//SetWindowPos(Application.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);//始终显示在最前端
//SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW); //取消任务栏和系统栏显示
IdSNTP2.Host:=Trim(t);
IdSNTP2.Port:=123;
datetime:=idsntp2.datetime;
DateTimeToSystemTime(datetime,systemtime);
SetLocalTime(systemtime);
lbl1.Caption:=FormatDateTime('yyyy-mm-dd hh:nn:ss',Now);
end;
代码放在按钮中就运行正常,而且是有些电脑可用,有些不可用

参考技术A 不能放在create事件中,窗体中放一个timer,enable=false,启动后在formcreate中置为true,然后在timer事件中执行上述代码,(记住,在timer事件中先把timer置为false,然后在放入这些代码),窗体就可以显示了 参考技术B 首先你确定程序已经运行起来了吗?你的代码省略了一部分文件操作的吧,从代码中看似乎没啥大问题,你把窗口设成一个不可移动、不可改变大小的工具窗口,但好像并不是在最上层显示,问题的关键应该在setWindowsLong这一句里面,你试着把括号里头的参数改变一下,应该会有你想要的结果。追问

注释掉都不行

追答

如果你在系统的任务管理器里能看到这个程序的进程,那么应该就是在datetime:=idsntp2.datetime;
这一句里出了问题。

另外,你说程序在某些机器上能正常运行而有些不能,那就要考虑到软件运行环境,是否是有些控件未安装?

仅仅是个人猜测,希望能给你起到某些提示作用。

参考技术C 从你的代码上看,最有可能的就是IdSNTP2.Host:=Trim(t);其中的地址 t 获取不到时间,导致程序卡在那。无法显示窗体。建议将这部分写到一 button里面试试。
IdSNTP2.Host:=Trim(t); IdSNTP2.Port:=123;
datetime:=idsntp2.datetime;
DateTimeToSystemTime(datetime,systemtime);
SetLocalTime(systemtime);
lbl1.Caption:=FormatDateTime('yyyy-mm-dd hh:nn:ss',Now);

如何用批处理运行某个程序时不显示命令提示符窗口

如何用批处理运行某个程序(或者某行、某段命令)时不显示命令提示符窗口(那窗口闪都不闪)?

@echo off
if "%1"=="h" goto go
mshta vbscript:createobject("wscript.shell").run(""%0"h",0)(window.close)&exit
:go
下面写你的代码

这是把那个cmd窗口隐藏的代码,但是在进程里还是有个cmd.exe 进程,不运行这个批处理就直接结束该进程,把上面的代码加在开始的位置
参考技术A 用VB调用批处理,把下面的代码保存为 *.vbs 格式运行即可

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c 123.bat",vbhide

123.bat为你的BAT路径,自行修改,有空格就添加半角引号 如"D:\1 23.bat"
参考技术B 保存在某个盘,然后创建快捷方式,打开快捷方式的属性,运行方式改为最小化 参考技术C for each arg in Wscript.Arguments
createobject("wscript.shell").run "cmd /c start """" """&arg&"""",0,true
next

保存为vbs类型文件
参考技术D @echo off

以上是关于delphi程序中为啥运行后程序窗口不显示,进程中有的主要内容,如果未能解决你的问题,请参考以下文章

delphi2007如何让程序不在任务栏中隐藏和显示?

delphi程序关闭,进程依然存在

如何使Delphi做的程序不显示在任务栏中

delphi中运行程序主菜单不显示

Delphi程序在任务栏显示不了?

为啥电脑好多应用程序(firefox、delphi)背景全都跟窗口背景一样了,个别字体变大,关闭窗口的x也不显