我想在一个电脑上同时运行两个程序,一个在前台,一个后台, 后台程序截获在前台程序的键盘信息,简单说就是前台和后台都有一个Edit1,在前台Edit1输入的信息也要原封不动的在后台的Edit1里
显示。这一步已经实现。接下来,在后台Edit1要判断如果是回车键的话就执行一个procedure,把Edit1里的值传给这procedure.就这一步找不到好的方法,请高人指点一下。
另外,我还想对键盘输入位置判断一下,如果不是在那个前台里输入的信息就不管他。这个前台程序不是delphi写的,而且是别人写的。

解决方案 »

  1.   

    GetCaretPos(p)  //光标位置
    WindowFromPos(p)//光标所在窗口
      

  2.   

    在Edit的OnChange事件中写吗。
    var key:char; str:string;
    begin
      str:=Edit1.text;
      key:=str[length(str)];
      if (key=#13) or(key=#10) then
         这里调用你的过程
    end;
      

  3.   

    可以这样 使用自定义消息如果后台程序截获键盘消息为 回车键 那么
    PostMessage(...)
    然后你在实现这个自定义消息的函数中去调用一个procedure
      

  4.   

    Hook键盘,然后判断当按下回车键,当前的焦点窗口是否前台的Edit1
      

  5.   

    截获键盘消息给本窗口,看看 获查找相关信息,在csdn搜索,很多
      

  6.   

    //在后台Edit1要判断如果是回车键的话就执行一个procedure,把Edit1里的值传给这procedure.就这一步找不到好的方法,请高人指点一下。是截获的WM-KEYUP么?你可以看看消息参数WPARAM的值是不是13。如果是,那就是回车键。//我还想对键盘输入位置判断一下,如果不是在那个前台里输入的信息就不管他。这个前台程序不是delphi写的,而且是别人写的。通过FINDWINDOW(窗体名,0)找到窗体句柄,然后用FINDWINDOWEX找到输入框的句柄。OK了
      

  7.   

    得到前台edit1的句柄后,用钩子截获到前台edit1按键消息,如果是#13那肯定不会是输入法的回车吧!
      

  8.   

    我想,如果输入的是中文,那么接收‘回车’消息的应该是 输入法 而不是你EDIT,EDIT接受到的应该只是写一个汉字的消息。