有一软件,可执行文件,文本框和listbox里的内容被作者蔽避掉了 Ctrl+c,点击右键复制其内容,  现在我想把他的内容复制下来, 做一个程序, 把其文本框内容复制下来。因为内容很多,少的话我直接打就行了。谢谢各位,分少可以加。

解决方案 »

  1.   

    bcb,还没有成功,有没有delphi的例子
      

  2.   

    获得控件句柄,发送WM_GETTEXT消息,这和语言无关!论坛查询,我以前回答过!
      

  3.   

    delphi测试通过:
    var pos:tpoint;
        hwnd:thandle;
        p:pchar;
    begin
       GetCursorPos(pos);
       getmem(p,2000);
       hWnd:=WindowFromPoint(pos);
       GetWindowText(hwnd,p,2000);
       caption:=string(p);
      

  4.   

    var pos:tpoint;
        hwnd:thandle;
        p:pchar;
    begin
       GetCursorPos(pos);
       getmem(p,2000);
       hWnd:=WindowFromPoint(pos);
       SendMessage(hwnd,WM_GETTEXT,2000,longint(p)) ;
       caption:=string(p);
       freemem(p);
    end;
      

  5.   

    刚写了个!var
    mousepoint:tpoint;
    txthwnd:hwnd;
    str:array [0..254] of char;
    lens:integer;
    begin
    getcursorpos(mousepoint);
    txthwnd:=windowfrompoint(mousepoint);
    lens:=sendmessage(txthwnd,wm_gettextlength,0,0)+1;
    sendmessage(txthwnd,wm_gettext,lens,longint(@str));
      

  6.   

    谢谢各位。如果类是ListBox1,就没法读取了。 edit和combobox的可以。还有的我自己写了一个程序,用password属性 带***** 无法读取。 
      

  7.   

    这就是所谓做了处理!
    它在程序中拦截了你发送的WM_GETTEXT,WM_GETTEXT,EM_SETPASSWRODCHAR消息!
      

  8.   

    listbox是itemEX
    wm_gettext是不行,用LB_GETTEXTSendMessage( 
      (HWND) hWnd,      // handle to destination window 
      LB_GETTEXT,       // message to send
      (WPARAM) wParam,  // item index
      (LPARAM) lParam   // buffer for items (LPTSTR)
    );
      

  9.   

    普通的password edit用我上面的代码可以得到的,不知道你是如何测试的?
      

  10.   

    line:=n-1;//第N行
    SendMessage(txthwnd,EM_GETLINE,line,longint(@str));
    可获得第N行文本,对Memo有效果!
      

  11.   

    SendMessage(txthwnd,EM_GETLINECOUNT,0,0)-1
    //总行数