![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
О том как добавить свой пункт в меню IE?
DDS © (2004-02-06 00:13:00)Мне надо, чтобы мой пункт в контекстном меню IE работал
так же как у Reget. Пункт я добавил вот так:
procedure CreateExplorerMenu;
var
Reg: TRegistry;
ProgramPath: string;
RegKeyPath: string;
begin
ProgramPath := ExtractFilePath(Application.ExeName);
Reg := TRegistry.Create;
try
with Reg do begin
RootKey := HKEY_CURRENT_USER;
RegKeyPath := 'Software\Microsoft\Internet Explorer\MenuExt\&Project';
OpenKey(RegKeyPath, True);
WriteString('', ProgramPath);
WriteInteger('contexts',34);
end
finally
Reg.CloseKey;
Reg.Free;
end;
end;
А вот как мне получить ссылку на которой открыли меню и как послать ее моему приложению.
( Контекстное меню не проводника, а именно Internet Explorer)
alex shad (2004-03-09 13:04:00) [1]Ну лично по твоему коду я сделал так (правда еще не доконца):
****
procedure CreateExplorerMenu;
var
Reg: TRegistry;
ProgramPath: string;
RegKeyPath: string;
begin
ProgramPath := ExtractFilePath(Application.ExeName);
Reg := TRegistry.Create;
try
with Reg do begin
RootKey := HKEY_CURRENT_USER;
RegKeyPath := 'Software\Microsoft\Internet Explorer\MenuExt\Добавить в Linker';
OpenKey(RegKeyPath, True);
WriteString('','file://'+ProgramPath+'add.html');
WriteInteger('contexts',34);
end
finally
Reg.CloseKey;
Reg.Free;
end;
end;
*****
Код html я взял у авторов Leechget
*******
var Linker = new ActiveXObject("LinkIE.link");
if(Linker)
{
var srcEvent = external.menuArguments.event;
var srcDoc = external.menuArguments.document;
var srcElement = srcDoc.elementFromPoint(srcEvent.clientX, srcEvent.clientY);
var srcAnchor = srcElement;
var sURL = "";
var sComment = "";
while(srcAnchor.tagName!="A" && srcAnchor.tagName!="AREA" && srcAnchor.tagName!="HTML") {srcAnchor=srcAnchor.parentElement;}
if(srcEvent.type=="MenuExtUnknown" || srcEvent.type=="MenuExtImage" || srcEvent.type=="MenuExtAnchor")
{
if(srcAnchor.tagName=="A" || srcAnchor.tagName=="AREA") {sURL = srcAnchor.href;}
if(srcAnchor.tagName=="HTML" && srcElement.tagName=="IMG") {sURL = srcElement.src;}
if(srcAnchor.tagName=="input" && sURL=="") {sURL = srcElement.value;}
}
if(sURL!="")
{
LeechGet.AddUrl(sURL);
}
}
else
{
alert("LeechIE.dll is not registered. Please run `regsvr32.exe LeechIE.dll`");
}
****
Как я понял сдесь
while(srcAnchor.tagName!="A" && srcAnchor.tagName!="AREA" && srcAnchor.tagName!="HTML") {srcAnchor=srcAnchor.parentElement;}
if(srcEvent.type=="MenuExtUnknown" || srcEvent.type=="MenuExtImage" || srcEvent.type=="MenuExtAnchor")
{
if(srcAnchor.tagName=="A" || srcAnchor.tagName=="AREA") {sURL = srcAnchor.href;}
if(srcAnchor.tagName=="HTML" && srcElement.tagName=="IMG") {sURL = srcElement.src;}
if(srcAnchor.tagName=="input" && sURL=="") {sURL = srcElement.value;}
}
кидается линка в буфер (если конечно я правильно понял), затем ты при запуске своего приложения на onShow вытаскиваешь из буфера линк. Но я еще до этого не добрался.
Я не знаю как из javascript запустить *.exe файл, мне надо его тут (если я конечно правильно понял)
if(sURL!="")
{
LeechGet.AddUrl(sURL);
}
запустить. Случаем не знаешь как с javascript пускануть?
Просто если использовать код LeechGet, надо регестрировать свое приложение в системе и пиребевать сам код, хотя впринципи это не сложно сделать, но гиморно :(
DDS (2004-02-07 13:50:00) [2]Аууууу, кто-нибудь ответьте.