Вызов API через Tlb

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Вызов API через Tlb

Сообщение GM » 02.02.2006 (Чт) 18:01

Если вызывать API через Declare, то вместо обычного
push, call в коде можна увидеть целую цепочку вызовов в результате которых вызывается функция DllFunctionCall(с msvbvm60.dll), которая собственно и вызывает API функцию.
Если же юзать tlb для этого, то вызов функции сводиться к обычному push, call.
Собственно вопрос правильные ли мои рассуждения, какая разница между двумя вызовами, кроме той что я описал, и правда ли что вызов через tlb будет быстрее?
الفيجوال بيسك الرابح

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.02.2006 (Чт) 18:05

Угу.
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.02.2006 (Чт) 18:06

Да, вызов через tlb будет быстрее. При этом функция появится в секции импорта исполняемого файла.
Вызов же через declare позволяет отслеживать факт отсутствия функции.

На случай вопросов типа "А не сделать ли..." сразу в гугл по словам win32.tlb.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 02.02.2006 (Чт) 18:14

На случай вопросов типа "А не сделать ли..." сразу в гугл по словам win32.tlb.


Нет, в этим все в порядке, у меня она уже есть.

Вот еще вопрос:
TLS - это локальное хранилище потока, которое используеться для обеспечения безопасности многопотоковых приложений. Если это так, а VB поддерживает лиш однопоточные приложения. То почему большинство функций msvbvm60.dll часто юзает ф-ции типа TlsGetValue... (даже DLLFunctionCall).

Мне с tlb просто удобно работать с VB-шними стрингами(точнее BSTR).
Нужно просто написать тип BSTR, и можна передавать параметром обычный string.
С Declare нужно было бы передавать указатель VarPtr или StrPtr, и париться с long'ami.
الفيجوال بيسك الرابح

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.02.2006 (Чт) 18:20

Потому что VB работает как с single, так и с apartment threading.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.02.2006 (Сб) 2:56

GM писал(а):Вот еще вопрос:
TLS - это локальное хранилище потока, которое используеться для обеспечения безопасности многопотоковых приложений. Если это так, а VB поддерживает лиш однопоточные приложения. То почему большинство функций msvbvm60.dll часто юзает ф-ции типа TlsGetValue... (даже DLLFunctionCall).

На всякий случай отвечу явно:
потому что VB поддерживает многопоточные приложения
создание нового потока в VB6-проге сложнее, чем простой вызов CreateThread, но тем не менее вполне возможно
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 11.02.2006 (Сб) 11:40

создание нового потока в VB6-проге сложнее, чем простой вызов CreateThread, но тем не менее вполне возможно

"А вот с этого места я прошу вас рассказывать очень подробно." (с) Шерлок Холмс
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.02.2006 (Сб) 12:30

Изображение


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 27

    TopList