已经完成了IE右键得到URL的DLL,但是DLL如何通知EXE? Step.1 FindWindow()找到运用程序主窗体的句柄Step.2 SendMessage()发送WM_COPYDATA的消息给它Step.3 接收消息处理 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var 申請的參數,指針,函數返回,發送消息等等都可以啊? //发procedure TForm1.Button1Click(Sender: TObject);var vCopyDataStruct: TCopyDataStruct;begin vCopyDataStruct.lpData := PChar(Memo1.Text); vCopyDataStruct.cbData := Length(Memo1.Text); vCopyDataStruct.dwData := SizeOf(TCopyDataStruct); SendMessage(FindWindow('TForm2', nil), WM_COPYDATA, Handle, Integer(@vCopyDataStruct));end;//收procedure TForm2.WMCOPYDATA(var Msg: TWMCOPYDATA);var vBuffer: array[0..255]of Char; pBuffer: PChar;begin pBuffer := vBuffer; Caption := IntToStr(Integer(Msg.CopyDataStruct)); CopyMemory(pBuffer, Msg.CopyDataStruct^.lpData, Msg.CopyDataStruct^.cbData); pBuffer[Msg.CopyDataStruct^.cbData] := #0; Memo1.Text := vBuffer;end;//vCopyDataStruct.lpData是数据的指针//vCopyDataStruct.cbData是数据的大小 //上面错了,应该是uses Messages; dll中没有form,如何得到SendMessage(FindWindow('TForm2', nil), WM_COPYDATA, Handle, Integer(@vCopyDataStruct));中的Handle? procedure WMCOPYDATA(var Msg: TWMCOPYDATA);如何声明? //.... procedure WMCOPYDATA(var Msg: TWMCOPYDATA); message WM_COPYDATA; public//.... 搞定了,谢谢!给分!总结一下://dll的项目名称为brsclick,要向主程序brs.exe发送消息//dll 发 uses ...Messages.........procedure SendClickUrl(StrUrl: string);var vCopyDataStruct: TCopyDataStruct;begin vCopyDataStruct.lpData := PChar(StrUrl); //StrUrl为发送的 vCopyDataStruct.cbData := Length(StrUrl); vCopyDataStruct.dwData := SizeOf(TCopyDataStruct); if FindWindow(nil, 'brs') <> 0 then begin SendMessage(FindWindow(nil, 'brs'), WM_COPYDATA, LoadLibrary('brsclick'), Integer(@vCopyDataStruct)); end;end;//exe收private procedure WMCOPYDATA(var Msg: TWMCOPYDATA); message WM_COPYDATA;......procedure TfrmMain.WMCOPYDATA(var Msg: TWMCOPYDATA);var vBuffer: array[0..255] of Char; pBuffer: PChar;begin pBuffer := vBuffer; CopyMemory(pBuffer, Msg.CopyDataStruct^.lpData, Msg.CopyDataStruct^.cbData); pBuffer[Msg.CopyDataStruct^.cbData] := #0; application.MessageBox(vBuffer, vBuffer, 0); //vBuffer为收到的end; 求购简单进销存 一个DBGrid如何显示多个表的数据? delhpi 对基类变量的引用 高分求教!如何在指定目录内搜索特定名字的目录? 如何给控件中的published下的string类型的属性赋初值 大家来给公司起个名字吧! Delphi与C语言做的dll文件的兼容性问题 我的老公,回想篇(1)---------放分:) delphi 如何读取 excel? delphi5升级到delphi6问题 我靠据说是CIH病毒1.4版本的源代码.还有中文注释.大家一起来研究研究吧. 如何作出类似history kill 中的boss -key功能
var 申請的參數,指針,函數返回,發送消息等等都可以啊?
procedure TForm1.Button1Click(Sender: TObject);
var
vCopyDataStruct: TCopyDataStruct;
begin
vCopyDataStruct.lpData := PChar(Memo1.Text);
vCopyDataStruct.cbData := Length(Memo1.Text);
vCopyDataStruct.dwData := SizeOf(TCopyDataStruct);
SendMessage(FindWindow('TForm2', nil), WM_COPYDATA, Handle, Integer(@vCopyDataStruct));
end;//收
procedure TForm2.WMCOPYDATA(var Msg: TWMCOPYDATA);
var
vBuffer: array[0..255]of Char;
pBuffer: PChar;
begin
pBuffer := vBuffer;
Caption := IntToStr(Integer(Msg.CopyDataStruct));
CopyMemory(pBuffer, Msg.CopyDataStruct^.lpData, Msg.CopyDataStruct^.cbData);
pBuffer[Msg.CopyDataStruct^.cbData] := #0;
Memo1.Text := vBuffer;
end;//vCopyDataStruct.lpData是数据的指针
//vCopyDataStruct.cbData是数据的大小
uses Messages;
中的Handle?
procedure WMCOPYDATA(var Msg: TWMCOPYDATA); message WM_COPYDATA;
public
//....
给分!
总结一下:
//dll的项目名称为brsclick,要向主程序brs.exe发送消息//dll 发
uses
...Messages...
......
procedure SendClickUrl(StrUrl: string);
var
vCopyDataStruct: TCopyDataStruct;
begin
vCopyDataStruct.lpData := PChar(StrUrl); //StrUrl为发送的
vCopyDataStruct.cbData := Length(StrUrl);
vCopyDataStruct.dwData := SizeOf(TCopyDataStruct);
if FindWindow(nil, 'brs') <> 0 then
begin
SendMessage(FindWindow(nil, 'brs'), WM_COPYDATA, LoadLibrary('brsclick'), Integer(@vCopyDataStruct));
end;
end;
//exe收
private
procedure WMCOPYDATA(var Msg: TWMCOPYDATA); message WM_COPYDATA;......procedure TfrmMain.WMCOPYDATA(var Msg: TWMCOPYDATA);
var
vBuffer: array[0..255] of Char;
pBuffer: PChar;
begin
pBuffer := vBuffer;
CopyMemory(pBuffer, Msg.CopyDataStruct^.lpData, Msg.CopyDataStruct^.cbData);
pBuffer[Msg.CopyDataStruct^.cbData] := #0;
application.MessageBox(vBuffer, vBuffer, 0); //vBuffer为收到的
end;