Microsoft는 .NET Framework에 포함 된 아주 멋진 Windows API 래퍼를 가지고 있습니다. 그들이 비공개로 선언되기 때문에 .Unfortunately가 액세스 할 수없는 Microsoft.Win32.UnsafeNativeMethods, Microsoft.Win32.SafeNativeMethods 및 Microsoft.Win32.NativeMethods에 저장됩니다. 쉽게 액세스 할 수 있습니까?Microsoft.Win32.UnsafeNativeMethods에 액세스 하시겠습니까?
7
A
답변
2
이러한 클래스의 대부분의 메서드 정의 (모두가 아닐 경우)는 Windows API의 P/Invoke를 통해 함수를 참조하는 DllImport 특성이있는 extern
속성의 선언입니다. In은 이러한 선언이 어디에 상주하는지는 중요하지 않습니다. UnsafeNativeMethods 또는 SafeNativeMethods라는 자체 클래스를 만들고 여기에 같은 Windows API 함수를 참조하는 선언을 넣을 수 있습니다. pinvoke.net에 C# 용 많은 Windows API 함수의 서명이 있습니다.
1
이러한 클래스에 포함 된 대부분의 기능은 .Net 프레임 워크 자체에 의해 노출됩니다. API 호출을하기 전에 검색 (또는 여기에서 요청)해야합니다.
질문에 대답하려면 다음과 같이하십시오.
최선의 방법은 리플 렉터 또는 참조 소스에서 복사하는 것입니다.
1
나는 항상 정적 메서드가 이미 DllImport'ed있는 kernel32.interop.dll 등이 있어야한다고 생각했다. 그러나 필자는 필요할 때마다 내 것을 만들려고 노력했습니다. 수년에 걸쳐 나는 소수의 API를 거의 사용하지 않는다는 것을 알았지 만 아직 가져 오지 않은 API가 필요할 때 엉망이되었습니다.
0
이유는 SuppressUnmanagedCodeSecurityAttribute의 보안 영향 일 수 있습니다. 확인 Move P/Invokes to NativeMethods class
관련 문제
- 1. C# : Microsoft.Win32.SafeHandles를 사용하는 방법
- 2. Microsoft.Win32.SafeHandles.SafeWaitHandle에서 메모리 누수가 발생합니까?
- 3. 64 비트 OS 용 Microsoft.Win32.RegistryKey
- 4. Microsoft.Win32.Registry의 GetValue가 기본값을 사용하지 않음
- 5. 사전 배열에 액세스 하시겠습니까?
- 6. UITableViewController에서 UIViewController에 액세스 하시겠습니까?
- 7. uiwebview에서 카메라에 액세스 하시겠습니까?
- 8. proc_fops.open에서 proc_dir_entry에 액세스 하시겠습니까?
- 9. 달걀 파이썬으로 액세스 하시겠습니까?
- 10. 클래스 바이트에 액세스 하시겠습니까?
- 11. Picker, dataSource에 액세스 하시겠습니까?
- 12. awakeFromNib에서보기에 액세스 하시겠습니까?
- 13. 앱에서 페이지에 액세스 하시겠습니까?
- 14. 사각형의 값에 액세스 하시겠습니까?
- 15. html 요소에 액세스 하시겠습니까?
- 16. 배열에있는 개체에 액세스 하시겠습니까?
- 17. settings.bundle에서 root.strings에 액세스 하시겠습니까?
- 18. 응용 프로그램 멤버에 액세스 하시겠습니까?
- 19. 스크립트에서 MovieClip에 액세스 하시겠습니까? (AS2)
- 20. Safari Extension에서 북마크에 액세스 하시겠습니까?
- 21. iPhone에서 AFP 공유에 액세스 하시겠습니까?
- 22. 다른보기에서 UISwitch 설정에 액세스 하시겠습니까?
- 23. 다른 클래스의 변수에 액세스 하시겠습니까?
- 24. NSTextField 범주 내에서보기에 액세스 하시겠습니까?
- 25. 프로젝트 리소스의 이미지에 액세스 하시겠습니까?
- 26. 정수 형식의 멤버에 액세스 하시겠습니까?
- 27. 브라우저에서 로컬 파일에 액세스 하시겠습니까?
- 28. 다른 컴퓨터에서 phppgadmin에 액세스 하시겠습니까?
- 29. iPhone - MySql 서버에 액세스 하시겠습니까?
- 30. Android에서 SQL 데이터베이스에 액세스 하시겠습니까?
이것은 시간이 오래 걸립니다. 한 클래스의 모든 함수에 액세스 할 수 있습니다. –
@SLaks가 쓴 것처럼 많은 API 함수는 이미 .NET Framework의 관리되는 클래스 (예 : 레지스트리 액세스, 창, GDI)로 제공됩니다. 보통 웹 사이트에서 몇 가지 메서드 서명을 C# 파일로 복사하는 데 너무 오래 걸리지 않습니다. Windows API에 많이 의존하고 .NET Framework를 사용하지 않는 경우보다 적절한 프로그래밍 언어를 사용하십시오. – dtb
C++에서 멋진 UI를 만드는 것은 어려움입니다. (IMHO) –