delphi 获取360极速浏览器的当前url
时间: 2023-09-05 07:11:07 浏览: 48
您好,获取360极速浏览器的当前URL,可以通过以下代码实现:
```
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
const
WM_COPYDATA = $004A;
type
TCopyDataStruct = record
dwData: ULONG_PTR;
cbData: DWORD;
lpData: Pointer;
end;
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function Get360BrowserURL: string;
function WMCopyDataHandler(var Msg: TMessage): Boolean;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.Get360BrowserURL: string;
var
h360Browser: HWND;
cds: TCopyDataStruct;
retData: PChar;
begin
Result := '';
h360Browser := FindWindow('360se6_Frame', nil); // 查找360极速浏览器的窗口句柄
if h360Browser <> 0 then
begin
ZeroMemory(@cds, SizeOf(cds));
cds.dwData := 0;
cds.lpData := 'GetTabUrl';
cds.cbData := (Length(cds.lpData) + 1) * SizeOf(Char);
retData := AllocMem(1024);
try
if SendMessage(h360Browser, WM_COPYDATA, Integer(Handle), Integer(@cds)) > 0 then
begin
Result := retData;
end;
finally
FreeMem(retData);
end;
end;
end;
function TForm1.WMCopyDataHandler(var Msg: TMessage): Boolean;
var
CDS: PCopyDataStruct;
begin
Result := False;
if Msg.Msg = WM_COPYDATA then
begin
CDS := PCopyDataStruct(Msg.LParam);
if CDS^.dwData = 0 then
begin
Memo1.Lines.Add(PChar(CDS^.lpData));
Result := True;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add(Get360BrowserURL);
end;
```
以上代码中,主要是通过 FindWindow 函数查找360极速浏览器的窗口句柄,然后通过 SendMessage 函数向浏览器进程发送消息,获取当前选项卡的URL。注意,使用 SendMessage 函数需要在 Form1 类中添加一个消息处理函数 WM_COPYDATA。