咋样从一个delphi程序访问另外一个delphi程序中的对象。(100分)

  • 主题发起人 主题发起人 midas
  • 开始时间 开始时间
M

midas

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个用delphi编写的程序正在应用,但有一些个别界面不满意,而我又无法直接修改,
咋样再写一个delphi程序,可以直接访问第一个程序中的object. 如form等。
例如,如有格用delphi写的程序中的一个form的formstyle 是stayontop,
我想些另外一个程序能够访问到第一个程序的form,然后将其formstyle设置即可
当然我可以通过hook实现,但如能直接访问就更好了。
絮絮叨叨,不知说清了吗?
 
如果第一个程序中的组件写成COM对象,第二个引用其类型库就行。
但目前这种状况看起来不容易
 
分发送与接收
发送:新建一个工程,并在其窗体中加一个EDIT和一个BUTTON
procedure TForm1.button1click(sender:TObject);
var
ds:TCopydatastruct;
hd:THandle;
begin
ds.cbData:=Length(Edit1.Text)+1;
GetMem(ds.lpData,ds.cbData); //为传递数据分配内存
StrCopy(ds.lpdata,PChar(edit1.Text));
hd:=Findwindow(nil,'Form2'); //获得按受窗口的句柄
if HD<>0 then
SendMessage(Hd,WM_COPYDATA,Handle,Cardinal(@ds); //发送WM_COPYDATA消息
else
Showmessage('No found!');
FreeMem(ds.lpData); //释放资源
end;

接收:再建一个工程,并在其窗体中加一个EDIT
unit unit2;
....
public
{Public declarations}
procedure Mymessage(var t:TWmCopyData);message WM_COPYDATA;
...
procedure TForm2.Mymessage(var t:TWmCopyData);
begin
edit1.text:=Strpas(t.CopyDataStruct^.lpData); //接受并显示
end;
 
>>>>
 
呵呵,第一个程序我是控制不了的,如果能控制,我只要修改一下其属性值即可,
第一个是已经写好的,我没有源代码,只有执行程序。
望各位大虾继续支招
 
取第一个程序的resource, 然后找出delphi的form resource, 分析你要修改的属性的位置
然后直接改变它, 再写回第一个程序的resource中.
 
有一个叫做ResHacker的程序,可以直接修改Delphi编译的Exe文件的Resource
 
这也算是个办法。但是第一个程序已经加密,我不能直接修改其资源,所以我想动态修改
 
真的很难到一些黑客网站问问
 
没有更好的答案了吗?各位大虾
 
附加功能 将问题提前
 
这是可以的,exex上有人回答过这个问题,好像你写一个新的xxx.dll还是
什么东东的就可以(名字没记住),所有的dephi 程序都会自动加载这个东东
然后你就可以得到那个delphi程序的anything了,呵呵,你还是上
exex上查一下吧
 
midas:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
多人接受答案了。
 
后退
顶部