OberonCore https://forum.oberoncore.ru/ |
|
Win API в ББ. Как использовать функции из ДЛЛ Винды? https://forum.oberoncore.ru/viewtopic.php?f=2&t=3162 |
Страница 1 из 1 |
Автор: | Виталий [ Суббота, 15 Январь, 2011 20:32 ] |
Заголовок сообщения: | Win API в ББ. Как использовать функции из ДЛЛ Винды? |
Всем доброго, возможно тема уже поднималась, но поверхностный поиск не дал ответа. Мне нужно будет вызывать функции из ДЛЛок винды, допустим банально MessageBox. Я знаю что он есть в модуле WinApi, но мне потренироваться нужно, я планирую вызывать из других ДЛЛ функции, и возможно даже нестандартных. Пошарив по сорцам модуля я вышел на спецификации функций, и попробовал перетащить их в свой модуль. Код: MODULE m; IMPORT WinApi; TYPE PROCEDURE mb ["USER32.dll", "MessageBoxA"] (hWnd: HWND; lpText: PtrSTR; lpCaption: PtrSTR; uType: SET): INTEGER; PROCEDURE do*; VAR s:ARRAY(30) OF CHAR;lpText, lpCaption: WinApi.PtrSTR; i:INTEGER; BEGIN i:= mb(WinApi.GetForegroundWindow(),lpText, lpCaption,{0}); END do; END m. Однако получил кучу ошибок. Первая скажем на ["USER32.dll", "MessageBoxA"] - illegal sys flag Скажите пожалуйста как правильно описывать импорт из библиотек в ББ |
Автор: | Илья Ермаков [ Суббота, 15 Январь, 2011 20:35 ] |
Заголовок сообщения: | Re: Win API в ББ. Как использовать функции из ДЛЛ Винды? |
А зачем Вы что-то перетаскивали???? IMPORT WinApi; ... WinApi.MessageBoxA(...) |
Автор: | Виталий [ Суббота, 15 Январь, 2011 21:11 ] |
Заголовок сообщения: | Re: Win API в ББ. Как использовать функции из ДЛЛ Винды? |
Илья Ермаков писал(а): А зачем Вы что-то перетаскивали???? Для того чтоб научится работать с внешними библами ОСи. Ладно. Пример не удачный. Допустим у меня есть ДЛЛ, где экспортируется функция "Myfunc(char* s)" Как мне ее использовать в ББ? |
Автор: | Илья Ермаков [ Суббота, 15 Январь, 2011 21:22 ] |
Заголовок сообщения: | Re: Win API в ББ. Как использовать функции из ДЛЛ Винды? |
Делаете заголовочный модуль: MODULE MyDll ['mydll.dll']; IMPORT SYSTEM; здесь объявляете заголовки к процедурам DLL. Как это сделано в исходнике, например, WinApi. Дальше будете импортировать заголовочный модуль MyDll и обращаться к процедурам. Вообще, это описано в документации ББ в разделе "Платформенно-зависимые особенности". Если интересуют технические подробности, то: 1) Для таких заголовочных модулей компилятор создаёт только символьный файл, а не кодовый (фактически, модуля как исполняемого компонента не образуется). 2) В модуле, который импортирует заголовок MyDll, компилятор ставит точки связи к функциям mydll.dll. 3) Когда модуль будет загружаться, ядро ББ загрузит и DLL и свяжет точки из модуля с функциями DLL. |
Автор: | Виталий [ Суббота, 15 Январь, 2011 21:56 ] |
Заголовок сообщения: | Re: Win API в ББ. Как использовать функции из ДЛЛ Винды? |
О! Вот это уже другое тело, спасибо Теперь все стало прозрачно понятным, и я смогу поюзать стороннюю библиотеку. Пока вопросов нет. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |