View previous topic :: View next topic |
Author |
Message |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Fri Nov 09, 2007 17:17 Post subject: |
|
|
Ник wrote: | Не понял - он же для всех файлов одинаковый - на фига он там, а не в директории плагина? |
Он был в директории плагина. Вначале. Но для fb2 это не работает: нельзя ссылаться на xsl в директории плагина, т.к. там есть еще один xsl (FB2_2_html_basics.xsl), который из дир плагина не подцепится...
Я пробовал.. _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
 |
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Fri Nov 09, 2007 17:33 Post subject: |
|
|
А кто мешает делать временные файлы в директории плагина и стирать потом?
Или это не годится для портейбл вариантов? _________________ Xubuntu |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Fri Nov 09, 2007 18:44 Post subject: |
|
|
Как раз не годится для portable вариантов... Вот еще на флешке может быть мало места, а ты начинавешь вьювить 10Мбайтный fb2.. КОнечно такие fb2 редко встречаются, но все-таки
Edit: директория плагина тоже может быть с русским именем. _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
 |
Starina
Joined: 06 Nov 2007 Posts: 13
|
(Separately) Posted: Mon Nov 19, 2007 16:57 Post subject: |
|
|
C клавишами для Lister'а получается что-нибудь или нет? |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Thu Nov 29, 2007 01:03 Post subject: |
|
|
Starina
Пока выложил код сюда, "WLXViewer_NewTesting". Не получается заменить TWebBrowser на TCustomizedWebBrowser: все виснет при старте плагина, посмотри плс, что там поправить надо в TCustomizedWB.. _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
 |
Starina
Joined: 06 Nov 2007 Posts: 13
|
(Separately) Posted: Thu Nov 29, 2007 17:23 Post subject: |
|
|
Забрал. Посмотрю. |
|
Back to top |
|
 |
