1. 程式人生 > >Windows核心程式設計之多程序概述

Windows核心程式設計之多程序概述

三、與程序相關的API
4、獲取程序的可執行檔案或DLL對應的控制代碼
              HMODULE GetModuleHandle(
                      PCTSTR pszModule); //模組名稱
              注:當引數傳NULL時獲取的是程序的地址空間中可執行檔案的基地址。
5、獲取與指定視窗關聯在一起的一個程序和執行緒識別符號
              HANDLE GetWindowThreadProcessId(
                      HWND hWnd,    //視窗控制代碼
                      LPDWORD lpdwProcessId); //與該視窗相關的程序ID
6、獲取程序的執行時間
              Bool GetProcessTimes(
                      HANDLE hProcess,   //程序控制代碼
                      PFILETIME pftCreationTime, //建立時間
                      PFILETIME pftExitTime, //退出時間
                      PFILETIME pftKernelTime, //核心時間
                      PFILETIME pftUserTime); //使用者時間
              注:返回的時間適用於某個程序中的所有執行緒(甚至已經終止執行的執行緒)。
7、獲取當前程序的一個偽控制代碼
              HANDLE GetCurrentProcess();
               注:該函式獲取當前程序的偽控制代碼,通常情況值為-1,只能標識當前程序核心物件,
                      可以複製,但不可繼承。不必呼叫CloseHandle()函式來關閉這個控制代碼。
8、將程序的偽控制代碼轉換為實控制代碼
              HANDLE DuplicateHandle(
                      GetCurrentProcess(),
                      GetCurrentProcess(),
                      GetCurrentProcess(),
                      &hProcess,
                      0,
                      FALSE ,
                      DUPLICATE_SAME_ACCESS);
9、獲取當前程序ID
              DWORD GetCurrentProcessId();
10、獲取程序優先順序
              DWORD GetPriorityClass(
                   HANDLE hProcess);
11、修改程序的優先順序類
              BOOL SetPriorityClass(
                     HANDLE hProcess, //程序控制代碼
                     DWORD fdwPriority); //相對程序優先順序
              注1:相對執行緒優先順序
                     實時: REALTIME_PRIORITY_CLASS
                     高: HIGH_PRIORITY_CLASS
                     高於正常; ABOVE_NORMAL_PRIORITY_CLASS
                     正常: NORMAL_PRIORITY_CLASS
                     低於正常: BELOW_NORMAL_PRIORITY_CLASS
                     空閒: IDLE_PRIORITY_CLASS
              注2:只要擁有程序的控制代碼和足夠的許可權,就能夠修改系統中執行的任何程序的優
                       先級類。
12、獲取程序控制代碼計數
              BOOL GetProcessHandleCount(
                      HANDLE hProcess,   //控制代碼
                      PDWORD pdwHandleCount); //控制代碼計數
13、獲取環境塊
              DWORD GetEnvironmentVariable(
                      LPCTSTR lpName, //環境變數的名字
                      LPTSTR lpValue, //存放返回字串的緩衝區
                      DWORD cchValue); //緩衝區的大小
              注:返回值為返回字串的長度,當快取不足時返回所需字串的長度
14、設定環境塊
              BOOL SetEnvironmentVariable(
                      LPCTSTR lpName, //環境變數的名字
                      LPCTSTR lpValue); //存放變數值字串的緩衝區