홈페이지 | 문서 | 예 | 패키지 | 블로그
Win32는 FFI를 사용하여 가장 일반적인 Win32 API에 액세스하여 C 컴파일러 또는 Windows SDK없이 DART 코드에 액세스 할 수 있도록하는 DART 패키지입니다.
Win32를 통해 DART 개발자는 FFI를 사용하여 광범위한 Win32 API 호출을 활용하여 Windows 하드웨어 및 시스템 서비스에 대한 액세스를 단순화 할 수 있습니다. 전통적인 Win32 및 Com (Component Object Model) API에 사용하기 쉬운 바인딩을 제공하면 DART 코드에서 직접 Windows 별 기능을 완전히 활용할 수 있습니다.
Win32 는 엄청나게 다재다능하며 다음을 포함한 다양한 시나리오에서 유용 할 수 있습니다.
Windows의 Flut Win32는 이것을 쉽게 가능하게합니다.
크로스 플랫폼 패키지 개발 : 새로운 크로스 플랫폼 패키지를 작성할 때 Windows 특정 구현에 Win32를 사용하여 패키지가 Windows에서 원활하게 작동하는지 확인할 수 있습니다.
향상된 명령 줄 유틸리티 : DART와 함께 명령 줄 유틸리티를 개발하고 dart:io 라이브러리가 제공하는 것보다 더 고급 파일 API가 필요한 경우 Win32는 필요한 기능을 제공합니다.
기존 Windows 라이브러리와의 통합 : Win32를 사용하여 메타 데이터를 게시 한 다른 Windows 라이브러리와 앱을 원활하게 통합합니다.
WIN32 의 주요 목표는 DART 개발자에게 기본 Windows API에 직접 액세스 할 수 있도록하여 API 컨벤션을 수동으로 매핑하고 DART를 단순화하며 생산성을 향상시킬 필요가 없습니다.
Win32.pub/docs에서 전체 문서를 살펴보고 Win32 패키지의 기능과 기능에 대해 자세히 살펴보십시오.
아래의 적절한 명령을 실행하여 프로젝트에 FFI 및 Win32 패키지를 추가하십시오.
플러터 프로젝트 :
flutter pub add ffi win32다트 전용 프로젝트 :
dart pub add ffi win32다음은 Windows API의 MessageBox 함수를 사용하여 메시지 상자를 표시하는 방법을 보여주는 예입니다.
import 'package:ffi/ffi.dart' ;
import 'package:win32/win32.dart' ;
void main () {
final lpCaption = 'Dart MessageBox Demo' . toNativeUtf16 ();
final lpText = '''
This is not really an error, but we are pretending for the sake of this demo.
Resource error.
Do you want to try again?
'''
. toNativeUtf16 ();
final result = MessageBox (
NULL ,
lpText,
lpCaption,
MESSAGEBOX_STYLE . MB_ICONWARNING | // Warning icon
MESSAGEBOX_STYLE . MB_CANCELTRYCONTINUE | // Action button
MESSAGEBOX_STYLE . MB_DEFBUTTON2 , // Second button is the default
);
free (lpText);
free (lpCaption);
switch (result) {
case MESSAGEBOX_RESULT . IDCANCEL :
print ( 'Cancel pressed' );
case MESSAGEBOX_RESULT . IDTRYAGAIN :
print ( 'Try Again pressed' );
case MESSAGEBOX_RESULT . IDCONTINUE :
print ( 'Continue pressed' );
}
}Win32 의 힘을 보여주는 몇 가지 사용 사례는 다음과 같습니다.
이 패키지는 기존 Windows 개발자에 대한 친숙 함을 목표로 DART 관용구를 지원하기 위해 Win32 API에 대한 최소 수정을 제공합니다. 다른 다트 패키지는 이러한 프리미티브를 구축하여 다트 및 플러터 개발자에게보다 관용 API를 제공 할 수 있습니다.
좋은 예는 FFI에 대한 지식없이 Windows 레지스트리에 액세스하기위한 API 세트를 제공하는 Win32_Registry입니다.
이 패키지에는 다양한 Win32 및 COM API를 호출하는 것을 보여주는 많은 예가 있습니다. 이것들은 예제 서브 디렉토리에서 찾을 수 있으며 각 예제에 대한 간단한 설명은 여기에서 찾을 수 있습니다.
Win32 에 의해 노출 된 저수준 API에 점점 더 많은 다트 패키지가 구축되어 플러터 및 다트 앱에 통합하기 쉬운보다 관용 클래스 포장지를 제공합니다.
Win32 위에 내장 된 패키지 중 일부는 다음과 같습니다.
pub.dev에서 더 많은 패키지를 찾으십시오.
Win32 패키지는 Win32 API의 서브 세트를 제공하며 사용자 요구에 따라 더 많은 API가 정기적으로 추가됩니다. 추가 기능이 필요하거나 버그가 발생하면 문제 추적기에 문제를 제출하십시오.
Win32는 Semver (Semver)를 따르는 반면 Win32metadata 스크레이퍼의 개선 또는 새로운 API 추가로 인해 일부 버전 변경이 사소한 버전으로 발생할 수 있습니다.
잠재적 인 문제를 피하려면 특정 버전의 Win32 에 고정되거나 최신 버전으로 정기적으로 테스트하는 것을 고려하십시오.
패키지를 만들고, 문제를 지원하고 요청을 당하고, 토론에 참여함으로써 Win32를 개선하는 데 도움이되는 모든 기고자들에게 진심으로 감사드립니다.
Tetris 예제는 Chang-Hung Liang의 C 버전에서 조정되었습니다.
데이비드 존스 (David Jones)의 뱀의 C 구현은 그의 허가를 받아 포업했다.
메모장 예제의 원래 C 버전은 Charles Petzold가 작성했으며 제한없이 라이센스를 부여했습니다.
Custom Titlebar 예제의 원래 C 버전은 Dmitriy Kubyshkin의 것이며 MIT 라이센스에 따라 라이센스가 부여됩니다.
Win32 API 문서 설명은 Microsoft가 Creative Commons Attribution 4.0 International Public License에 따라 라이센스를 부여합니다.