DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: nostrad
今日帖子: 3
在线用户: 2
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
女 haikely (阿) ★☆☆☆☆ -
盒子活跃会员
2003/12/4 14:19:57
标题:
大侠,来看一下这个贴子吧!非常需要你的帮助 浏览:1691
加入我的收藏
楼主: 我需要编一个小小的外挂程序,将字符串插入到别人编好的一个程序的Edit组件中,听其它的网友说需要用到进程间的编程
http://bbs.2ccc.com/topic.asp?topicid=40855
----------------------------------------------
-
作者:
女 haikely (阿) ★☆☆☆☆ -
盒子活跃会员
2003/12/4 15:30:36
2楼: bios大哥,能不能再麻烦你注解一下!
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/12/5 10:04:09
3楼:  public
    function mygettext(hwnd:THandle):string;//获取EDIT中的内容
  end;

var
  Form1: TForm1;
  cnt : Integer = 0;//向控件发送索引标识

  //----------------两个枚举函数------------------------------
  function EnumWindowsProc(Hwnd:THandle;lParam:LParam):boolean;Stdcall;
  function EnumChildProc(Hwnd:THandle;lParam:LParam):boolean;Stdcall;

implementation
uses Unitdata,UnitPubFun2,UnitPubFun1,UnitPubVar1;
{$R *.dfm}
function TForm1.mygettext(hwnd:THandle):string;
var
  buf:pchar;
  len:Longint;
begin
 Len:=Longint(SendMessage(hWnd,WM_GETTEXTLENGTH ,0,0));//发送消息映射取文本长度
 if len>0 then
  begin//1
   try
    getmem(buf,len);
    SendMessage(hWnd,WM_GETTEXT,Len+1,Int64(buf));//发送消息映射取文本内容
    Result:=strpas(buf);
   finally
    freemem(buf);
   end;
  end;//1
end;

function EnumWindowsProc(Hwnd:THandle;lParam:LParam):boolean;
var
 WindowCaption:array[0..254] of Char;
begin
 GetWindowText(Hwnd,WindowCaption,255); //枚举回调函数 取内存中窗口的标题
 if StrPas(WindowCaption)='登入游戏' then//如果找到你要的指定标识
 begin
   cnt := 0;
   EnumChildWindows(Hwnd,@EnumChildProc,0);//枚举他的子窗口
   Result := False;
   Exit;
 end;
 Result := True;
end;

function EnumChildProc(Hwnd:THandle;lParam:LParam):boolean;
var
 WindowCaption,WindowClass:array[0..254] of Char;
begin
 GetClassName(Hwnd,WindowClass,255);       //获取子窗口控件类名
 if Pos('EDIT',UpperCase(StrPas(WindowClass))) > 0 then //如果是EDIT控件
 begin
   Inc(cnt);
   SendMessage(Hwnd,WM_SETTEXT,0,LongInt(PChar(IntToStr(cnt))));//向控件发送索引
   if Form1.mygettext(Hwnd)='1' then //FORM中最后放下去的EDIT控件的索引 会被系统自动发送成1
    begin//2                         //倒数第二个放下去的EDIT控件的索引会被系统自动发送成2
                                     //依次类推
      SendMessage(Hwnd,WM_SETTEXT,0,LongInt(PChar(Form1.Edit2.Text)));
    end;//2
   if Form1.mygettext(Hwnd)='2' then //如果目标锁定则发送消息字符消息
    begin//2
      SendMessage(Hwnd,WM_SETTEXT,0,LongInt(PChar(Form1.Edit1.Text)));
    end;//2
 end;
 Result := True;
end;


procedure TForm1.lv1DblClick(Sender: TObject);
begin
//PublicLi:=lv1.Selected ;
Enumwindows(@EnumWindowsProc,0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Enumwindows(@EnumWindowsProc,0);
end;
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS