Домашняя страница | Документация | Примеры | Пакеты | Блог
Win32 - это пакет DART, который обеспечивает доступ к наиболее распространенным API Win32 с использованием FFI, чтобы сделать их доступными для кода DART, не требуя компилятора C или Windows SDK.
Win32 позволяет разработчикам DART использовать широкий спектр вызовов API Win32 с использованием FFI, упрощая доступ к оборудованию и системным услугам Windows. Предлагая простые в использовании привязки как для традиционных API Win32, так и для API-интерфейсов Com (объект компонента), это позволяет полностью использовать функциональные функции, специфичные для Windows непосредственно в вашем коде DART.
Win32 невероятно универсален и может быть полезен в различных сценариях, в том числе:
Разработка Flutter в Windows : Нужно получить доступ к аппаратным аксессуарам, таким как геймпады или получить настройки из реестра Windows в вашем приложении? Win32 делает это возможным с легкостью.
Разработка кроссплатформенного пакета : при написании нового кроссплатформенного пакета вы можете использовать Win32 для реализации специфичной для Windows, обеспечивая беспрепятственную работу вашего пакета в Windows.
Уточненные утилиты командной строки : если вы разрабатываете утилиту командной строки с DART и требуют более продвинутых файловых API, чем то, что предлагает библиотека dart:io , WIN32 предоставляет необходимые функции.
Интеграция с существующими библиотеками Windows : плавно интегрируйте ваши приложения с другими библиотеками Windows, которые опубликовали метаданные с использованием Win32 .
Основная цель Win32 - предоставить разработчикам DART прямой доступ к базовым API Windows, устраняя необходимость вручную карту соглашений API для DART, упрощения разработки и повышения производительности.
Исследуйте полную документацию на win32.pub/docs, чтобы глубже погрузиться в функции и возможности пакета Win32 .
Добавьте пакеты FFI и Win32 в ваш проект, выполнив соответствующую команду ниже:
Для проектов трепетания :
flutter pub add ffi win32Для проектов только для DART :
dart pub add ffi win32Вот пример, который демонстрирует, как отобразить окно сообщения, используя функцию MessageBox из API Windows.
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 :
Этот пакет обеспечивает минимальные модификации API Win32 для поддержки Dart Idioms, стремясь к высокому знакомому с существующими разработчиками Windows. Другие пакеты DART могут опираться на эти примитивы, чтобы обеспечить более идиоматический API для разработчиков DART и Flutter.
Хорошим примером является win32_registry, который предлагает набор API для доступа к реестру Windows, не требуя знаний о FFI.
Есть много примеров, включенных в этот пакет, которые демонстрируют вызов различных API WIN32 и COM. Их можно найти в подкаталоге примерах, и краткое описание каждого примера можно найти здесь.
Растущее количество пакетов DART построено на API низкого уровня, выявленных Win32 , предоставляя более идиоматические обертки классов, которые легко интегрироваться в ваши приложения Flutter и DART.
Вот некоторые из пакетов, построенных на вершине Win32 :
Найдите больше пакетов в Pub.Dev.
Package Win32 предлагает подмножество API Win32, причем больше API регулярно добавляется на основе потребления пользователя. Если вам требуется дополнительная функциональность или вы встречаете какие -либо ошибки, пожалуйста, подайте проблему в нашем трекере.
В то время как WIN32 следует за семантической версией (SEMVER), некоторые нарушающие изменения могут произойти в незначительных версиях из -за улучшений в скребке Win32Metadata или добавлении новых API.
Чтобы избежать потенциальных проблем, рассмотрите возможность привлечения конкретной версии Win32 или регулярного тестирования с последней версией.
Серьезное спасибо всем нашим участникам, которые помогают улучшить Win32 , создавая пакеты, помогая с проблемами и привлечены к запросам и участвуя в дискуссиях.
Пример Tetris был адаптирован из C-версии Cang-Hung Liang.
Реализация C Snake Дэвидом Джонсом была перенесена с его разрешения.
Оригинальная версия C Блокнота была авторирована Чарльзом Петцольдом, лицензированной им без ограничений.
Оригинальная версия C пользовательского примера титула - Dmitriy Kubyshkin и лицензирована по лицензии MIT.
Комментарии документации WIN32 API лицензированы Microsoft по международной лицензии Creative Commons Attribution 4.0.