Комментарии 2
Конечно, было бы прекрасно все время оставаться только в рамках парадигмы используемого языка программирования и чтобы «на фотографии не торчали уши фотографа», т.е. чтобы в исходных текстах никак не проявлялись бы особенности взаимодействия со средой.
Увы, но не всегда возможно.
Во-первых, иногда с точки зрения эффективности выгоднее прямая работа с системными API.
В-вторых, не все возможности, предоставляемые системными API, могут быть реализованы в том или ином фреймфорке. Помнится, когда-то давно, когда еще под винду писал на билдере, коллега с пеной у рта доказывал что "вот так (не помню уже что там конкретно было) сделать нельзя потому что в VCL этого нет". Пришлось ткнуть носом что этого нет в VCL, но это очень просто реализуется на WinAPI.
Кроме того, в WinAPI достаточно много специфических интересных функций, которых нет даже в заголовочных файлах. Но они достаточно подробно описаны в MSDN и вполне используемы если описать прототип руками и зацепить ее динамически через GetProcAddress.
Что касается LoadLibrary, то это достаточно мощный инструмент. Разрабатывал как-то "Систему мониторинга инженерного оборудования зданий". И там была проблема - в систему подключается некое новое устройство. Причем, такое, которое на момент разработки не было известно. А работать с ним надо. Конфигурировать, интерпретировать сообщения от него, какие-то команды посылать. Короче - специфика всякая.
Останавливать систему чтобы установить новую версию нельзя - это связано с дикими расходами. Т.е. нужно как-то "на горячую" делать.
Придумали т.н. "драйвера устройств" - dll со стандартным интерфйсом где реализована вся специфика работы с устройством. Приходишь на объект, подключаешь устройство, в система делаешь "добавить", "новый тип устройства" и "вот на флешке его драйвер". Система копирует dll-ку к себе куда надо и прописывает ее в таблицу в описание нового типа устройства. И загружает ее динамически и с этого момента уже может работать с данным типом устройства.
Аналогичный принцип применил автор Purebasic, но существенно шире, ибо распространил помимо win32 на cocoa(mac),[stdlib,gtk2,gtk3,qt5]lin
p.s. иллюстрация масштаба проекта https://www.purebasic.fr/blog/?p=527
Приручение WinAPI