595
Chương 15: Khả năng liên tác mã lệnh không-được-quản-lý
// khi duyệt qua các cửa sổ đang mở.
[DllImport("user32.dll")]
public static extern int EnumWindows(CallBack callback, int param);
[DllImport("user32.dll")]
public static extern int GetWindowText(int hWnd,
StringBuilder lpString, int nMaxCount);
private static void Main() {
CallBack callBack = new CallBack(DisplayWindowInfo);
// Yêu cầu hệ điều hành duyệt qua các cửa sổ đang mở,
// kích hoạt callback với handle của mỗi cửa sổ.
EnumWindows(callBack, 0);
Console.ReadLine();
}
// Hàm sẽ nhận callback. Thông số thứ hai
// không được sử dụng nhưng phải được khai báo để
// tương thích với chữ ký của callback.
public static bool DisplayWindowInfo(int hWnd, int lParam) {
int chars = 100;
StringBuilder buf = new StringBuilder(chars);
if (GetWindowText(hWnd, buf, chars) != 0) {
Console.WriteLine(buf);
}
return true;
}
}
5.
5.
L y thông tin l i không-đ
c-qu n-lý
ấ
ỗ
ượ
ả
L y thông tin l i không-đ
c-qu n-lý
ấ
ỗ
ượ
ả
Bạn cần truy xuất thông tin lỗi (mã lỗi hoặc thông điệp mô tả lỗi) giải thích tại
sao một lời gọi Win32 API thất bại.
Trong phần khai báo của hàm không-được-quản-lý, thiết lập trường
SetLastError
của đặc tính
DllImportAttribute
là
true
. Nếu có lỗi khi thực thi, gọi