在我的程序中,我有以下代码:
//Code
if not CreateProcess(nil, NonConstCmd, nil, nil, True, NORMAL_PRIORITY_CLASS or
CREATE_NEW_PROCESS_GROUP, nil, PCh, SI, P) then
//Code
Run Code Online (Sandbox Code Playgroud)
并且我一直收到访问冲突错误.顺便说一下,在Delphi7中,相同的代码完美地运行.我读过MSDN,发现Delphi中的CreateProcess函数可以修改第二个参数.初始它是const,这就是为什么我创建一个具有相同值的新变量.但它没有任何效果.
问题是:为什么这段代码不起作用?
我有一个程序从其他应用程序接收字符串消息并使用VCL解析它们.消息发送如下:
AtomId := GlobalAddAtom(PChar(s));
SendMessage(MyProgramHandle, WM_MSG, 0, AtomID);
GlobalDeleteAtom(AtomID);
Run Code Online (Sandbox Code Playgroud)
我的程序收到此消息,解析它一段时间,然后将控制权返回给应用程序.解析一条消息需要时间,因此其他应用程序的性能会恶化.
一种可能的解决方案是在其他线程中创建具有相同标题和相同类的表单,并重命名主表单的类.但据我所知,不建议在线程中创建表单.
那么,有什么方法可以改善性能?