Delphi:CreateProcess 函数中的进程创建标志
文章/示例中通常描述了 4 个标志:
NORMAL_PRIORITY_CLASS = $00000020;
{$EXTERNALSYM NORMAL_PRIORITY_CLASS}
IDLE_PRIORITY_CLASS = $00000040;
{$EXTERNALSYM IDLE_PRIORITY_CLASS}
HIGH_PRIORITY_CLASS = $00000080;
{$EXTERNALSYM HIGH_PRIORITY_CLASS}
REALTIME_PRIORITY_CLASS = $00000100;
{$EXTERNALSYM REALTIME_PRIORITY_CLASS}
我可以使用其中任何一个吗:http://msdn.microsoft.com/en-us/library/ms684863(v=VS.85).aspx / http://msdn.microsoft.com/en-us/那个函数中的library/ms683211(v=VS.85).aspx?
这两个链接有什么区别?
为什么我会在 CreateProcess 函数中收到错误:不兼容的类型:'Cardinal' 和 'TThreadPriority' 如果我有并且执行以下操作:
var Priority : Cardinal
Priority:=NORMAL_PRIORITY_CLASS;
CreateProcess(PChar(Path), Pchar(Par), nil, nil, false,
Priority, nil, nil, StartUpInfo, ProcessInfo);
What TThreadPriority....
谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 GetPriorityClass 函数文档中提到的 6 个标志之一。 RTL 省略其中 2 个标志的原因是它们在 Windows 9x/ME 上不受支持(这是在 D2007 中,也许更高版本有这些标志)。
您可以
或
优先级标志与进程创建标志的任意组合(文档中注明的除外 - 您提供的第一个链接)。TThreadPriority
是“classes.pas”中TThread
中使用的枚举类型,与进程创建标志没有任何关系。问题中发布的代码似乎没有任何问题(请参阅问题的评论)。You can use one of the 6 flags that the documentation of
GetPriorityClass
function mentions. The reason RTL omits 2 of the flags is that they are not supported on Windows 9x/ME (this is in D2007, maybe later versions have those flags).You can
or
the priority class flag with any combination of process creation flags (except noted in the documentation - the first link you've provided).TThreadPriority
is an enumerated type used inTThread
in 'classes.pas' and is not related in anyway with process creation flags. The code posted in the question does not seem to have any problem (see comments to the question).