Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

О том как добавить свой пункт в меню 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]

Аууууу, кто-нибудь ответьте.


Наверх

Титульная страница Поиск, карта сайта Написать письмо