Q&A

  • 다른프로그램(윈도우)에 Editbox에서 문자열 가져오기?
안녕하세요.

다른프로그램의 윈도우에 Editbox에서 문자열을 가져오고 보내고 할려고 하는데요.

Editbox까지는 FindWindowEx로 찾았는데

문자열값을 가져오는걸 못하겠네요.

GetWindowText, SetWindowText, GetWindowLong, SetWindowLong 뭘써야 되는지도 모르겠구요

구체적인 사용법을 알고 싶습니다.

그럼 델파이 고수님들 잘 부탁드립니다...<꾸벅>

1  COMMENTS
  • Profile
    김영대 1999.11.20 06:06
    김현일 wrote:

    > 안녕하세요.

    > 다른프로그램의 윈도우에 Editbox에서 문자열을 가져오고 보내고 할려고 하는데요.

    > Editbox까지는 FindWindowEx로 찾았는데

    > 문자열값을 가져오는걸 못하겠네요.

    > GetWindowText, SetWindowText, GetWindowLong, SetWindowLong 뭘써야 되는지도 모르겠구요

    > 구체적인 사용법을 알고 싶습니다.

    > 그럼 델파이 고수님들 잘 부탁드립니다...<꾸벅>



    비슷한 내용이 있어서 올려드립니다



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls;



    type

    TForm1 = class(TForm)

    Memo1: TMemo;

    Button1: TButton;

    procedure FormActivate(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    function ReadFromNotepad: String;

    var

    h: hwnd;

    Text: String;

    NumCaracters: Integer;

    begin

    h := FindWindow('notepad',nil);

    h := FindWindowex(h,0,'edit',nil);

    if h <> 0 then

    begin

    NumCaracters := SendMessage(h, WM_GETTEXTLENGTH, 0, 0);

    SetLength(Text, NumCaracters);

    SendMessage(h, WM_GETTEXT, NumCaracters+1, Integer(Text));

    Result := Text;

    end

    else

    Result := 'ERROR!';

    end;



    procedure TForm1.FormActivate(Sender: TObject);

    begin

    WinExec('notepad', SW_SHOWNORMAL);

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    Memo1.Text := ReadFromNotepad;

    end;



    end.