Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Возможен ли запуск плагинов отдельно от TC? 
Author Message
Ciber SLasH



PostPosted: Thu Jul 25, 2013 22:40    Post subject: Reply with quote

Ларчик просто открывался Very Happy
Оказалось у меня вываливался в ошибки при закрытии SGViewer при статическом запуске библиотеки.
Перешёл на динамический запуск:
Code:
implementation

{$R *.dfm}

type
  TListLoad = function (parentWnd: HWND; FileToLoad: PChar; ShowFlags: integer): HWND; stdcall;
  TListCloseWindow = procedure (plugWnd: HWND); stdcall;
const
  LCP_FITTOWINDOW = 2;
  DLLName = 'SGViewer.wlx';
var
  hPlug: HWND;
  hDLL: THandle;
  ListLoad: TListLoad;
  ListCloseWindow: TListCloseWindow;

procedure TForm1.FormActivate(Sender: TObject);
begin
  hDLL := LoadLibrary(DLLName);
  @ListLoad := GetProcAddress(hDLL, 'ListLoad');
  @ListCloseWindow := GetProcAddress(hDLL, 'ListCloseWindow');
  hPlug := ListLoad(Form1.Handle, 'D:\tmp\1.bmp', LCP_FITTOWINDOW);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ListCloseWindow(hPlug);
  FreeLibrary(hDLL);
end;

ошибки исчезли.
Никакие найденные окна не хотят работать с SGViewer-ом, т.е. при вызове ListLoad с передачей дескриптора найденного окна (FindWindow('TTOTAL_CMD', nil)) - картинка не загружается. Нужно создавать своё окно и передавать его дескриптор в ListLoad.
PS: OS Win2003 Server Enterprice R2 SP2 Ru x86
PPS: rundll32 и winapiexec не помогли в данном вопросе.
PPPS: вопрос темы решён написание своей программы (но можно заюзать WLX_Host, который тоже прекрасно справился с заданием), благодарю MVV за наводку на динамический запуск плагина.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group