vbstreets конференция - Виж темата - как да проверите библиотеката регистрирани в системата или не

Алибек написал (а): Лицето не иска глупав извърши някакво действие и да се провери - успя / се провали. Той иска първо да се види дали има смисъл изобщо да се направи това действие.


Всъщност, да, аз исках да. Но също така обичам да се уверите, че няма значение какво папка потребителят не постави офиса - моята библиотека програма ще бъде използвана без никакви проблеми.

Алибек написал (а): Според темата. GUID винаги ще бъде един и същ, на всяка машина.


Тук. Това е, което трябва да знам.

Алибек написал (а): Но проверка на системния регистър не е най-добрия начин.
Опитайте нещо като това:
Код: Избери всички частни установено, Функция FreeLibrary Lib "kernel32" # 40; ByVal hLibModule толкова дълго # 41; Докато
Лично установено, Функция LoadLibrary Lib "kernel32" Alias ​​"LoadLibraryA" # 40; ByVal lpLibFileName Както String # 41; Докато
Лично установено, Функция GetProcAddress Lib "kernel32" # 40; ByVal hModule толкова дълго, ByVal lpProcName Както стринга # 41; Докато
.
bSuccess = False
L = LoadLibrary # 40; "comdlg32" # 41;
Ако L <> 0 След
Ако GetProcAddress # 40; L "DllRegisterServer" # 41; <> 0 След bSuccess = True
Крайна сметка, ако
FreeLibrary L
Debug.Print bSuccess

Но като цяло това е грозно, със сигурност има по-пряк начин.


Мисля, че има. Но това, което ме наведе на мисълта в момента (доколкото аз съм начинаещ) е неудобно и малко объркващо.

Мисля, че този метод не е наред
LoadLibrary не е COM-функция и има вътрешен ред библиотека търсене е посочено:
  1. Започвайки директорията с приложенията
  2. Текуща директория приложение
  3. Windows \ система
  4. прозорци
  5. пътеката от пътя

По този начин, ако е необходимо Byblos физически там, на едно от тези места, ние заключаваме, че той е регистриран, а това не може да бъде регистриран.

Така че най-вероятно все още е необходимо да използвате късно свързване, в този случай

Веднага след като обхождане на възможностите за решения и не намерите желания, а след това разбрах, решението, просто и очевидно за всички с изключение на теб

GSerg написал (а): Мисля, че този метод не е наред
LoadLibrary не е COM-функция и има вътрешен ред
= - = - прескачане = - = - = - =
Така че най-вероятно все още е необходимо да използвате късно свързване, в този случай


Направих първия съвет: опитайте се да се създаде обект в началото на програмата - ако е грешка - тогава библиотеката не е регистрирана.