说明:如果编译不能通过请加上uses shellapi;
得到鼠标点的窗口的句柄    
    procedure TForm1.Timer3Timer(Sender: TObject);
    var
        Yxs:TPoint;
        H:HWND;   //句柄
        Buf: array[0..1024] of Char;
    begin
        GetCursorPos(Yxs);
        H:= WindowFromPoint(Yxs); // 返回指定位置的句柄 ,是一个数字,可用inttostr显示出来看
    end;//WindowFromPoint:返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口
根据句柄得到类名称及窗口标题    
    procedure hwndclassname(hd:HWND);
    //GetClassName:为指定的窗口取得类名
    //SendMessage:将一条消息发给那个窗口
    var
        Buf: array[0..1024] of Char;
    begin
        GetClassName(H, Buf, 1024); // 得到指定句柄所在的类名称
        edit1.Text:=buf;  //显示结果
        SendMessage(H, WM_GETTEXT, 33, Integer(@Buf)); // 得到鼠标点所在位置控件的标题.
        edit2.Text:= buf;    //显示结果
       //对话框有句柄但得不到类名(返回#32768),如QQ登录对话框,系统属性对话框,右键菜单....
    end;
获得活动窗口的句柄    
    procedure TForm1.Timer1Timer(Sender: TObject);
    var
          Yxs:Thandle;
    begin
          Yxs:=GetForegroundWindow();//前台应用程序的活动窗口
          edit1.text:=inttostr(LongInt(Yxs));
    end;
获得活动窗口的标题一(不太稳定)    
    procedure TForm1.Timer1Timer(Sender: TObject);
    var
            W: PChar;
            TextLen: Integer;
    begin
            TextLen:=GetWindowTextLength(GetForegroundWindow());
            GetMem(W,TextLen);
            GetWindowText(GetForegroundWindow(),W,TextLen+1);
            Edit1.Text:=string(W);
            FreeMem(W);
    end;
根据任务栏的内容得到该程序的句柄    
    //理论上全部进程都可以,只是只有很少一部分才出现在任务条上,调试时可以先枚举出来再试试
    procedure TForm1.Button3Click(Sender: TObject);
    var
        hw:Thandle;
        cnt:thandle;
        Buf: array[0..1024] of Char;
    begin
        Hw := FindWindow(nil,'api.txt - 记事本' );//可用pchar(edit1.text)代替参数二
        if Hw = 0 then begin       //这里只能列出第一个.
            ShowMessage('没有发现相同的应用程序实例。');
        end else begin
            ShowMessage('应用程序已经加载。');//这里的句柄与枚举出来的句柄一样
        end;
    end;
枚举指定窗口的子控件    
    procedure TFRM.TimerTimer(Sender: TObject);
    var
      Point:TPoint;
      HD:THandle;
      WndClassName:Array [0..254] of Char;
      Li:TListItem;
    begin
      GetCursorPos(Point);     //获取鼠标指针的当前位置
       HD:=WindowFromPoint(point);  //得到鼠标点的句柄
      Lv.Clear;
      if HD>0 then       //多数时候是大于0
      begin          //GetClassName:返回窗口类名称
得到指定句柄的类名    
        GetClassName(HD,wndClassName,255);     //为指定的窗口取得类名  (这里的窗口指的是控件对象)
        Label1.Caption:='类名:'+ string(wndClassName)+' '+
                        '名称:'+ GetText(HD)+' '+     //GetText是一个Delphi方法 ,获得指定句柄的文本.可显示密码字符原文
                        '句柄:'+ inttostr(HD);        //显示句柄号
        if CBB.Checked then    //是否光显示单独控件类 (是否枚举子类)只有窗体,面板,框架才有子类
        begin
            Li:=Lv.Items.Add;
            Li.Caption:=String(wndClassName);
            Li.SubItems.Add(GetText(HD));
            Li.SubItems.Add(inttostr(HD));
        end
        else
            EnumChildWindows(HD,@EnumChildWndProc,0);        ////枚举子窗口句柄
      end;
      if cb.Checked then SendMessage(HD,WM_NEXTDLGCTL,0,0);  //好玩,焦点在自动移动 !!!!!!!!!
    end;
    ----
