注册 登录
编程论坛 Delphi论坛

delphi如何跨进程获取控件名称

sin3322 发布于 2011-05-12 10:24, 2083 次点击
SendMessage 好像不可以啊,没有相应的消息
3 回复
#2
zin59702011-05-16 15:35
我做过把控件传进去的...
function NewThread(PB:TProgressBar):LongInt;stdcall;


#3
aaa0008302011-05-17 19:41
方法一:可以自己添加一个 SendMessage 消息函数,很简单的

方法二:也可以建立一个DLL文件,如楼上所说的建一个函数传递

方法三:利用注册表记录控件名称,这里给出这种代码:

  在单元开始的 uses 里加上 Registry 引用,我这里就创建一个过程吧
  这个函数是在要记录控件名称的单元里写的,
  procedure RemeberControlName;
  var
    mReg:Tregistry;
  begin
    mReg := Tregistry.create;
    try
      with mReg do
      begin
        RootKey := HKEY_LOCAL_MACHINE ;
        if not KeyExists('System\SoftwareInformation') then
        begin
          if  OpenKey('System\SoftwareInformation',true) then
          begin
            WriteString('ControlName',name);
          end;
      end;
     finally
       mReg.free;
     end;
  end;

下面的这个函数是在要读取控件名称的单元里写的,同样要在单元uses里加上Registry,也创建一个过程吧
 
  procedure ReadControlName;
  var
    mReg:Tregistry;
    mName :string; //获取控件名称的变量
  begin
    mReg := Tregistry.create;
    try
      with mReg do
      begin
        RootKey := HKEY_LOCAL_MACHINE ;
        if OpenKey('System\SoftwareInformation',false) = true then
          mName := ReadString('ControlName',name);
      end;
    finally
      mReg.free;
    end;
  end;

#4
s9123601012011-05-28 13:27
1