程序工具模組

導論
取得列舉程序編號內容
取得視窗代號執行檔名
取得建立視窗代號執行緒編號
尋找程序編號內容
終結指定之程序編號
取得指定之程序編號優先順序
取得程式本身程序優先順序
取得程式本身執行緒優先順序
列舉程序執行優先順序類別常數
小秘訣
取得程序編號內容
取得視窗代號程序編號
取得列舉模組內容
由指定程序編號取得程序代號
優先順序導論
設定指定之程序編號優先順序
設定程式本身程序優先順序
設定程式本身執行緒優先順序
列舉執行緒執行優先順序等級常數

導論

在 Windows API 中, hProcess 與 ProcessId 是不一樣的,當然與 hInstance 亦是完全不同的,在使用上時不要搞混了

原則上, hProcess 不會超過 &H7FFFFFFF (2147483647),ProcessId 不會小於 &H80000000 (-1 ~ -2147483648) ,在本網頁中函數名若未特別註明, *Process* 為相關程序代號 (hProcess) 之函數, *ProcessId* 為相關程序編號 (ProcessId) 之函數

小秘訣

特別函數之傳回值比較:

函數 特殊值 說明
GetCurrentProcess &H7FFFFFFF  
GetCurrentProcessId myGetWndThreadProcessId(Me.hWnd) 取得視窗代號程序編號
GetCurrentThreadId App.ThreadID
myGetCreateThreadProcessId(Me.hWnd)
取得建立視窗代號執行緒編號

取得列舉程序編號內容

函數名:myEnumProcessId,傳回列舉程序陣列

引數 類型 說明
dwEnumItem 可省略 enum_ProcessID,傳回 ProcessID 陣列,預設值
enum_ExeFile,傳回程序檔名陣列
enum_UsageCount,傳回程序被執行份數陣列
enum_DefaultHeapID,傳回 DefaultHeapID 陣列
enum_ModuleID,傳回 ModuleID 陣列
enum_ThreadsCount,傳回程序內執行緒個數陣列
enum_ParentProcessID,傳回程序父 ProcessID 陣列
enum_pcPriClassBase,傳回 pcPriClassBase 陣列

範例:

tp = myEnumProcessId(enum_ExeFile)
For i = LBound(tp) To UBound(tp) : Debug.Print i, tp(i) : Next i
' 傳回值為正在視窗內執行的完整長檔名的文字陣列 (不重複)

說明:

本函數僅支援 Windows 95/98 及 Windows NT 2000 以上系統,若在 IDE 環境中, VB 為程序母體,則傳回 VB 程式

取得程序編號內容

函數名:myGetProcessId,傳回指定程序編號內容

引數 類型 說明
dwProcessId 長整數 ProcessID
dwGetItem 可省略 enum_ProcessID,傳回 ProcessID ,預設值
enum_ExeFile,傳回程序檔名
enum_UsageCount,傳回程序被執行份數
enum_DefaultHeapID,傳回 DefaultHeapID
enum_ModuleID,傳回 ModuleID
enum_ThreadsCount,傳回程序內執行緒個數
enum_ParentProcessID,傳回程序父 ProcessID
enum_pcPriClassBase,傳回 pcPriClassBase

範例:

Debug.Print myGetProcessId(dwProcessId, enum_ExeFile)
' 傳回值為程序的完整長檔名

說明:

本函數僅支援 Windows 95/98 及 Windows NT 2000 以上系統,若在 IDE 環境中, VB 為程序母體,則傳回 VB 程式

取得視窗代號執行檔名

函數名:myGetProcessIdFileName,傳回指定視窗代號完整長檔名

引數 類型 說明
hWnd 長整數 視窗代號

範例:

Debug.Print myGetProcessIdFileName(Me.hWnd)
' 傳回 C:\PROGRAM FILES\DEVSTUDIO\VB\VB5.EXE

說明:

本函數僅支援 Windows 95/98 及 Windows NT 2000 以上系統,若在 IDE 環境中, VB 為程序母體,則傳回 VB 程式

取得視窗代號程序編號

函數名:myGetWndThreadProcessId,傳回指定視窗代號的程序編號

引數 類型 說明
hWnd 長整數 視窗代號

範例:

Debug.Print myGetWndThreadProcessId(Me.hWnd)
' 傳回指定視窗代號的程序編號

