![]() |
![]() ![]() ![]() ![]() |
|
Открыть URL в новом стандартном окне TWebBrowser 2Delphi , Интернет и Сети , БраузерОткрыть URL в новом стандартном окне TWebBrowser 2
Оформил: DeeCo
{ From: http://community.borland.com/article/0,1410,16858,00.html }
uses
DdeMan,
{$IFDEF WIN32}
Registry; {We will get it from the registry}
{$ELSE}
IniFiles; {We will get it from the win.ini file}
{$ENDIF}
{$IFNDEF WIN32}
const
MAX_PATH = 144;
{$ENDIF}
function GetProgramAssociation(Ext: string): string;
var
{$IFDEF WIN32}
reg: TRegistry;
s: string;
{$ELSE}
WinIni: TIniFile;
WinIniFileName: array[0..MAX_PATH] of Char;
s: string;
{$ENDIF}
begin
{$IFDEF WIN32}
s := '';
reg := TRegistry.Create;
reg.RootKey := HKEY_CLASSES_ROOT;
if reg.OpenKey('.' + ext + '\shell\open\command',
False) <> False then
begin
{The open command has been found}
s := reg.ReadString('');
reg.CloseKey;
end
else
begin
{perhaps thier is a system file pointer}
if reg.OpenKey('.' + ext,
False) <> False then
begin
s := reg.ReadString('');
reg.CloseKey;
if s <> '' then
begin
{A system file pointer was found}
if reg.OpenKey(s + '\shell\open\command',
False) <> False then
{The open command has been found}
s := reg.ReadString('');
reg.CloseKey;
end;
end;
end;
{Delete any command line, quotes and spaces}
if Pos('%', s) > 0 then
Delete(s, Pos('%', s), Length(s));
if ((Length(s) > 0) and
(s[1] = '"')) then
Delete(s, 1, 1);
if ((Length(s) > 0) and
(Pos('"', s) > 0)) then
Delete(s, Pos('"', s), Length(s));
while ((Length(s) > 0) and
(s[Length(s)] = ' ')) do
Delete(s, Length(s), 1);
{$ELSE}
GetWindowsDirectory(WinIniFileName, SizeOf(WinIniFileName));
StrCat(WinIniFileName, '\win.ini');
WinIni := TIniFile.Create(WinIniFileName);
s := WinIni.ReadString('Extensions',ext,'');
WinIni.Free;
{Delete any command line}
if Pos(' ^', s) > 0 then
Delete(s, Pos(' ^', s), Length(s));
{$ENDIF}
Result := s;
end;
procedure StartNewBrowserWindow(URL: string);
var
DDEConv: TDDEClientConv;
URLFired: bool;
App: string;
UpApp: string;
p: array[0..MAX_PATH] of Char;
begin
UrlFired := False;
App := GetProgramAssociation('HTM');
UpApp := Uppercase(App);
Delete(App, Pos('.EXE', UpAPP), Length(App));
if Pos('NETSCAPE.EXE',
UpApp) > 0 then
begin
DDEConv := TDDEClientConv.Create(nil);
DDEConv.ServiceApplication := App;
if DDEConv.SetLink('NETSCAPE', 'WWW_OpenURL') then
if DDEConv.RequestData(URL + ',,0x0,0x0') <> nil then
if DDEConv.SetLink('NETSCAPE', 'WWW_Activate') then
URLFired := DDEConv.RequestData('0xFFFFFFFF,0x0') <> nil;
DDEConv.Free;
end
else if Pos('IEXPLORE.EXE',
UpApp) > 0 then
begin
DDEConv := TDDEClientConv.Create(nil);
DDEConv.ServiceApplication := App;
if DDEConv.SetLink('iexplore', 'WWW_OpenURL') then
if DDEConv.RequestData(URL + ',,0') <> nil then
if DDEConv.SetLink('iexplore', 'WWW_Activate') then
URLFired := DDEConv.RequestData('0,0') <> nil;
DDEConv.Free;
end;
if UrlFired = False then
WinExec(StrPCopy(@p, URL), SW_SHOWNORMAL);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
StartNewBrowserWindow('http://www.borland.com');
StartNewBrowserWindow('http://www.yahoo.com');
end;
Функция Функция принимает два параметра: Сначала функция проверяет, является ли она запущенной на Windows (WIN32) или нет. Если это Windows, она использует реестр для получения ассоциации; в противном случае, она использует INI-файл. Затем функция открывает ключ реестра для указанного расширения и получает значение, связанное с подключением "shell\open\command". Это значение ожидается быть строкой, содержащей командную строку, используемую для запуска приложения, ассоциированного с расширением. Если ключ "shell\open\command" не существует, функция проверяет, есть ли системный файловый указатель, связанный с расширением, и получает его командную строку, если она существует. Функция затем очищает любые кавычки или пробелы в полученной командной строке, удаляя их с помощью процедуры Процедура Процедура сначала проверяет, есть ли программная ассоциация для расширения "HTM" (обычно ассоциированного с файлами HTML). Если ассоциация существует, она проверяет, является ли приложение, ассоциированное с этим расширением, Netscape или Internet Explorer. Если это Netscape, она использует DDE для отправки запроса на открытие URL с помощью Netscape; если это Internet Explorer, она использует DDE для отправки запроса на открытие URL с помощью IE. Если ассоциация не существует для расширения "HTM", или если пользовательский браузер не является Netscape или IE, процедура переходит к использованию Событие кнопки Button1Click
Это событие вызывается, когда на форме нажимается кнопка. Оно вызывает процедуру В целом, это код обеспечивает способ запуска по умолчанию браузера (Netscape или Internet Explorer) изнутри приложения Delphi, используя DDE на Windows. Если по умолчанию браузер не является Netscape или IE, он переходит к запуску по умолчанию браузера с помощью Открытие URL в новом стандартном окне TWebBrowser 2 позволяет пользователю открыть выбранную страницу в отдельном окне. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||