实现这种功能,也就是我在Edit1.text上输入一个字符,就自动传递这个字符写到记事本上,输入第二个,依次传递.  我认为sendmessage应该可以实现,但无从下手.  当然如果在Edit1上删除一个字符 或者 粘贴N个字符,那么也将传递.一个动作 将传递一次.?  是否会太难实现?

解决方案 »

  1.   

    procedure TForm1.Edit1Change(Sender: TObject);
    begin
    with edit1 do
    begin
    //写文本文件(你应该会的吧)
    end;
    end;
      

  2.   

    方法1:使用WM_CopyData消息实现进程间数据共享;   
        
    方法2:使用内存映像文件实现数据共享;   
        
    方法3:使用全局原子来实现数据共享
      

  3.   

    参考如下代码,不能出来输入法
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    var
      vHandle: Integer;
    begin
      vHandle := FindWindow('Notepad', nil);
      if vHandle = 0 then Exit;
      vHandle := FindWindowEx(vHandle, 0, 'Edit', nil);
      if vHandle = 0 then Exit;
      SendMessage(vHandle, WM_CHAR, Ord(Key), 0);
    end;
      

  4.   

    Hoho 感谢ZSWANG,但是编译出了错..我是新手,不懂的去修正.能否将成功编译好的代码贴出来呢? 这个帖子马上结.
      

  5.   

    汗,这个代码就是调试过的1、在窗体上选中Edit1
    2、回车显示属性编辑器(Object Inspector)
    3、切换至事件页(Events)
    4、双击OnKeyPress项生成代码
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    beginend;
    5、填入上面给出的代码
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    var
      vHandle: Integer;
    begin
      vHandle := FindWindow('Notepad', nil);
      if vHandle = 0 then Exit;
      vHandle := FindWindowEx(vHandle, 0, 'Edit', nil);
      if vHandle = 0 then Exit;
      SendMessage(vHandle, WM_CHAR, Ord(Key), 0);
    end;
    6、确认激活记事本程序
    7、调试运行,在调试程序的Edit1中输入字母观察记事本内容是否发生变化-_-!!!!!!以后记住
    procedure TForm1.Button1Click(Sender: TObject);
    就是Button1.OnClick事件的代码procedure TForm1.Edit1Change(Sender: TObject);
    就是Edit1.OnChange事件的代码这是Delphi自动生成事件代码的规律,不再说明....