⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 delphi 写的一个窗口捕获程序
💻 PAS
字号:
unit unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ToolWin, ComCtrls, ImgList, Grids, StdCtrls, ExtCtrls,
  shellapi, DB, ADODB;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N5: TMenuItem;
    ImageList1: TImageList;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    TreeView1: TTreeView;
    StatusBar1: TStatusBar;
    OpenDialog1: TOpenDialog;
    N9: TMenuItem;
    ImageList2: TImageList;
    TreeView2: TTreeView;
    N4: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    Splitter1: TSplitter;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    procedure N8Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure TreeView2DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure TreeView2DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;State: TDragState; var Accept: Boolean);
    procedure N4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TreeView2DblClick(Sender: TObject);
    private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  parentnode:Ttreenode;
  function EnumWindowsProc(AhWnd:LongInt;AForm:TForm1):boolean;stdcall;//enumerate the top window
implementation
uses
unit2;

{$R *.dfm}
function EnumchildWindowsProc(Bhwnd:LongInt;AForm:TForm1):boolean;stdcall;
var
lpszClassName,lpszWindowText:array[0..254] of char;
nodename:string;
begin

GetWindowText(BhWnd,lpszWindowText,254);//get window's caption
GetClassName(BhWnd,lpszClassName,254);  //get window's type
nodename:=inttostr(Bhwnd)+'|'+StrPas(lpszWindowText)+'|'+StrPas(lpszClassName);//the node's text
form1.TreeView1.items.addchild(parentnode,nodename); //add childnode under the parentnode
Result:=true;
end;

procedure GenerateWindowsTree(Chwnd:longint; pnode:Ttreenode);//generate the tree of the top window
  var
  hChild:longint;// the handle of the child window
  pSubNode:TTreeNode; //the treenode of the new childnode
  szClassName:array[0..254] of char;//the type of the child window
  szCaptionname:array[0..254] of char; //the caption of the window
  nodename:string;
begin

       hChild := GetWindow(chwnd,GW_CHILD);
       while hchild>0 do
       begin
       GetClassName(hChild, szClassName, 256);
       Getwindowtext(hChild, szCaptionName, 256);
       nodename:=ansistring(inttohex(hChild,8))+' | '+StrPas(szCaptionname)+' | '+StrPas(szClassName);
       pSubNode:= form1.TreeView1.Items.AddChild(pnode,nodename);
       GenerateWindowsTree(hChild, pSubNode);
       hChild:=GetWindow(hChild, GW_HWNDNEXT);//recursion of the function
       end;

end;

function EnumWindowsProc(AhWnd:LongInt;AForm:TForm1):boolean;
var
lpszClassName,lpszWindowText:array[0..254] of char;
mynode:TTreenode;
nodename:string;

begin
GetWindowText(AhWnd,lpszWindowText,254);
GetClassName(AhWnd,lpszClassName,254);
mynode:=Form1.TreeView1.Items.GetFirstNode;
nodename:=ansistring(inttohex(Ahwnd,8))+' | '+StrPas(lpszWindowText)+' | '+StrPas(lpszClassName);
parentnode:=Form1.TreeView1.items.addchild(mynode,nodename);
//enumchildwindows(Ahwnd,@Enumchildwindowsproc,0);
GenerateWindowsTree(Ahwnd,parentnode);
Result:=True;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
close;
end;

procedure TForm1.N7Click(Sender: TObject);
begin
if opendialog1.Execute then
winexec(pchar(opendialog1.FileName),sw_normal);
treeview1.Items.Clear;
treeview1.Items.AddChild(nil,'桌面');
EnumWindows(@EnumWindowsProc,LongInt(self));//@EnumWindowsProc as the address of the callback function
end;

procedure TForm1.N6Click(Sender: TObject);
begin
treeview1.Items.Clear;
treeview1.Items.AddChild(nil,'桌面');
EnumWindows(@EnumWindowsProc,LongInt(self));

end;



procedure TForm1.TreeView2DragDrop(Sender, Source: TObject; X, Y: Integer);
var
copytree:Ttreenode;
begin
if (source=Treeview1) then
begin
 copytree:=treeview1.Selected;
 //treeview2.items.addnode(copytree,treeview2.Selected,copytree.Text,copytree.Data,naaddchild);
 //treeview2.GetNodeAt(x,y).Create(copytree);
 if treeview2.GetNodeAt(x,y)<>nil then
  treeview2.Items.AddChildObject(treeview2.GetNodeAt(x,y),copytree.Text,copytree);
 end;
end;

procedure TForm1.TreeView2DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
      Accept := Source is TTreeview;
end;

procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
copytree:Ttreenode;
begin
if (source=treeview2) and (sender=treeview1) then
begin
 copytree:=treeview2.Selected ;
 if copytree.Parent <>nil then
 treeview2.Items.Delete(copytree);
 
end;
end;
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
 Accept := Source is TTreeview;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

form2.show;
form2.TreeView1.items.Assign(form1.TreeView2.items);
//movnode:=form2.TreeView1.Items.GetFirstNode;
//form2.TreeView1.
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.TreeView2.Items.Add(nil,'新动作');
end;

procedure TForm1.TreeView2DblClick(Sender: TObject);
begin
form1.N4.Click;
end;




end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -