LoadLibrary и короткие пути

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

LoadLibrary и короткие пути

Сообщение Antonariy » 18.05.2007 (Пт) 13:57

App.Path возвращает строку типа C:\DOCUME~1\ANTONA~1.GOL\C316~1\HTMLFO~1\VBACLI~3, на которую LoadLibrary огрызается нулем. Можно ли как-нибудь привести ее к полному виду? Или что делать?
Лучший способ понять что-то самому — объяснить это другому.

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

Сообщение GSerg » 18.05.2007 (Пт) 14:03

Private Declare Function GetLongPathName Lib "kernel32.dll" Alias "GetLongPathNameA" (ByVal lpszShortPath As String, ByVal lpszLongPath As String, ByVal cchBuffer As Long) As Long
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 18.05.2007 (Пт) 14:06

Спасибо.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 18.05.2007 (Пт) 14:20

Оказывается я зря клеветал на LoadLibrary. Exe называется VBAClient2, проект называется VBAClient2, а vbp называется VBAClient. И App.ExeName возвращала VBAClient. Почему подумал на короткие пути - тупо вписал полный путь руками, естественно заработало. Кстати теперь App.Path возвращает полный путь, а не сокращенный. Во блин, какие коленца IDE откалывает.
Лучший способ понять что-то самому — объяснить это другому.

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

Сообщение tyomitch » 18.05.2007 (Пт) 14:25

Antonariy писал(а):Кстати теперь App.Path возвращает полный путь, а не сокращенный. Во блин, какие коленца IDE откалывает.

Это, емнип, зависит от того, как был открыт проект -- дабл-кликом в Эксплорере, или по File -> Open Project.
Изображение

VERITAS
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 212
Зарегистрирован: 12.12.2004 (Вс) 20:31

Сообщение VERITAS » 18.05.2007 (Пт) 14:46

Примечание: Как я понимаю ты подргужаешь библу из папки с твоей программы. Тогда необязательно в LoadLibrary передавать весь путь до DLL можно и просто указать "my.dll" или вместе с папкой "folder\my.dll"

Тогда и не приходится решать проблему с короткими путями. И не забудь про chdrive и chdir.
No comments ...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 18.05.2007 (Пт) 15:00

tyomitch
Открывалась даблкликом группа проектов (vbg).

VERITAS
Это функция из другого модуля, которая должна принимать любые пути, App.Path - частный случай.
Лучший способ понять что-то самому — объяснить это другому.

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

Сообщение tyomitch » 18.05.2007 (Пт) 15:14

Antonariy писал(а):Открывалась даблкликом группа проектов (vbg).

Оба раза?
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 18.05.2007 (Пт) 15:35

Да.
Лучший способ понять что-то самому — объяснить это другому.

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

Сообщение alibek » 18.05.2007 (Пт) 16:14

Код: Выделить всё
chdir "C:\DOCUME~1\ALIBEK"
?curdir$()
C:\DOCUME~1\ALIBEK
chdir "C:\Documents and Settings\alibek"
?curdir$()
C:\Documents and Settings\alibek

Это фишка такая у ОС.
Если фишка не нравится, можешь отключить короткие имена на NTFS-томе, где-то в реестре это регулируется (либо твикерами).
Lasciate ogni speranza, voi ch'entrate.


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

    TopList