再问一下这个奇怪的问题?
秋天之落叶 2019-04-10 10:38:48 以下文件在dell台式机i5-4590+32位win7、联想笔记本i5-5200U+64win10、兼容台式机i5-750+64win10上运行,先显示登录界面、后显示主界面一切正常,仅仅是连续快速按登录按键时,会出现“对象打开时,不允许操作”的提示,我以为是多线程造成的。
但是,很奇怪的是,在刚刚购买的神州笔记本i5-8400+64位win10上运行,一样的代码,运行后竟然同时显示主窗体和登录窗体,也能输入和登录,登录后就正常了。这事我以前的帖子说过,但到现在都调试不好,除非调整项目文件先显示登录界面,登录成功后再隐藏登录界面,显示主界面。笔记本重新安装系统和应用,还是如此。
我怀疑是新的8代CPU的操作指令和以前不一样了,但也很是不明白,有没有了解的高手,给解惑一下。系统是10.3
//项目文件
program hyzx;
{ Reduce EXE size by disabling as much of RTTI as possible (delphi 2009/2010) }
{ $IF CompilerVersion >= 21.0 }
{ $WEAKLINKRTTI ON }
{ $RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([]) }
{ $IFEND }
uses
Forms,
windows,
main in 'main.pas' {Form1} ,
login in 'login.pas' {Form2} ,
dm in 'dm.pas' {DataModule1: TDataModule};
{$R *.res}
var
hAppMutex: THandle;
begin
hAppMutex := CreateMutex(nil, true, '管理系统');
if ((hAppMutex <> 0) and (GetLastError() <> ERROR_ALREADY_EXISTS)) then
begin
Application.Initialize;
Application.Title := '管理系统';
Application.MainFormOnTaskbar := false;
Application.ShowMainForm := true; //这里要是设置为false则运行程序不显示界面
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TDataModule1, Dm1);
Application.Run;
end
else
Application.MessageBox(pchar('综合管理系统 已经运行!'), pchar('提示!'), MB_OK);
ReleaseMutex(hAppMutex);
end.
----
//登录界面
procedure TForm1.FormShow(Sender: TObject);
begin
Form2.ShowModal;
end;
----
//登录确认
procedure TForm2.Button1登录Click(Sender: TObject);
begin
TMyThread.Create(False);
end;
----
//线程
procedure TMyThread.Execute;
......
核对登录信息