获得活动窗口的标题三(远不如二)    
    function GetText(IHwnd:LongInt):String;
    var
      TextLen:LongInt;
      TextStr:Array [0..254] of Char;
    begin
      TextLen:=SendMessage(IHwnd, WM_GETTEXTLENGTH, 0, 0);   //??
      if TextLen=0 Then
      begin
        Result:='>No Text<';
        Exit;
      end;
        SendMessage(IHwnd, WM_GETTEXT, 255, Integer(@TextStr));  //??
        Result:=StrPas(@TextStr);
    end;
    ----
    //枚举控件句柄过程
    function EnumChildWndProc(AHWnd:LongInt;ALParam:LParam):boolean;stdcall;
    var
      WndClassName:Array [0..254] of Char;
      Li:TListItem;
    begin
      GetClassName(AHWnd,wndClassName,255);
      with FRM do
      begin
        Li:=Lv.Items.Add;
        Li.Caption:=String(wndClassName);
        Li.SubItems.Add(GetText(AHWnd));
        Li.SubItems.Add(inttostr(AHWnd));
      end;
      result:=true;
    end;
------------------
获得活动窗口的标题二    
procedure TForm1.Timer2Timer(Sender: TObject);
var
      Yxs:Thandle;
       Buf: array[0..1024] of Char;
begin
      Yxs:=GetForegroundWindow();//前台应用程序的活动窗口
      SendMessage(yxs, WM_GETTEXT, 33, Integer(@Buf));
    edit2.Text:= buf;    //显示结果
end;
--------------
//设置当前获动窗口名称:当然也可指定窗口了
procedure TForm1.Timer1Timer(Sender: TObject); 
begin 
    SetWindowText(GetForegroundWindow(),Pchar('维特创业'));
end; 

-------------
关闭进程一            
    procedure TForm1.Button4Click(Sender: TObject);        
    var        
        W: HWnd;        
        str: String;        
    begin        
        str := InputBox('提示','请输入完整的应用程序在任务栏中的名称:','');        
        if str = '' then  Exit;        
        W := FindWindow(nil, PChar(str));        
        if W <> 0 then SendMessage(W,WM_CLOSE,0,0)  // 目标要提示保存        
    end;
        
关闭进程二    uses tlhelp32,shellapi;        
    procedure TClosePramForm.Button2Click(Sender: TObject);        
    var        
      lppe:tprocessentry32;        
      sshandle:thandle;        
      hh:hwnd;        
      found:boolean;        
    begin        
      sshandle:=createtoolhelp32snapshot(TH32CS_SNAPALL,0);        
      found:=process32first(sshandle,lppe);        
      while   found   do        
      begin        
          if   uppercase(extractfilename(lppe.szExeFile))='EXCEL.EXE'   then  //必须是一个完整的进程名称        
          begin        
              hh:=OpenProcess(PROCESS_ALL_ACCESS,true,lppe.th32ProcessID);        
              TerminateProcess(hh,0);        //目标不保存改变,没任何提示即退出
          end;        
          found:=process32next(sshandle,lppe);    //关闭相同的多个进程        
      end;        
    end;        
-----------
//将窗口调到前台
SetForegroundWindow(yxs);     //指定句柄
----------------
//将进程置顶
setwindowpos(strtoint(edit1.Text),hwnd_topmost,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE)//HWND_NOTOPMOST=最顶部窗口的后面
=====================
//禁止程序显示在任务栏上 当然也可指定窗口了
procedure TIcoForm.Button1Click(Sender: TObject);
begin
  showwindow(application.Handle,SW_HIDE);//sw_show恢复
===枚举正在运行的进程===
procedure TForm1.Button1Click(Sender: TObject);
var
  hCurrentWindow:HWnd;
  szText:array[0..254] of char;
begin
  hCurrentWindow := GetWindow(Handle, GW_HWNDFIRST);\\得到第一个窗口
  while hCurrentWindow <> 0 do
  begin
    if GetWindowText(hCurrentWindow, @szText, 255)>0 then Memo1.Lines.Add(StrPas(@szText));
    hCurrentWindow:=GetWindow(hCurrentWindow, GW_HWNDNEXT);\\得到下一个窗口
  end;
end;
end;