CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 591

591

Chương 15: Khả năng liên tác mã lệnh không-được-quản-lý

private System.Windows.Forms.Label lblCaption;

[DllImport("user32.dll")]

private static extern int GetForegroundWindow();

[DllImport("user32.dll")]

private static extern int GetWindowText(int hWnd, StringBuilder text,

int count);

private void tmrRefresh_Tick(object sender, System.EventArgs e) {

int chars = 256;

StringBuilder buff = new StringBuilder(chars);

int handle = GetForegroundWindow();

if (GetWindowText(handle, buff, chars) > 0) {

lblCaption.Text = buff.ToString();

lblHandle.Text = handle.ToString();

if (new IntPtr(handle) == this.Handle) {

lblCurrent.Text = "True";

} else {

lblCurrent.Text = "False";

}

}

}

}

Handle của form được quản lý một cách trong suốt đối với người dùng. Thay đổi
thuộc tính nào đó của form có thể khiến cho CRL
tạo một handle mới. Do đó,
bạn nên luôn truy xuất handle ngay trước khi sử dụng nó (không nên giữ nó
trong một biến để sử dụng trong một thời gian dài).

3.

3.

G i m t hàm không-đ

c-qu n-lý có s d ng c u trúc

ọ ộ

ượ

ử ụ

G i m t hàm không-đ

c-qu n-lý có s d ng c u trúc

ọ ộ

ượ

ử ụ

Bạn cần gọi một hàm không-được-quản-lý có thông số là một cấu trúc.

Định nghĩa cấu trúc trong mã

C#. Sử dụng đặc tính

System.Runtime.InteropServices.StructLayoutAttribute

để cấu hình việc cấp bộ

nhớ cho cấu trúc. Sử dụng phương thức tĩnh

SizeOf

của lớp

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.