取得建立視窗代號執行緒編號

函數名:myGetCreateThreadProcessId,傳回建立指定視窗代號的執行緒編號

引數 類型 說明
hWnd 長整數 視窗代號

範例:

Debug.Print myGetCreateThreadProcessId(Me.hWnd)
' 傳回建立指定視窗代號的執行緒編號

取得列舉模組內容

函數名:myEnumProcessIdModule,傳回列舉模組 (函式庫) 陣列

引數 類型 說明
dwProcessId 長整數 ProcessID
dwEnumItem 可省略 enum_ProcessID,傳回 ProcessID 陣列
enum_ExeFile,傳回模組完整路徑檔名陣列
enum_UsageCount,傳回模組全域被執行份數陣列
enum_ProcessCount,傳回模組在 dwProcessId 被執行份數陣列
enum_ModuleID,傳回 ModuleID 陣列,預設值
enum_ModuleBaseAddr,傳回模組在記憶體基本位置陣列
enum_ModuleBaseSize,傳回模組在記憶體基本大小陣列
enum_hModule,傳回模組代號陣列
enum_ModuleName,傳回模組檔名陣列 (無路徑)

範例:

ProcId = myGetWndThreadProcessId(Me.hWnd)
tp = myEnumProcessIdModule(ProcId, enum_ExeFile)
For i = LBound(tp) To UBound(tp) : Debug.Print i, tp(i) : Next i
' 傳回值為正在視窗內執行的完整長檔名的文字陣列 (不重複)

說明:

本函數僅支援 Windows 95/98 及 Windows NT 2000 以上系統,若在 IDE 環境中, VB 為程序母體,則傳回 VB 程式的函式庫群

尋找程序編號內容

函數名:myFindProcessId,傳回指定程序內容

引數 類型 說明
ProcessName 字串 完整長檔名
dwGetItem 可省略 enum_ProcessID,傳回 ProcessID ,預設值
enum_ExeFile,傳回程序檔名
enum_UsageCount,傳回程序被執行份數
enum_DefaultHeapID,傳回 DefaultHeapID
enum_ModuleID,傳回 ModuleID
enum_ThreadsCount,傳回程序內執行緒個數
enum_ParentProcessID,傳回程序父 ProcessID
enum_pcPriClassBase,傳回 pcPriClassBase

範例:

Debug.Print myFindProcessId("c:\program files\internet explorer\iexplore.exe")
' 傳回值為 ProcessId

說明:

本函數僅支援 Windows 95/98 及 Windows NT 2000 以上系統,若在 IDE 環境中, VB 為程序母體,則傳回 VB 程式

由指定程序編號取得程序代號

函數名:myGetHandleProcess,由指定程序編號取得程序代號,傳回 hProcess

引數 類型 說明
ProcessId 長整數 程序編號

範例:

Debug.Print myGetHandleProcess(ProcessId)
' 傳回指定編號的程序代號 (hProcess)

終結指定之程序編號

函數名:myTerminateProcessId,終結指定的程序編號

引數 類型 說明
ProcessId 長整數 程序編號

範例:

myTerminateProcessId hProcessId
' 終結指定的程序編號

優先順序導論

優先順序又稱優先權,在 Windows 中,優先順序由 1 ~ 31 , 1 為最慢, 31 為最高,系統執行時依執行緒為基於程序之優先順序之混合運算後,得到系統中之優先順序,詳細混合運算量級表如下:

