• 得到别的程序的窗口句柄,改变窗口标题,要改变窗口文本框内容程序如下


    得到别的程序的窗口句柄,改变窗口标题,要改变窗口文本框内容程序如下

    unit   unit1;   
        
      interface   
        
      uses   
          Windows,   Messages,   SysUtils,   Classes,   Graphics,   Controls,   Forms,   Dialogs,   
          StdCtrls,   ComCtrls,   ExtCtrls;
        
      type   
          TForm1   =   class(TForm)   
              button2:   TButton;   
              ListBox1:   TListBox;   
              Button1:   TButton;   
              procedure   tutton2Click(Sender:   TObject);   
              procedure   Button1Click(Sender:   TObject);   
              procedure   Timer1Timer(Sender:   TObject);   
          private
              {   Private   declarations   }   
          public   
              {   Public   declarations   }   
          end;   
        
      var   
          Form1:   TForm1;   
        
      implementation   
    
      {$R   *.DFM}   
        
      function   GetText(Wnd   :   HWND)   :   string;   
      var   
          textlength   :   integer;   
          text   :   PChar;   
      begin   
          textlength:=SendMessage(Wnd,WM_GETTEXTLENGTH,0,0);   
          if   textlength=0   then   
              Result   :=   ''
          else   begin   
              getmem(text,textlength+1);   
              SendMessage(Wnd,WM_GETTEXT,textlength+1,Integer(text));   
              Result:=text;   
              freemem(text);   
          end;   
      end;   
      function   EnumWindowsProc   (Wnd:   HWND;   LParam:   LPARAM):   BOOL;   stdcall;   
      var   
          st:string;
      begin   
          Result   :=   True;   
          if   (IsWindowVisible(Wnd))   and   (GetWindowLong(Wnd,   GWL_HWNDPARENT)   =   0)   and   (GetWindowLong(Wnd,   GWL_EXSTYLE)   and   WS_EX_TOOLWINDOW   =   0)   then   begin   
              st:=GetText(Wnd);   
              Form1.Listbox1.items.add(st);   
          end;   
      end;   
      procedure   TForm1.tutton2Click(Sender:   TObject);   
      var
          Param   :   Longint;   
      begin   
          Form1.Listbox1.Clear;   
          Param   :=   0   ;   
          EnumWindows(@EnumWindowsProc   ,   Param);   
      end;   
    
      procedure   TForm1.Button1Click(Sender:   TObject);   
          function   EnumChildWindowsProc(hwnd:   Integer;   lparam:   Longint):Boolean;   stdcall;   
          var   
              buffer:   array[0..255]   of   Char;
          begin
              Result   :=   True;
              GetClassName(hwnd,buffer,256);
              if   StrPas(Buffer)='TEdit'   then
              begin
                  PInteger(lparam)^   :=   hwnd;
                  Result:=False;
              end;
          end;
      var
          Handle:   Integer;
          buffer:   Array[0..1023]   of   Char;
      begin
          Handle   :=   FindWindow(nil,pchar(Form1.listbox1.Items[listbox1.ItemIndex]));
          if   Handle<>0   then
          begin
              EnumChildWindows(Handle,@EnumChildWindowsProc,Integer(@Handle));
              SendMessage(Handle,WM_SETTEXT,0,Integer(pchar('你所需要填写的文本')));
          end;
      end;
    
      end.
    View Code
  • 相关阅读:
    gitlab第一次提交
    Command 'cnpm' not found解决方法
    ubuntu18.04安装sublime
    django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured.
    django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'. Did you install mysqlclient or MySQL-python?
    ubuntu18.04安装MySQL
    ubuntu18.04彻底卸载mysql
    rabbitmq高可用
    ASP.NET Global.asax详解
    如何真正提高ASP.NET网站的性能
  • 原文地址:https://www.cnblogs.com/blogpro/p/11453683.html
Copyright © 2020-2023  润新知