com 0.0.1
com: ^0.0.1 copied to clipboard
Prototype of an idiomatic Dart projection of the COM APIs.
example/main.dart
import 'dart:ffi';
import 'package:com/com.dart';
import 'package:win32/win32.dart' hide IUri;
final _urlmon = DynamicLibrary.open('urlmon.dll');
int CreateUri(Pointer<Utf16> uri, int flags, Pointer<VTablePointer> ppv) =>
_CreateUri(uri, flags, nullptr, ppv);
final _CreateUri = _urlmon.lookupFunction<
Int32 Function(Pointer<Utf16>, Uint32, Pointer, Pointer<VTablePointer>),
int Function(
Pointer<Utf16>, int, Pointer, Pointer<VTablePointer>)>('CreateUri');
void main() {
CoInitializeEx(
nullptr,
COINIT.COINIT_APARTMENTTHREADED | COINIT.COINIT_DISABLE_OLE1DDE,
);
final pUri = 'https://dart.dev/?q=foo'.toNativeUtf16();
final ppv = calloc<VTablePointer>();
if (FAILED(CreateUri(pUri, 1, ppv))) {
print('Failed to create an IUri instance.');
} else {
final uri = IUri(ppv.value);
final domain = uri.getDomain();
final query = uri.getQuery();
print('Domain: $domain');
print('Query: $query');
uri.release();
}
free(pUri);
free(ppv);
CoUninitialize();
}