Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

запустить копию проги при кликание на сылку в EmbeddedWB (типа webbrowser)

50K
30 сентября 2012 года
smit333333
12 / / 23.11.2009
как запустить копию проги при кликание на сылку в EmbeddedWB (типа webbrowser) с использованием Paramcount.
Вот вопрос возник embeddedwb оnкрываем ссылку открывается новое окно и например, если я закрою первичное окно то закроется и дочернее окно, а возможен вариант, что бы при закрытие родительского окна не происходило закрытие и дочернего. Судя по всему iexplorer запускает вторую копию программы и туда подставляет урл. Как мне сделать, что бы при кликание на ссылку запуск проходил именно второй копии проги, плюс в строку адреса подставлялся урл ссылки?
Код срабатывающий при открытии ссылки внизу.
Код:
procedure TForm1.EmbeddedWB1NewWindow2(ASender: TObject; var ppDisp: IDispatch;
 var Cancel: WordBool);
  var
 NewWindow:TForm1;
begin
cancel := false; // новое значение
NewWindow := TForm1.Create(parent);
try
 
finally
SetWindowLong(NewWindow.Handle, GWL_EXSTYLE, GetWindowLong(NewWindow.Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
NewWindow.Show;
ppDisp:=NewWindow.EmbeddedWB1.ControlInterface;
 
 end;
end;
50K
01 октября 2012 года
smit333333
12 / / 23.11.2009
перебрал несколько вариантов что то неполучается в событие EmbeddedWB1NewWindow2(ASender: TObject; var ppDisp: IDispatch; получается надо подставить код с запуском копии и подстановкой урла. был запуск когда копия запускалась и открывала ссылку, но и запуск ехплорера происходил.
Код:
procedure TForm1.EmbeddedWB1NewWindow2(ASender: TObject; var ppDisp: IDispatch;
 var Cancel: WordBool);
 var
   url,ts: string;
  NewWindow:TForm1;
//     ovURL: OleVariant;
//  var doc:IHtmlDocument2;
begin
 with TRegistry.Create do
     try
       rootkey := HKEY_CLASSES_ROOT;
       OpenKey('\htmlfile\shell\open\command', False);
       try
         ts := ReadString('');
       except
         ts := '';
       end;
       CloseKey;
     finally
       Free;
     end;
   if ts = '' then Exit;
//if
// assigned(embeddedwb1.ControlInterface.Document)
//  then   embeddedwb1.ControlInterface.Document.QueryInterface(IHtmlDocument2,doc);
//NewWindow := TForm1.Create(parent);
//SetWindowLong(NewWindow.Handle, GWL_EXSTYLE, GetWindowLong(NewWindow.Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
//NewWindow.Show;
//ppDisp:=NewWindow.EmbeddedWB1.DefaultDispatch; //самая правильный, появляется несколько значков браузера возможен их выбор
//winexec (Pchar('C:\Program Files\Net\net.exe'), SW_SHOWNORMAL);
 
ts := Copy(ts, Pos('"', ts) + 1, Length(ts));
   ts := Copy(ts, 1, Pos('"', ts) - 1);
   ShellExecute(3, 'open', PChar('ppDisp:=NewWindow.EmbeddedWB1.DefaultDispatch'), PChar(url), nil, SW_SHOW);
//  ShellExecute( handle, 'net', PChar('C:\Program Files\Net\net.exe'), PChar(url), nil, SW_SHOW);
   
//ppDisp := Self.EmbeddedWB1.Application;
 end;
50K
06 октября 2012 года
smit333333
12 / / 23.11.2009
по порядку в DRKB идёт такой пример
OnNewWindow2
Возникает при попытке открыть документ в новом окне. Если Вы хотите, чтобы документ был открыт в Вашем экземпляре броузера, то Вам нужно создать свой экземпляр броузера и параметру ppDisp присвоить интерфейсную ссылку на этот экземпляр:

 
Код:
procedure TFormSimpleWB.WebBrowser1NewWindow2(Sender: TObject;  
  var ppDisp: IDispatch; var Cancel: WordBool);  
var    
  newForm:TFormSimpleWB;  
begin    
  newForm := TFormSimpleWB.Create(Application);  
  newForm.Show;  
  ppDisp := newForm.WebBrowser1.ControlInterface;  
end;
как видите код, как у меня практически, он запускает новое окно, НО ТОЛЬКО, КАК ДОЧЕРНЕЕ при этом при закрытие родительского закрывается и дочернее на форуме http://forum.sources.ru/index.php?showtopic=346017 посоветовали использовать winexec (shellexec) в связки с paramcount при этом рассуждаем так
 
Код:
var    
  newForm:TFormSimpleWB;
не нужен? ведь с помощью shellexecute мы должны запустить копию программы с диска по умолчанию в c:\program files\net\net.exe пробовал разные варианты
перечисляю


 
Код:
но это запустит только копию программы с установочной папки а как сотворить подстановку урла?
Куда прикрутить ppdisp?
 ShellExecute(handle,'open','net.exe', Pchar(d), nil, SW_RESTORE);
ShellExecute(handle,'open',PChar(d),PChar(newwindow.EmbeddedWB1.DefaultDispatch),nil, SW_SHOWNORMAL);
 ShellExecute(NewWindow.EmbeddedWB1.LoadFrameFromStrings, 'open', PChar(newWindow), nil, nil, SW_NORMAL);
 ShellExecute(NewWindow.Handle, 'open', 'www.scip.be', nil, nil, SW_SHOW);
ShellExecute (Form1.Handle, nil, PChar (Application.ExeName), nil, nil, SW_RESTORE);
50K
07 октября 2012 года
smit333333
12 / / 23.11.2009
http://www.programmersforum.ru/showthread.php?t=128459 решение

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог