2011-07-28 56 views
-1

有4個標誌是在文章/例子通常描述:德爾福:進程創建旗幟在CreateProcess函數

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

這2個鏈接有什麼區別?

爲什麼我在CreateProcess函數得到一個錯誤:不兼容的類型: '紅衣主教' 和 'TThreadPriority' 如果我有做:

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

什麼TThreadPriority ....

謝謝!

+0

關於你的第二個鏈接; [GetPriorityClass](http://msdn.microsoft.com/en-us/library/ms683211%28v=VS.85%29.aspx)函數 - 不,你不能;它被直接寫入參考文獻'過程的優先級是下列值之一。' – 2011-07-28 01:31:21

+0

你是否真的是指所有這些(即同時),還是你是指其中的任何一個? – hatchet

+1

@maxfax - 關於你的第一個鏈接和問題;我不明白你在這裏問的問題。在每個API函數中,都會提到可以作爲參數傳遞的參數,如果這樣的組合之一。 – 2011-07-28 01:34:00

回答

4

您可以使用GetPriorityClass函數提到的6個標誌之一。 RTL忽略2個標誌的原因是它們在Windows 9x/ME上不受支持(這是在D2007中,也許更高版本有這些標誌)。

您可以or優先級標誌與進程創建標誌的任意組合(文檔中註明 - 您提供的第一個鏈接除外)。


TThreadPriority是'classes.pas'中TThread中使用的枚舉類型,與進程創建標誌無關。發佈在問題中的代碼似乎沒有任何問題(請參閱問題的評論)。