主頁|文檔|示例|軟件包|博客
Win32是一個飛鏢軟件包,可使用FFI訪問最常見的Win32 API,以使其可容納DART代碼,而無需C編譯器或Windows SDK。
Win32允許DART開發人員使用FFI攻入廣泛的Win32 API調用,從而簡化了對Windows硬件和系統服務的訪問。通過為傳統的Win32和COM(組件對像模型)API提供易於使用的綁定,它使您能夠直接在DART代碼中直接利用Windows特定功能。
Win32的通用性非常令人難以置信,並且在各種情況下都有用,包括:
Windows上的Flutter開發:需要訪問諸如GamePads之類的硬件配件或從應用程序中的Windows註冊表中檢索設置嗎? win32使這可以輕鬆實現。
跨平台軟件包開發:編寫新的跨平台軟件包時,您可以使用Win32進行特定於Windows的實現,從而確保您的軟件包在Windows上無縫工作。
增強命令行實用程序:如果您正在使用DART開發命令行實用程序,並且需要比dart:io庫提供的更高級文件API,那麼Win32提供了必要的功能。
與現有Windows庫集成:將您的應用程序平穩地集成到使用Win32發布元數據的其他Windows庫。
Win32的主要目標是為DART開發人員提供直接訪問基礎Windows API的訪問,從而無需手動繪製API約定以飛鏢,簡化開發和提高生產率。
探索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的力量:
該軟件包為Win32 API提供了最小的修改,以支持DART IDIOM,旨在非常熟悉現有的Windows開發人員。其他飛鏢套件可以基於這些原語,以為飛鏢和顫動開發人員提供更慣用的API。
一個很好的例子是Win32_Registry,它提供了一組用於訪問Windows註冊表的API,而無需了解FFI。
該軟件包中包含許多示例,這些示例演示了調用各種Win32和COM API。這些可以在示例子目錄中找到,並且可以在此處找到每個示例的簡短描述。
越來越多的飛鏢套件建立在Win32暴露的低級API上,提供了更多慣用的類包裝器,這些包裝紙易於集成到您的顫音和飛鏢應用中。
以下是Win32頂部建造的一些軟件包:
在pub.dev上找到更多包裝。
Win32軟件包提供了Win32 API的一部分,並根據用戶需求定期添加更多的API。如果您需要其他功能或遇到任何錯誤,請在我們的問題跟踪器上提交問題。
雖然Win32遵循語義版本控制(SEMVER),但由於Win32metadata刮刀的改進或添加了新API,可能會在次要版本中發生一些破壞變化。
為避免潛在問題,請考慮將固定在Win32的特定版本上或與最新版本定期測試。
衷心感謝所有通過創建包裹,協助問題和提取請求並參與討論來幫助改善Win32的貢獻者。
俄羅斯方塊的例子是由Chang-Hung Liang改編自C版本的。
戴維·瓊斯(David Jones)的蛇實施被允許移植。
記事本示例的原始C版本是由查爾斯·彼得佐爾德(Charles Petzold)撰寫的,他沒有受到限制。
Custom TitleBar示例的原始C版本是Dmitriy Kubyshkin的,並獲得了MIT許可證的許可。
WIN32 API文檔評論由Microsoft獲得創意共享歸因4.0國際公共許可證的許可。