句柄c語言
『壹』 c語言中如何獲得當前進程句柄,謝謝!
DWORD PID;
PID = GetProcessPID(L"test.exe");
//獲取進程pid函數
DWORD GetProcessPID(LPCTSTR pName)
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (INVALID_HANDLE_VALUE == hSnapshot) {
return NULL;
}
PROCESSENTRY32 pe = { sizeof(pe) };
BOOL fOk;
for (fOk = Process32First(hSnapshot, &pe); fOk; fOk = Process32Next(hSnapshot, &pe)){
if (!_tcsicmp(pe.szExeFile, pName)) {
CloseHandle(hSnapshot);
return pe.th32ProcessID;
}
}
return NULL;
}
//由進程pid獲取進程句柄,置頂
HWND hh = GetProcessTopWindows(PID);
HWND GetProcessTopWindows(DWORD dwPID){
count = 0;
EnumWindows((WNDENUMPROC)EnumWndProc, (LPARAM)dwPID);
if(count > 0) {
//cout << "窗口句柄是:" << nhWnd[count -1] << endl;//輸出句柄,可用spy++工具核對
return (nhWnd[count -1]);
}
return NULL;
}
別忘了添加對應頭文件。
『貳』 HandleType;在c語言里是什麼意思
這個是Windows API庫裡面的東西
『叄』 誰能解釋一下 HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE))在C語言中是什麼意思
上句執行後,定義了一個句柄變數hConsole,將其賦值為GetStdHandle((STD_OUTPUT_HANDLE)),即標准輸出的句柄。
例如:
#include <stdio.h>
#include <windows.h>
int main(void)
{
HANDLE consolehwnd; //創建句柄,詳細句柄知識,請網路一下或查MSDN
consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE); //實例化句柄
SetConsoleTextAttribute(consolehwnd, FOREGROUND_RED);//設置字體顏色
printf("hello ");
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf("world!
");
getchar();
SetConsoleTextAttribute(consolehwnd,BACKGROUND_INTENSITY |BACKGROUND_BLUE);
printf("It is really beautiful!
");
return 0;
}
(3)句柄c語言擴展閱讀:
注意事項
SetConsoleTextAttribute()函數是一個API設置字體顏色和背景色的函數。參數表中使用兩個屬性(屬性之間用,隔開)。GetStdHandle()和FOREGROUND_*或BACKGROUND_*。*值為INTENSITY或RED或GREEN或BLUE。第一個屬性獲得句柄(即要設置顏色的地方),第二個屬性設置顏色。屬性相加是在屬性值中間加「|」隔開即可。
GetStdHandle(STD_OUTPUT_HANDLE)獲得句柄。
FOREGROUND_INTENSITY表示設置前景色為高亮顯示。
FOREGROUND_RED表示設置前景色為紅色,即字體顏色為紅色。
FOREGROUND_GREEN表示設置前景色為綠色,即字體顏色為綠色。
FOREGROUND_BLUE表示設置前景色為藍色,即字體顏色為藍色。
BACKGROUND_INTENSITY表示設置背景色為高亮顯示。
BACKGROUND_RED 表示設置背景色為紅色。
BACKGROUND_GREEN表示設置背景色為綠色。
BACKGROUND_BLUE表示設置背景色為藍色。
說明:在使用時要在預處理中包含window.h頭文件。
『肆』 求助:C語言如何輸出句柄
句柄就是一種資源的序號,一般是個無符號整數而已,比如文件句柄,就是系統提供一組可以打開文件的數據結構(實際上是結構數組),句柄就是數組下標。
所謂輸出句柄,你可以將句柄當作函數調用的返回值,或者列印出來看也不是不可以。
『伍』 對於一個只懂C語言得人來說,怎麼理解句柄
句柄是一個序號, 它不是一個內存地址。
它用於管理Windows內核對象,比如用戶打開一個文件,Windows即會建立一個文件內核對象,所謂內核對象就是一塊內存結構,裡面有文件路徑,文件大小,當前文件指針等等信息。Windows系統會打開很多的文件,因此就有很多的文件內核對象,同樣Windows系統還會建立其它的類型的很多很多的內核對象。如何管理這么多的內核對象 呢?Windows通過建立一個叫做句柄表的東西,用於記錄內核對象的地址。表中每一個元素,都是一個內核對象的起始地址,然後給每一個對象對應一個序號,此序號即為句柄。
//句柄表類似於下面的結構,像0、1、2這樣的序號即為句柄
----------------------------------------------------
0第一個內核對象的地址
1第二個內核對象的地址
2第三個內核對象的地址
----------------------------------------------------