Microsoft có một trình bao bọc Windows API rất đẹp bao gồm trong khuôn khổ .NET. Nó được lưu trữ trong Microsoft.Win32.UnsafeNativeMethods, Microsoft.Win32.SafeNativeMethods và Microsoft.Win32.NativeMethods .Unfortunately họ không thể truy cập bởi vì chúng được khai báo là tư nhân. Có cách tiếp cận dễ dàng không?Truy cập Microsoft.Win32.UnsafeNativeMethods?
Trả lời
Hầu hết các định nghĩa phương thức trong các lớp đó (nếu không phải tất cả) là khai báo extern
với thuộc tính DllImport tham chiếu đến các hàm trong API Windows thông qua P/Invoke. Không quan trọng nơi những tờ khai này cư trú. Bạn có thể tạo lớp của riêng bạn có tên là UnsafeNativeMethods hoặc SafeNativeMethods và đặt các khai báo đề cập đến cùng một hàm API của Windows trong đó. Bạn sẽ tìm thấy chữ ký của nhiều hàm API Windows cho C# trên pinvoke.net.
Hầu hết các chức năng có trong các lớp này được hiển thị bởi chính khuôn khổ .Net; bạn nên tìm kiếm (hoặc hỏi ở đây) trước khi thực hiện cuộc gọi API.
Để trả lời câu hỏi của bạn, không.
Điều tốt nhất bạn có thể làm là sao chép chúng từ Reflector hoặc nguồn tham chiếu.
Bạn đang đề xuất vi phạm bản quyền? – dtb
Nó không phải là vi phạm bản quyền khi chỉ có một cách chính xác để làm điều đó. – Josh
@Nick Brooks: "Nguồn mở" là một thuật ngữ được xác định rõ. Và nó không áp dụng cho giấy phép để xem mã nguồn cho mục đích cá nhân hoặc học tập (theo đó nguồn tham chiếu được cấp phép). – dtb
Đối với những gì nó có giá trị tôi luôn luôn nghĩ rằng nên có được một kernel32.interop.dll vv với các phương pháp tĩnh đã DllImport'ed. Nhưng tôi đã sử dụng để tạo của riêng mình trên cơ sở cần thiết. Trong những năm qua tôi đã tìm thấy tôi hiếm khi sử dụng nhiều hơn một số ít trong số họ, nhưng nó là một nỗi đau trong ass khi tôi cần một API mà tôi chưa nhập khẩu được nêu ra.
Lý do có thể là tác động bảo mật của SuppressUnmanagedCodeSecurityAttribute. Kiểm tra Move P/Invokes to NativeMethods class
- 1. Truy cập nhanh hơn, truy cập con trỏ hoặc truy cập tham chiếu nào?
- 2. truy cập cập nhật truy vấn sql nhiều giá trị
- 3. GitHub - HTTPS truy cập
- 4. Truy cập Windows Registry
- 5. Truy cập Firebase .NET
- 6. Truy cập mạng RavenDB
- 7. Truy cập dữ liệu được truy xuất
- 8. Truy cập chuỗi truy vấn Compojure
- 9. Truy cập các phương thức dll trong java
- 10. Microsoft.Win32.TaskScheduler NOT FOUND - Tôi muốn nhập namespace này trong VB.NET
- 11. Truy cập iPhone từ Windows
- 12. Truy cập webmethod với jquery
- 13. Truy cập OAuth cho R
- 14. Truy cập mảng Delphi + Assembly
- 15. Truy cập thư mục WP8
- 16. Truy cập di động động
- 17. Truy cập Mysql bằng dapper
- 18. Truy cập phiên trong Mẫu
- 19. Sửa chữa truy cập Gitolite
- 20. Quyền truy cập vào sys.dm_db_index_usage_stats
- 21. Truy cập các biến tĩnh
- 22. Truy cập scala.None từ Java
- 23. iOS: Cách truy cập `UIKeyboard`?
- 24. Truy cập micrô bằng Python
- 25. django OneToOne truy cập ngược
- 26. Truy cập lĩnh vực Django.choices
- 27. Truy cập gmail từ Java
- 28. đồng thời truy cập file
- 29. Lỗi Validating Truy cập Mã
- 30. Cách truy cập tệp mạng?
Điều đó cần độ tuổi. Tôi muốn có quyền truy cập vào tất cả các chức năng trong một lớp. –
Như @SLaks đã viết, nhiều hàm API đã được hiển thị dưới dạng các lớp được quản lý trong Khuôn khổ .NET, ví dụ: truy cập đăng ký, cửa sổ, GDI. Thường không mất nhiều thời gian để sao chép một vài chữ ký phương thức từ một trang web vào một tệp C#. Nếu bạn đang phụ thuộc nhiều vào Windows API và không sử dụng .NET Framework, tại sao không sử dụng một ngôn ngữ lập trình thích hợp hơn? – dtb
Tạo giao diện người dùng đẹp mắt trong C++ là một cơn đau đầu. (IMHO) –