Delphi:CreateProcess 函数中的进程创建标志

发布于 2024-11-26 23:16:04 字数 1074 浏览 0 评论 0 原文

文章/示例中通常描述了 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....

谢谢!

There are 4 flags that are described usually in articles/examples:

 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}

Can I use any of them: http://msdn.microsoft.com/en-us/library/ms684863(v=VS.85).aspx / http://msdn.microsoft.com/en-us/library/ms683211(v=VS.85).aspx in that function?

What is the difference between those 2 links?

Why do I get an error in a CreateProcess function: Incompatible types: 'Cardinal' and 'TThreadPriority' if I have and do:

var Priority : Cardinal
Priority:=NORMAL_PRIORITY_CLASS;
CreateProcess(PChar(Path), Pchar(Par), nil, nil, false,
Priority, nil, nil, StartUpInfo, ProcessInfo);

What TThreadPriority....

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瞄了个咪的 2024-12-03 23:16:04

您可以使用 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 in TThread 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).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文