有一程序,例如名字叫"窗口档案",里面有两个edit文本框。
我用spy++查看 两edit分别是
001F021E '' TEdit 可见
001C0236 '' TEdit 可见那么var hw:hWnd;
begin
hw:= findwindow(nil,'商品档案');
if hw<>0 then begin
hw:=findwindowex(hw,0,PChar('TEdit'),nil);//这一行怎么利用spy++查看到的内容对"窗口档案"发信息
sendmessage(hw,wm_settext,0,longint(pchar('test')));
end;
end;
如上所示,如何对指定的edit发送,还有如何接收信息(我不知道格式)
我对消息处理不太了解,麻烦给出代码。谢谢!

解决方案 »

  1.   

    看他窗口的关系,用findwindowex一级一级的找,获得TEdit句柄后。用sendmessage就可以了。主要看你找到handle对不对。spy++会显示出两个TEdit的句柄,你可以把你找到的句柄show出来看看是否一致。
      

  2.   

    spy++显示的这两个001F021E与001C0236是什么意思?能否代替手柄来使用。001F021E '' TEdit 可见
    001C0236 '' TEdit 可见例如这一行hw:=findwindowex(hw,0,PChar('TEdit'),nil);//能否利用上面spy++得到的内容,而不是找手柄!谢谢
      

  3.   

    我菜呀,是“句柄”打错了。呵呵~
    是因为我听各位大哥说用spy++可找出里面各控件的句柄
      

  4.   

    你用Spy查看窗口档案这个程序各个窗口的父子关系?也就是说
    hw:= findwindow(nil,'商品档案');
    hw:=findwindowex(hw,0,PChar('TEdit'),nil);
    你这么使用前必须确定这个‘商品档案’窗口就是TEdit窗口的parent,如果不是,你找到的hw就不对。
    举个例子:比如这‘商品档案’和‘TEdit’两个窗口之间还有个panel,
    那么你就要
    hw:= findwindow(nil,'商品档案');
    hw:=findwindowex(hw,0,PChar('TPanel'),nil);
    hw:=findwindowex(hw,0,PChar('TEdit'),nil);
    明白了没有啊?所以让你用Spy++查看一下各个窗口的关系,
    或者把你取到的hw show出来看看和spy里面显示的句柄是否一致!
      

  5.   

    谢谢xixuemao大哥,但我是指怎么知道里面的两个edit的句柄,利如上面的例子有两个edit(假设为edit1和edit2)
    这时hw:=findwindowex(hw,0,PChar('TEdit'),nil);
    是时要取edit1的句柄是否
    hw:=findwindowex(hw,0,PChar('TEdit'),'edit1');
    而要取edit2的句柄是否
    hw:=findwindowex(hw,0,PChar('TEdit'),'edit2');但问题是我把edit1和edit2的text中的内容删除后,用上面的方法就失效了。所以我用spy++想直接查看句柄。
    但我不知查到的内容
    001F021E '' TEdit 可见
    001C0236 '' TEdit 可见
    怎么应用。就假设两个edit的你窗口为“窗口档案”
    是否001F021E与001C0236就是两个edit的句柄,如果是应该怎么应用
    hw:=findwindowex(hw,0,PChar('TEdit'),'001F021E');//好像不能这样吧,我就不懂要怎么应用
      

  6.   

    就是说我不知道spy++查到的001F021E与001C0236是否就是句柄值,这两个值好像是16进制的
    应该怎么应用..谢谢1
      

  7.   

    是句柄,但不明白你想用他做什么呢?你可以用它来测试,比如你给TEdit发送消息可以sendmessage(001F021E,WM_SETTEXT,0,LPARAM(pchar('test')));但是句柄每次都是变化的,所以你在程序里面必须去findwindow,而不能直接应用它。你有QQ没?加我:11902475,呵呵
      

  8.   

    是这样的:我想我们公司用某进销存软件,其中有一个窗口界面(假设标题为"商品档案")的功能如下:有几个文本框 分别是: 原价 价格1 价格2 价格3 价格4其中的原价是早已录入的商品价格 而价格1-4是供手工输入的不同折扣的价格我想用Delphi 写一自动计算百分率的软件,单击button1时从"商品档案"窗口取出"原价"文本框中的内容,填入我的软件的“原价”文本框(假设edit1),然后按“计算”按钮时(button2)时分别计算出各百分率,然后填入edit2-edit4中。然后单击“发送”(button3)时把edit2-edit4的内容自动填入进销存软件即(商品档案)窗口对应的价格1-价格4文本框中。
    明白了~谢谢您了~回家加您....