Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2011, 20:46   #1
s2004
Пользователь
 
Регистрация: 30.11.2011
Сообщений: 13
По умолчанию запуск копии webbrowser с подстановкой адреса

Вот вопрос возник 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;
не получается главное, что то толком не нашёл место где можно заменить открытие дефаульт браузера на свой... Второй параметр Open или close или nil, но я так понял относится только по умолчанию браузеру, а как изменить на свой да с подстановкой ссылки для открытия одним словом код наверху и кучу за это время перебрал. Свой браузер не открывается по сылке, а только iexplorer.

Код:
ShellExecute(Handle,'open',PChar(d),PChar(newwindow.EmbeddedWB1.DefaultDispatch),nil, SW_SHOWNORMAL);
s2004 вне форума Ответить с цитированием
Старый 30.11.2011, 21:10   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

зачем тебе дефаул-браузер. в своей программе обрабатывать параметры командной строки, просто запускай свою копию с нужным адресом
rpy3uH вне форума Ответить с цитированием
Старый 30.11.2011, 21:33   #3
s2004
Пользователь
 
Регистрация: 30.11.2011
Сообщений: 13
По умолчанию

так вот как и обработать не получается запускается проводник и плюс своя прога но без подстановки урла ссылки
s2004 вне форума Ответить с цитированием
Старый 14.10.2012, 19:12   #4
s2004
Пользователь
 
Регистрация: 30.11.2011
Сообщений: 13
По умолчанию

Вопрос решён на выбор

Код:
var
  Form1: TForm1;
  S:string; //тут будем хранить сылку на новое окно

procedure TForm1.EmbeddedWB1StatusTextChange(ASender: TObject;
  const Text: WideString);
begin
 StatusBar1.SimpleText:=Text;
  if Copy(Text, 1, 4)='http' then S:=Text; //Если ссылка, то ее записать
                                    //(вдруг потом нужно будет по ней перейти)



procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);
begin
  Cancel:=True; //Заприщаем запуск обозревателя IE
  ShellExecute(Handle, 'open', PChar(ParamStr(0)), PChar(S), nil, 0);
    //Запускаем себя еще раз, только указав в параметрах ссылку на новое окно
    // можно и вкладки создать, как в опере... но это уже другой разговор =))
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  if Form1.Tag=1 then Exit;
  If ParamCount>0 then   //Если имеется параметр, то переходим по нему
  begin
    Edit1.Text:=ParamStr(1);
    WebBrowser1.Navigate(ParamStr(1));
  end;
  Form1.Tag:=1; //Если сново будет вызов onshow, то ничего не делать
end;


2 вариант 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,unit2;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  form_count:cardinal=0;

function NewForm:Idispatch;
procedure DecFormCount;
implementation

{$R *.dfm}

function NewForm:Idispatch;
begin
 with TForm2.Create(Application)do
  begin
  visible:=true;
  result:=WebBrowser1.DefaultDispatch;
  inc(form_count);
  end;
end;

procedure DecFormCount;
begin
dec(form_count);
if form_count=0 then application.Terminate;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
NewForm;
end;

end.
 
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls;

type
  TForm2 = class(TForm)
    Panel1: TPanel;
    Edit1: TEdit;
    Button1: TButton;
    WebBrowser1: TWebBrowser;
    procedure Button1Click(Sender: TObject);
    procedure WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch;
      var Cancel: WordBool);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation
 uses unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate(edit1.Text);
end;

procedure TForm2.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);
begin
 ppDisp:=NewForm;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DecFormCount;
end;

end
s2004 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как разрешить запуск второй копии чужого приложения s1s1s1 Общие вопросы Delphi 4 02.11.2011 01:47
Проблема с подстановкой Beerik Microsoft Office Access 4 01.02.2011 10:21
Запуск только одной копии приложения Casper-SC Общие вопросы .NET 1 18.07.2010 02:06
Помогите пожалуйста с подстановкой n22sn Microsoft Office Excel 6 30.09.2009 09:13
Проблемка с подстановкой! masterenergy Microsoft Office Excel 4 28.08.2009 17:39