Starina
Joined: 06 Nov 2007 Posts: 13
|
(Separately) Posted: Thu Nov 29, 2007 19:05 Post subject: |
|
|
Смысл в том, что надо описывать все методы интерфейса.
Code: |
type
TDocHostUIInfo = packed record
cbSize: ULONG;
dwFlags: DWORD;
dwDoubleClick: DWORD;
end;
const
DOCHOSTUIFLAG_DIALOG = 1;
DOCHOSTUIFLAG_DISABLE_HELP_MENU = 2;
DOCHOSTUIFLAG_NO3DBORDER = 4;
DOCHOSTUIFLAG_SCROLL_NO = 8;
DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE = 16;
DOCHOSTUIFLAG_OPENNEWWIN = 32;
DOCHOSTUIFLAG_DISABLE_OFFSCREEN = 64;
DOCHOSTUIFLAG_FLAT_SCROLLBAR = 128;
DOCHOSTUIFLAG_DIV_BLOCKDEFAULT = 256;
DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY = 512;
const
DOCHOSTUIDBLCLK_DEFAULT = 0;
DOCHOSTUIDBLCLK_SHOWPROPERTIES = 1;
DOCHOSTUIDBLCLK_SHOWCODE = 2;
type
IDocHostUIHandler = interface(IUnknown)
['{bd3f23c0-d43e-11cf-893b-00aa00bdce1a}']
function ShowContextMenu(const dwID: DWORD; const ppt: PPOINT;
const pcmdtReserved: IUnknown; const pdispReserved: IDispatch): HRESULT; stdcall;
function GetHostInfo(var pInfo: TDOCHOSTUIINFO): HRESULT; stdcall;
function ShowUI(const dwID: DWORD; const pActiveObject: IOleInPlaceActiveObject;
const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame;
const pDoc: IOleInPlaceUIWindow): HRESULT; stdcall;
function HideUI: HRESULT; stdcall;
function UpdateUI: HRESULT; stdcall;
function EnableModeless(const fEnable: BOOL): HRESULT; stdcall;
function OnDocWindowActivate(const fActivate: BOOL): HRESULT; stdcall;
function OnFrameWindowActivate(const fActivate: BOOL): HRESULT; stdcall;
function ResizeBorder(const prcBorder: PRECT; const pUIWindow: IOleInPlaceUIWindow;
const fRameWindow: BOOL): HRESULT; stdcall;
function TranslateAccelerator(const lpMsg: PMSG;
const pguidCmdGroup: PGUID; const nCmdID: DWORD): HRESULT; stdcall;
function GetOptionKeyPath(var pchKey: POLESTR;
const dw: DWORD): HRESULT; stdcall;
function GetDropTarget(const pDropTarget: IDropTarget;
out ppDropTarget: IDropTarget): HRESULT; stdcall;
function GetExternal(out ppDispatch: IDispatch): HRESULT; stdcall;
function TranslateUrl(const dwTranslate: DWORD;
const pchURLIn: POLESTR; var ppchURLOut: POLESTR): HRESULT; stdcall;
function FilterDataObject(const pDO: IDataObject;
out ppDORet: IDataObject): HRESULT; stdcall;
end;
type
TCustomizedWebBrowser = class(TWebBrowser, IDocHostUIHandler)
function ShowContextMenu(const dwID: DWORD; const ppt: PPOINT;
const pcmdtReserved: IUnknown; const pdispReserved: IDispatch): HRESULT; stdcall;
function GetHostInfo(var pInfo: TDOCHOSTUIINFO): HRESULT; stdcall;
function ShowUI(const dwID: DWORD; const pActiveObject: IOleInPlaceActiveObject;
const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame;
const pDoc: IOleInPlaceUIWindow): HRESULT; stdcall;
function HideUI: HRESULT; stdcall;
function UpdateUI: HRESULT; stdcall;
function EnableModeless(const fEnable: BOOL): HRESULT; stdcall;
function OnDocWindowActivate(const fActivate: BOOL): HRESULT; stdcall;
function OnFrameWindowActivate(const fActivate: BOOL): HRESULT; stdcall;
function ResizeBorder(const prcBorder: PRECT; const pUIWindow: IOleInPlaceUIWindow;
const fRameWindow: BOOL): HRESULT; stdcall;
function TranslateAccelerator(const lpMsg: PMSG;
const pguidCmdGroup: PGUID; const nCmdID: DWORD): HRESULT; stdcall;
function GetOptionKeyPath(var pchKey: POLESTR;
const dw: DWORD): HRESULT; stdcall;
function GetDropTarget(const pDropTarget: IDropTarget;
out ppDropTarget: IDropTarget): HRESULT; stdcall;
function GetExternal(out ppDispatch: IDispatch): HRESULT; stdcall;
function TranslateUrl(const dwTranslate: DWORD;
const pchURLIn: POLESTR; var ppchURLOut: POLESTR): HRESULT; stdcall;
function FilterDataObject(const pDO: IDataObject;
out ppDORet: IDataObject): HRESULT; stdcall;
end;
implementation
uses
Dialogs, Messages;
{ TCustomizedWebBrowser }
function TCustomizedWebBrowser.EnableModeless(
const fEnable: BOOL): HRESULT;
begin
Result := S_OK;
end;
function TCustomizedWebBrowser.FilterDataObject(const pDO: IDataObject;
out ppDORet: IDataObject): HRESULT;
begin
ppDORet := nil;
Result := S_FALSE;
end;
function TCustomizedWebBrowser.GetDropTarget(
const pDropTarget: IDropTarget; out ppDropTarget: IDropTarget): HRESULT;
begin
ppDropTarget := nil;
Result := E_FAIL;
end;
function TCustomizedWebBrowser.GetExternal(
out ppDispatch: IDispatch): HRESULT;
begin
ppDispatch := nil;
Result := E_FAIL;
end;
function TCustomizedWebBrowser.GetHostInfo(
var pInfo: TDOCHOSTUIINFO): HRESULT;
begin
Result := S_OK;
end;
function TCustomizedWebBrowser.GetOptionKeyPath(var pchKey: POLESTR;
const dw: DWORD): HRESULT;
begin
Result := E_FAIL;
end;
function TCustomizedWebBrowser.HideUI: HRESULT;
begin
Result := S_OK;
end;
function TCustomizedWebBrowser.OnDocWindowActivate(
const fActivate: BOOL): HRESULT;
begin
Result := S_OK;
end;
function TCustomizedWebBrowser.OnFrameWindowActivate(
const fActivate: BOOL): HRESULT;
begin
Result := S_OK;
end;
function TCustomizedWebBrowser.ResizeBorder(const prcBorder: PRECT;
const pUIWindow: IOleInPlaceUIWindow; const fRameWindow: BOOL): HRESULT;
begin
Result := S_FALSE;
end;
function TCustomizedWebBrowser.ShowContextMenu(const dwID: DWORD;
const ppt: PPOINT; const pcmdtReserved: IInterface;
const pdispReserved: IDispatch): HRESULT;
begin
Result := S_FALSE;
end;
function TCustomizedWebBrowser.ShowUI(const dwID: DWORD;
const pActiveObject: IOleInPlaceActiveObject;
const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame;
const pDoc: IOleInPlaceUIWindow): HRESULT;
begin
Result := S_OK;
end;
function TCustomizedWebBrowser.TranslateAccelerator(const lpMsg: PMSG;
const pguidCmdGroup: PGUID; const nCmdID: DWORD): HRESULT;
begin
Result := S_FALSE;
with lpMsg^ do
if (message = WM_KEYDOWN) and (GetKeyState(VK_CONTROL) >= 0) then
begin
MessageDlg(Char(wParam), mtWarning, [mbOK], 0);
Result := S_OK;
end
end;
function TCustomizedWebBrowser.TranslateUrl(const dwTranslate: DWORD;
const pchURLIn: POLESTR; var ppchURLOut: POLESTR): HRESULT;
begin
Result := E_FAIL;
end;
function TCustomizedWebBrowser.UpdateUI: HRESULT;
begin
Result := S_OK;
end;
|
Но прикол в том, что вызываются все методы кроме нужного.
Буду смотреть дальше. |
|
Back to top |
|
 |
