两个不同的程序,一个程序如何获取另一个程序中选中的文本?

解决方案 »

  1.   

    能否讲具体点或发个邮件?[email protected]。另用剪贴板不行的,因为如果可以把它复制的话也不用编写一个程序来取出它的文字了。
      

  2.   

    我觉得需要做一个全局的API钩子,类似鼠标取词的做法,网上这方面的资料很多,一时也讲不清楚.
      

  3.   

    这两个程序你都能改吗。如果能的话
    就一个程序放一个ServerSocket,一个放ClientSocket,通过socket两个程序建立联系。
    然后将你的文本通过socket放送即可
      

  4.   

    先GetActiveWindow()取得当前活动窗口的句柄,然后找这个窗口中的当前编辑控件,就是当前得到焦点的控件,可用GetFocus 来取,最后用SelStart 和 SelLength来取当前选中的文本。
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
        dd,hh: hwnd;
        i: integer;
        mem: pchar;
    begin
        dd := FindWindow(nil,'SendMsg');
        if dd>0 then
        begin
            hh := FindwindowEx(dd,0,pchar('TRichEdit'),nil);
            if hh>0 then
            begin
                i := SendMessage(hh,WM_GETTEXTLENGTH,0,0);
                getmem(mem,i+1);
                SendMessage(hh,WM_GETTEXT,i+1,LongInt(mem));
                showmessage(strpas(mem));
            end
            else
                showmessage('no such window');
        end;
        getmem(mem,0);
    end;
      

  6.   

    上面的方法也不错,但总要指定名称和类别,不大通用,能否用HOOK的方法,运行本程序不出现,按下某键后把当前选中的文本复制下来.该怎样做,请各位大力相助.
      

  7.   

    这个样的程序用vc作特别easy,这是钩子技术。假如有银子我可以给你做,而且银子不多
      

  8.   

    如果你的程序不获取Focus,用GetFocus来获取窗口
    如果你的程序要获取Focus,响应WM_SETFOCUS来获取窗口
    如果你的程序不是要取当前Focus窗口的文本,用SetCapture捕获鼠标,用WindowFromPoint获取窗口
    当然用Hook也可以,但是好像大材小用了
      

  9.   

    我用的是如下方法:
      ActiveControl:=WindowFromPoint(Mouse.CursorPos);
      SendMessage(ActiveControl,WM_COPY,0,0);
      TextArea.Lines.Clear;
      SendMessage(TextArea.Handle,WM_PASTE,0,0)
    它对网页中文本不起作用,是不是无法取得它的窗口还是发送的WM_COPY无效?
      

  10.   

    CTRL+C 这个消息如何发?