请教知道了一个control的类名称,怎样获得该control的名称啊?

解决方案 »

  1.   

    if Obj Is TComponent then ShowMessage(TComponent(Obj).Name);
      

  2.   

    obj.Name 可以获得.  如Sender.Name 组件名
      Sender.ClassName 类名.
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var i: integer;
    begin
      for i := 0 to self.ControlCount -1 do
      begin
          if (UpperCase(self.Controls[i].ClassName)= 'TLABEL') THEN
          begin
              showmessage(Tlabel(TWinControl(self.Controls[i])).Name ) ;
              Tlabel(TWinControl(self.Controls[i])).Name := 'xxx'+inttostr(i) ;
              Tlabel(TWinControl(self.Controls[i])).Caption := 'hello';
          end;
      end;
    end;
      

  4.   

    可能我的意思表达的不是很清楚,再说一遍:知道了桌面上任何其他程序里的某个control的类名称,怎样才能知道这个control的名称,不一定是本程序里的control.
      

  5.   

    那是窗口类,不是VCL类,两个不同的概念!不能获取其他程序的Control的名称,只有窗口类名
      

  6.   

    可能得不到你要的東西, 
    "这个control的名称", 是編程的時候, 為了方便記憶才記錄了,
    到了運行時, 應該只有handle才能找到對應的控件了!至少, 你編碼時, 能控制本程序, 如
    form1.edit1.text := 'xxx';
    但編繹後, 應該只有一個對應的內存地址來表示 edit1 而已
      

  7.   

    int GetClassName(          HWND hWnd,
        LPTSTR lpClassName,
        int nMaxCount
    );就我知道的, 只有這個
      

  8.   

    上面我說的是通用的 window exe 程序!
    如果針對特定的delphi程序, 也許有辦法, 但比較麻煩
      

  9.   

    谢谢 aiirii(ari-爱的眼睛) ,谢谢各位!var
      Pt: TPoint;
      CurrentHandle: THandle;
      ClassName: array[0..1023] of Char;
      S : array [0..99] of char;
      ilen : integer;
    begin  GetCursorPos(Pt);
      CurrentHandle := WindowFromPoint(Pt);
      GetClassName(CurrentHandle, ClassName, Length(ClassName));
      Caption := ClassName;
      ilen := GetWindowTextLength(CurrentHandle);  Edit1.Text := inttostr(ilen);
      GetWindowText(CurrentHandle,S,ilen+2);
      Edit2.Text := S;
    end;以上这段程序对于delphi编写的程序可以读出输入框中的数据,但是对于其他windows程序
    却读不出内容,不知道为何,请高手继续指点.