volovyan
Joined: 03 Dec 2007 Posts: 51 Location: Vancouver, Canada
|
(Separately) Posted: Mon Dec 03, 2007 21:41 Post subject: |
|
|
Я в своем плагине (PDF-Filter) это делал, не помогло, как не работали клавиши, так и не работают. После плясок с бубнами с CustomizedBrowser, EmbeddedBowser, etc., понял, что
нужно смотреть на установку хука с помощью SetWindowsHookEx, с этим все работает отлично (спасибо IEView, там именно так и сделано). |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Thu Dec 06, 2007 20:13 Post subject: |
|
|
volovyan wrote: | После плясок с бубнами с CustomizedBrowser, EmbeddedBowser, etc., понял, что
нужно смотреть на установку хука с помощью SetWindowsHookEx |
Ясно, спасибо. У меня есть пример плагина с хуком, но я в нем не разобрался. Не хватило терпения.  _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
 |
volovyan
Joined: 03 Dec 2007 Posts: 51 Location: Vancouver, Canada
|
(Separately) Posted: Fri Dec 07, 2007 22:26 Post subject: |
|
|
У меня после установки хука работает отлично. Код пришлю сегодня (7 дек) вечером (по нашему местному времени на работе работаю ) |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Fri Dec 07, 2007 23:29 Post subject: |
|
|
Пример плагина с WebBrowser и хуком?- спасибо. |
|
Back to top |
|
 |
volovyan
Joined: 03 Dec 2007 Posts: 51 Location: Vancouver, Canada
|
(Separately) Posted: Mon Dec 10, 2007 04:52 Post subject: |
|
|
См. ЛС |
|
Back to top |
|
 |
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Sat Feb 23, 2008 21:51 Post subject: |
|
|
Новостей не будет? _________________ Xubuntu |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Sun Feb 24, 2008 03:56 Post subject: |
|
|
С тем, что сказал Volovyan? нет. Нет времени этим заниматься,- встраиванием хука в плагин и тестированием потом, как это все работает то в Тотале, то в Universal Viewer.
Тем более я хуки не люблю, не программировал с ними ничего.. _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
 |
|