主页|文档|示例|软件包|博客
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国际公共许可证的许可。