Все Winapi нужно объявлять вручную?

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
bitcoin
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 10.01.2022 (Пн) 17:14

Все Winapi нужно объявлять вручную?

Сообщение bitcoin » 09.02.2022 (Ср) 0:48

Всем добрый вечер. Есть такой вопрос - неужели в VB все винапи функции нужно объявлять самому? А также все виндовс структуры и так далее?
Допустим, в Си или даже в Ассемблере есть инклуды готовые, и т.д. Есть ли подобное для Visual Basic?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Все Winapi нужно объявлять вручную?

Сообщение Mikle » 09.02.2022 (Ср) 10:25

Вместе с VB6 устанавливается "API Text Viewer", в нём есть довольно большой набор WinAPI функций, констант и типов.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Все Winapi нужно объявлять вручную?

Сообщение ger_kar » 09.02.2022 (Ср) 16:41

Лучше уж тогда Win API Viewer 2004 юзать (название пишу по памяти поэтому в нем могут быть ошибки) . Кроме этого, есть готовые TLB с объявлениями. Но при этом всегда нужно иметь ввиду, что и в API Text Viewer, что Win API Viewer 2004, что в библиотеках TLB есть ошибки. Я несколько раз на на этом попадал. Делаешь вызов, а он не работает в лучшем случае, а может и крэшем все закончится.
Другой момент, что не всегда, те объявления, которые предлагает Win API Viewer или TLB подходят под то, что ты делаешь. Бывает удобнее объявлять по другому и вызывать соответственно тоже. И если объявления с генерированные вьюверами можно подправить, то с TLB такое проделать не получиться.
И вообще на мой взгляд заморока с объявлениями в VB6 в большей степени касается структур, констант и перечислений, чем собственно самих функций. Давно в голове бродит идея сделать отдельную TLB для констант и перечислений. А в коде VB6 объявлять только сами функции. Со структурами сам пока еще не определился :)
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Все Winapi нужно объявлять вручную?

Сообщение Хакер » 10.02.2022 (Чт) 7:45

bitcoin писал(а):Допустим, в Си или даже в Ассемблере есть инклуды готовые,

Они есть не в Си или ассемблере, они есть в составе комплекта заголовочных файлов, которые тот или иной поставщик распространяет для разработчиков. Си же не привязан к Windows и не ограничен экосистемой Windows, поэтому неправильно говорить, что заголовочные файля с объявлениями WinAPI идут в составе Си: они идут не в составе Си, они идут в составе Platform SDK или к приложении к Visual C++.

В VB существует аж два независимых пути объявления функций/структур/констант: это и объявление непосредственно в коде, и объявления, импортируемые из TLB. Для первого пути существует помощник в виде API Text Viewer-а. TLB-шек тоже народ понаделал разных.

Главная причина того, почему для VB из короки не поставляется таких готовых объявлений состоит в том, что всё-таки по задумке идеология VB была чуть другой: предполагалось, что VB-программистам почти никогда не нужно будет использовать WinAPI-функции, а их код будет как клей связывать воедино разные компоненты (наприсанные на Си/С++ и других языках, включая и сам VB), которые будут выполнять высокоуровневые задачи.

ger_kar писал(а):Давно в голове бродит идея сделать отдельную TLB для констант и перечислений.

Trick давно хочет сделать что-то такое, но ограничение в 32K неймрефов видится ему препятствием.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Все Winapi нужно объявлять вручную?

Сообщение The trick » 10.02.2022 (Чт) 10:12

Хакер писал(а):Trick давно хочет сделать что-то такое, но ограничение в 32K неймрефов видится ему препятствием.

Да, я хотел сделать объявления всех сущностей, благо это автоматом можно сделать, но суммарно все будет намного больше 32к. Одних API функций около 14 тыс, добавив список констант, структур, имен параметров, объявлений интерфейсов этот лимит я думаю будет исчерпан.

Вот есть уже готовый список функций https://dl.unicontsoft.com/upload/api_list.txt без констант и типов (параметры оставлены как As Any).

В своей практике я просто использую TLB из разных проектов. Если мне не хватает функций, то просто создаю копию TLB и добавляю новых функций. В следующий раз использую ее ну и так далее.
UA6527P

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Все Winapi нужно объявлять вручную?

Сообщение Хакер » 10.02.2022 (Чт) 11:06

Просто не надо задаваться целью сделать 1 библиотеку типов на все DLL-библиотеки. В идеале: одна DLL-шка — одна TLB-шка. (Будь MS дальновиднее, они бы так и сделали и в каждую DLL-шку TLB-шку вшили в ресурсы). В виде исключения можно базис в виде kernel32, user32, gdi32, advapi32, oleaut32 объединить в одну.

Ни в одном реальном проекте никому не понадобятся одновременно 14 тысяч API-функций: чтобы одновременно и MAPI, и RPCRT, и WINMM, и DirectX — я такого не представляю.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

bitcoin
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 10.01.2022 (Пн) 17:14

Re: Все Winapi нужно объявлять вручную?

Сообщение bitcoin » 10.02.2022 (Чт) 17:48

Mikle писал(а):Вместе с VB6 устанавливается "API Text Viewer", в нём есть довольно большой набор WinAPI функций, констант и типов.

Спасибо, не знал про это. Копипастил с инетов объявления.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Все Winapi нужно объявлять вручную?

Сообщение Adam Smith » 16.03.2022 (Ср) 15:21

С каждым годом становлюсь всё невнимательнее
Существует чуть новее предложение, но тоже старое, ApiViewer 2004
https://apiviewer-2004.software.informer.com/download/
https://www.virustotal.com/gui/file/2c1 ... 58735777da


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot], SemrushBot и гости: 14

    TopList