Chào mọi người!
Trong diễn đàn A/E nào có tài liệu về winapi code C# cho mình xin với!
Mình đã tìm kiếm mà về C# thì hiếm quá!
Có tình yêu nào mới bắt đầu như mình thì add friend cùng nhau chia sẻ học tập nhé!
Cảm Ơn Mọi Người!
Chào mọi người!
Trong diễn đàn A/E nào có tài liệu về winapi code C# cho mình xin với!
Mình đã tìm kiếm mà về C# thì hiếm quá!
Có tình yêu nào mới bắt đầu như mình thì add friend cùng nhau chia sẻ học tập nhé!
Cảm Ơn Mọi Người!
Không có tài liệu nhưng tựa chung nó là thế này :
Để sử dụng WinAPI hay các hàm viết bằng C/C++ trong các file dll như sau :
1.Sử dụng namespace System.Runtime.InteropService.
using System.Runtime.InteropService;
2.Khai báo hàm WinAPI. Cái này phải tra xem hàm API tên là gì, các kiểu tham số truyền ra, truyền vào, file dll chứa hàm trên MSDN.
Ví dụ với hàm FlashWindow nằm trong user32.dll. Trong C++ nó thế này :
BOOL WINAPI FlashWindow(
_In_ HWND hWnd,
_In_ BOOL bInvert
);
Sang C# sẽ khai báo thế này (khai báo trong Class):
[DllImport("user32.dll")]
private extern static bool FlashWindow(IntPtr hWnd,bool bInvert);
// chú ý một số từ khóa từ C++ sang C# sẽ phải đổi để tương thích. Ví dụ hWnd trong C++ là con trỏ thì sang C# sẽ đổi là IntPtr vì IntPtr là con trỏ.
// nếu không phải user32.dll mà là 1 file dll tự viết thì có thể đổi user32.dll là đường dẫn file dll đó.
3.Bây giờ chỉ việc dùng:
private void UseWinAPIFunction(){
FlashWindow(this.Handle,true); // gọi hàm WinAPI.
}
Thanks AE để mình làm thử xem thế nào:D
https://medium.com/@matterpreter/offensive-p-invoke-leveraging-the-win32-api-from-managed-code-7eef4fdef16d
Bác ở trên nói cũng đủ rồi, em chỉ xin bổ sung bài viết này, nó có bảng chuyển các kiểu data giữa managed code với unmanaged code