为什么我的程序运行后看不到界面,但是在进程里可以看到?(50分)

  • 主题发起人 主题发起人 Neo_leaf
  • 开始时间 开始时间
N

Neo_leaf

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么我的程序运行后看不到界面,但是在进程里可以看到?
登陆窗口都不显示出来,
跟踪了,
很奇怪,在我这台电脑上没问题,
换到其他的电脑上有几台有这个问题,
有几台正常,
谁知道怎么回事,
多谢了,
很急啊。。。。在线等。。。。
 
const
CM_RESTORE = WM_USER + $1001;
HDL_APP_NAME = 'HFA300';
var
RvHandle:HWND;
B_OPLog:Boolean;
begin
RvHandle := FindWindow(HDL_APP_NAME,nil);
if(RvHandle >0)then
begin
PostMessage(RvHandle,CM_RESTORE,0,0);
PostQuitMessage(0);
//Exit;
end;

Application.Initialize;
Application.Title := 'HFA300S Manage System';
Application.CreateForm(TDM_HDL, DM_HDL);
Frm_Login:=TFrm_Login.Create(Application);
B_OPLog:=True;
Frm_Login.ShowForm(B_OPLog);
if B_OPLog then
begin
Frm_Login.Close;
Application.ShowMainForm := True;
Application.CreateForm(TFrm_Main, Frm_Main);
Application.Run;
end
else
begin
if DM_HDL.AdoConnect.Connected then
DM_HDL.AdoConnect.Close;
DM_HDL.Free;
PostQuitMessage(0);
end;
end.
这是工程文件,
 
procedure TFrm_Login.ShowForm(var B_Log:Boolean);
begin
if ShowModal=mrOk then
B_Log:=True
else
B_Log:=False;
end;
在登陆窗口中,
 
装过几台纯XP系统(新电脑,什么都没装过的),
都没问题,
今天拿去客户那里却出问题了,
 
我把系统加了这么多显示语句,但是在那台机器上什么都没显示,依然有进程!!!
在我这里一切正常,
const
CM_RESTORE = WM_USER + $1001;
HDL_APP_NAME = 'HFA300';
var
RvHandle:HWND;
B_OPLog:Boolean;
begin
MessageAlert('First');
RvHandle := FindWindow(HDL_APP_NAME,nil);
if(RvHandle >0)then
begin
MessageAlert('Second');
PostMessage(RvHandle,CM_RESTORE,0,0);
Application.Terminate;
//PostQuitMessage(0);
//Exit;
end;
MessageAlert('Third');
Application.Initialize;
MessageAlert('After Initialize');
Application.Title := 'HFA300S Manage System';
Application.CreateForm(TDM_HDL, DM_HDL);
MessageAlert('After CreateForm(TDM_HDL, DM_HDL)');
Frm_Login:=TFrm_Login.Create(nil);
MessageAlert('TFrm_Login.Create(nil)');
B_OPLog:=True;
MessageAlert('After B_OPLog:=True');
Frm_Login.ShowForm(B_OPLog);
MessageAlert('After Frm_Login.ShowForm(B_OPLog)');
if B_OPLog then
begin
MessageAlert('Before Frm_Login.Close;');
Frm_Login.Close;
MessageAlert('After Frm_Login.Close;');
Application.ShowMainForm := True;
MessageAlert('After Application.ShowMainForm := True;');
Application.CreateForm(TFrm_Main, Frm_Main);
MessageAlert('After CreateForm(TFrm_Main, Frm_Main)');
Application.Run;
MessageAlert('After Application.Run');
end
else
begin
MessageAlert('Before if DM_HDL.AdoConnect.Connected then
');
if DM_HDL.AdoConnect.Connected then
DM_HDL.AdoConnect.Close;
MessageAlert('Before DM_HDL.Free');
DM_HDL.Free;
MessageAlert('After DM_HDL.Free');
PostQuitMessage(0);
end;
end.
 
应该是他的机器上缺少DLL文件。你可以查看你的程序调用了哪些DLL文件,然后你复制过去就OK了,我上次遇到这个问题,就是这样解决的。
 
查看一下是否引用了第三方控件或者是否静态加载了一些com什么的
 
接受答案,
非常感谢放飞同志,
 
解决方案:
按 放飞 大哥意思,怀疑是三方控件问题,故如下解决:
(放飞大哥在QQ里给了我帮助,所以分数较多,同时也非常感谢djsyz参加!!)
新建一空工程,不放任何三方控件;
然后逐个加控件尝试,排除,
最后发现是MScomm32.ocx少了,
是mscomm控件的问题,
在这里谢过大家了!!!!
 
后退
顶部