系統優先順序 程序優先順序類別 執行緒優先順序等級
1 IDLE_PRIORITY_CLASS THREAD_PRIORITY_IDLE
1 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_IDLE
1 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_IDLE
1 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_IDLE
1 HIGH_PRIORITY_CLASS THREAD_PRIORITY_IDLE
2 IDLE_PRIORITY_CLASS THREAD_PRIORITY_LOWEST
3 IDLE_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL
4 IDLE_PRIORITY_CLASS THREAD_PRIORITY_NORMAL
4 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST
5 IDLE_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL
5 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL
5 Background NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST
6 IDLE_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST
6 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL
6 Background NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL
7 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL
7 Background NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL
7 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST
8 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST
8 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL
8 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL
8 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_LOWEST
9 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST
9 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL
9 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL
10 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL
10 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_NORMAL
11 Foreground NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST
11 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL
11 HIGH_PRIORITY_CLASS THREAD_PRIORITY_LOWEST
12 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST
12 HIGH_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL
13 HIGH_PRIORITY_CLASS THREAD_PRIORITY_NORMAL
14 HIGH_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL
15 HIGH_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST
15 HIGH_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL
15 IDLE_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL
15 BELOW_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL
15 NORMAL_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL
15 ABOVE_NORMAL_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL
16 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_IDLE
17 REALTIME_PRIORITY_CLASS -7
18 REALTIME_PRIORITY_CLASS -6
19 REALTIME_PRIORITY_CLASS -5
20 REALTIME_PRIORITY_CLASS -4
21 REALTIME_PRIORITY_CLASS -3
22 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_LOWEST
23 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_BELOW_NORMAL
24 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_NORMAL
25 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_ABOVE_NORMAL
26 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_HIGHEST
27 REALTIME_PRIORITY_CLASS 3
28 REALTIME_PRIORITY_CLASS 4
29 REALTIME_PRIORITY_CLASS 5
30 REALTIME_PRIORITY_CLASS 6
31 REALTIME_PRIORITY_CLASS THREAD_PRIORITY_TIME_CRITICAL

註:部分代號僅 Windows 2000 才可設定

取得指定之程序編號優先順序

函數名:myGetProcessIdPriority,取得指定的程序編號系統執行程序優先順序類別

引數 類型 說明
ProcessId 長整數 程序編號

範例:

Debug.Print myGetProcessIdPriority(ProcessId)
' 傳回指定的程序編號系統執行優先順序

設定指定之程序編號優先順序

函數名:mySetProcessIdPriority,設定指定的程序編號系統執行程序優先順序類別

引數 類型 說明
ProcessId 長整數 程序編號
nPriority 長整數 程序優先順序類別

範例:

Debug.Print mySetProcessIdPriority(ProcessId, HIGH_PRIORITY_CLASS)
' 傳回設定前的程序編號系統執行優先順序

取得程式本身程序優先順序

函數名:myGetAppProcessPriority,取得程式本身程序在系統執行程序優先順序類別

引數 類型 說明
- -

範例:

Debug.Print myGetAppProcessPriority
' 傳回程式本身程序在系統執行優先順序

設定程式本身程序優先順序

函數名:mySetAppProcessPriority,設定程式本身程序在系統執行程序優先順序類別

引數 類型 說明
nPriority 長整數 程序優先順序類別

範例:

Debug.Print mySetAppProcessPriority(HIGH_PRIORITY_CLASS)
' 傳回設定前的程式本身程序在執行優先順序

取得程式本身執行緒優先順序

函數名:myGetAppThreadPriority,取得程式本身執行緒在程式本身程序執行執行緒優先順序等級

引數 類型 說明
- -

範例:

Debug.Print myGetAppThreadPriority
' 傳回程式本身執行緒在程式本身程序執行優先順序

設定程式本身執行緒優先順序

函數名:mySetAppThreadPriority,設定程式本身執行緒在程式本身程序執行執行緒優先順序等級

引數 類型 說明
nPriority 長整數 執行緒優先順序等級

範例:

Debug.Print mySetAppThreadPriority(THREAD_PRIORITY_HIGHEST)
' 傳回設定前的程式本身執行緒在程式本身程序執行優先順序

列舉程序執行優先順序類別常數

常數 說明
REALTIME_PRIORITY_CLASS &H100 即時執行優先順序類別
HIGH_PRIORITY_CLASS &H80 較高執行優先順序類別
NORMAL_PRIORITY_CLASS &H20 正常執行優先順序類別
IDLE_PRIORITY_CLASS &H40 較低執行優先順序類別

列舉執行緒執行優先順序等級常數

常數 說明
THREAD_PRIORITY_TIME_CRITICAL 15 重要時間執行優先順序等級
THREAD_PRIORITY_HIGHEST 2 較高執行優先順序等級
THREAD_PRIORITY_ABOVE_NORMAL 1 稍高執行優先順序等級
THREAD_PRIORITY_NORMAL 0 正常執行優先順序等級
THREAD_PRIORITY_BELOW_NORMAL -1 稍低執行優先順序等級
THREAD_PRIORITY_LOWEST -2 較低執行優先順序等級
THREAD_PRIORITY_IDLE -15 當機執行優先順序等級