Forum Replies Created
-
AuthorPosts
-
FinardinParticipant'Support' wrote:
Похоже, я нашел причину проблемы, сегодня выложу новый релиз, который можно будет попробовать.
ЗЫ. Информация про Сервер очень помогла.
Поставил релизную версию. К сожалению, не взлетело, описанная выше проблема осталась.
Но я, собственно, решение нашел (поэтому и не писал здесь долго, прошу прощения) – спасибо DevExpress'у, от него отталкивался.
Так вот, если в хостовом приложении куда-нибудь в блок Initialization (я это сделал в интерфейсном файле DLL-библиотеки) добавить выполнение нижеприведенной функции, то все становится замечательно, проблема уходит.
Вот листинг функции:
Code:function PopulateShellImages: Boolean;
var
ShellDLLLoaded: Boolean;
ShellDLL: HMODULE;
Proc: function(FullInit: BOOL): BOOL; stdcall;
LIsWinNT: Boolean;
begin
LIsWinNT := Win32Platform = VER_PLATFORM_WIN32_NT;
Result := False;
ShellDLL := 0;
if LIsWinNT then
begin
ShellDLLLoaded := False;
ShellDLL := GetModuleHandle(ShellAPI.Shell32);
if ShellDLL = 0 then
begin
ShellDLL := LoadLibrary(ShellAPI.Shell32);
if ShellDLL <= Windows.HINSTANCE_ERROR then
ShellDLL := 0;
ShellDLLLoaded := ShellDLL <> 0;
end;
if ShellDLL <> 0 then
try
Proc := GetProcAddress(ShellDll, PChar(660));
Result := (@Proc <> nil) and Proc(True);
finally
if ShellDLLLoaded then FreeLibrary(ShellDll);
end;
end;
end;FinardinParticipantПоявилась еще инфа.
Вышеописанная проблема возникает в Win7, в том случае, если выключить службу виндовую службу Сервер.
Если служба включена – никаких проблем нет.
FinardinParticipantВообщем, методов проб, ошибок и тупого перебора выявил следующие вещь:
1. При статическом подключении DLL-библиотеки, содержащей Alpha-компоненты, все работает
2. При динамическом подключении этой жи DLL-библиотеки – ни фига не работает, программа затыкается где-то внутри метода LoadLibrary.
3. Если в хостовое приложение в Uses добавить любой из модулей AlphaControls, динамическая загрузка тоже наичнает отрабатывать. Но для меня это, к сожалению, не вариант, потому как эта DLL-ка будет подключена к проектам, разработчики которых вашим пакетом не пользуются.
В аттаче группа проектов (основное приложение и DLL-ка). В основном приложении – две кнопки, одна реализует статическую загрузку, вторая – динамическую.
Если строчку “function ShowSampleDll: boolean; stdcall; external 'Sample.dll';” раскомментить, будет работать и динамическая загрузка! Для этого функцию ShowSampleDll даже выполнять необязательно.
Очень прошу помочь.
Заранее спасибо.
FinardinParticipant'Support' wrote:Возможно там антивирус какой-то установлен и он не дает работать нормально?
Там Каспер стоит. Но я его отрубил, вроде.
FinardinParticipantВ понедельник сделаю слегка урезанную версию и выложу.
Правда, я не знаю, чем исходник поможет. ( Кроме, разве что, набора компонентов, которые я там использую. Беда в том, что ошибку не удается даже воспроизвести на своем рабочем месте.
Может инциализации Альфа-компонентов мешать какое-то установленное на компьютере ПО?
FinardinParticipantУважаемые разработчики, выручайте. Не хотелось бы переписывать DLL-ку и искать иные решения, только потому, что на пяти рабочих местах появилась какая-то левая ошибка. (
Кроме вас, мне вряд ли кто-то сможет помочь. (
FinardinParticipantОбновил версию Альфы до 2015 v10.17. Не помогло. (
-
AuthorPosts