ホームページ|ドキュメント|例|パッケージ|ブログ
Win32は、FFIを使用して最も一般的なWin32 APIにアクセスして、CコンパイラやWindows SDKを必要とせずにDARTコードにアクセスできるようにするDARTパッケージです。
WIN32を使用すると、DART開発者はFFIを使用して幅広いWin32 APIコールを活用して、Windowsハードウェアとシステムサービスへのアクセスを簡素化できます。従来のWin32とCOM(コンポーネントオブジェクトモデル)APIの両方に使いやすいバインディングを提供することで、DARTコードで直接Windows固有の機能を完全に活用できます。
Win32は非常に用途が広く、次のようなさまざまなシナリオで役立ちます。
Windowsのフラッター開発:ゲームパッドなどのハードウェアアクセサリーにアクセスするか、アプリのWindowsレジストリから設定を取得する必要がありますか? Win32はこれを簡単に可能にします。
クロスプラットフォームパッケージの開発:新しいクロスプラットフォームパッケージを作成するときは、 Win32を使用してWindows固有の実装を使用して、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 win32DARTのみのプロジェクトの場合:
dart pub add ffi win32Windows APIのメッセージボックス関数を使用してメッセージボックスを表示する方法を示す例を示します。
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 Idiomsをサポートするために、Win32 APIの最小限の変更を提供します。他のDARTパッケージは、これらのプリミティブに基づいて構築して、DARTおよびFlutter開発者向けのより慣用的なAPIを提供できます。
良い例はwin32_registryです。これは、FFIの知識を必要とせずにWindowsレジストリにアクセスするための一連のAPIを提供します。
このパッケージには、さまざまなWin32とcom APIを呼び出すことを示す多くの例が含まれています。これらはサブディレクトリの例に記載されており、各例の簡単な説明はここにあります。
DARTパッケージの数が増えており、 Win32によって公開された低レベルのAPIに基づいて構築されており、フラッターアプリやDARTアプリに簡単に統合できる慣用クラスのラッパーを提供します。
Win32の上に構築されたパッケージの一部は次のとおりです。
pub.devでさらにパッケージを見つけます。
Win32パッケージは、Win32 APIのサブセットを提供し、ユーザーの需要に基づいて定期的に追加されるAPIが増えます。追加の機能が必要な場合、またはバグが発生した場合は、問題トラッカーに問題を提出してください。
Win32はセマンティックバージョン(SEMVER)に続きますが、Win32metadataスクレーパーの改善または新しいAPIの追加により、マイナーバージョンでいくつかの破損の変更が発生する場合があります。
潜在的な問題を回避するには、 Win32の特定のバージョンに固定するか、最新バージョンで定期的にテストすることを検討してください。
ハートフェルトは、パッケージを作成し、問題やプルリクエストを支援し、ディスカッションに参加することでWin32を改善するのに役立つすべての貢献者に感謝します。
Tetrisの例は、Chang-Hung LiangによってCバージョンから採用されました。
David JonesによるSnakeのC実装は、彼の許可を得て移植されました。
Notepadの例の元のCバージョンは、制限なしに彼によってライセンスされたCharles Petzoldによって執筆されました。
カスタムタイトルバーの例の元のCバージョンはDmitriy Kubyshkinによるもので、MITライセンスの下でライセンスされています。
Win32 APIドキュメントコメントは、Creative Commons Attribution 4.0 International Public Licenseの下でMicrosoftによってライセンスされています。