1,184
社区成员
发帖
与我相关
我的任务
分享
library findie;
uses
ShareMem, // 必须第一位,其他引用该dll的项目也一样
Windows,
Messages,
SysUtils
........
unit4 做如下修改:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, {sharemem}; // 去掉sharemem,这个不是放这里的
program formtest;
uses
ShareMem, // 加在这里
Forms,
dialogs,
Unit4 in 'Unit4.pas' {Form4};
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm4, Form4);
Application.Run;
end.
=====================
function geturlstringdynamic(): shortstring;
type
TFunc = function(x:Integer): shortstring; stdcall; // 你DLL中函数原型必须匹配
var
Th: Thandle;
Tf: TFunc;
Tp: TFarProc;
begin
Th := LoadLibraryw('findie.dll');
@Tf := GetProcAddress(Th, 'GetIEUrl');
result := Tf(111);
freelibrary(th);
end;
==================
findie.dll 做如下修改:
function GetIEUrl(x: integer): shortstring; stdcall;
var
DDE: TDdeClientConv;
bret: boolean;
presult: pansichar;
sresult: shortstring;
begin
// dde := TDdeClientConv.Create(dde); 改为下面
dde := TDdeClientConv.Create(nil);
dde.OpenLink;
bret := DDE.SetLink('Iexplore', 'WWW_GetWindowInfo');
if bret then
begin
presult := dde.RequestData('0xFFFFFFFF,sURL, sTitle');
sresult := shortstring(presult);
result := shortstring(geturlstring(sresult));
dde.CloseLink;
dde.free;
//result:='15s';
end
else
begin
result := 'no ie';
end;
end;
最后重写build所有项目

