在没有uses forms的情况下,怎么获得自己的handle

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
       self.Handle   就是自已end;end.
      

  2.   

    楼上答非所问,楼主明明说不uses forms
      

  3.   

    没有uses forms的情况下,怎么获得自己的handle?/说的不大明白,你到底是什么意思喔,直接用self指针向楼上那样就可以了呀。你说的是什么意思嘛
      

  4.   

    在不uses forms单元情况下,你得到的对象肯定不能用TForm类型来传咯。
    可以试试这样:
    TControl(self).Handle
    或TWinControl(self).Handle
      

  5.   

    不懂不懂。self就是self。与forms有关系吗?self在ebx寄存器内。不uses任何文件self都可以用。而且Handle这个属性是TWinControl的。只要uses Controls就可以了。
    另外,反问一下,如果你用VC+SDK怎么得到Handle?而不是用delphi的Vcl。
      

  6.   

    一个缺省的delphi工程,delphi会自动生成两个窗体,一个是你的主程序窗体,就是你的Project单元中的Application,该窗体运行时不可见,但表现为任务栏上的那个按钮,可以用Application这个全局变量访问,其句柄是Application.Handle。
    另一个就是Form1,就是你设计和运行时看到的那个窗体,其句柄是Form1.Handle。
    这两个单元都要uses forms的。
    如果不用forms,那么你要么不用窗体,要么自己创建窗体,这样你更应该早知道和拥有窗体句柄。
    如果根本没有窗体,那可以用GetCurrentProcess来获得当前进程的句柄。