Q&A

  • 특정한 이름의 창을 찾아서 글자를 입력하기
특정한 이름의 창을 찾아서
거기에 글자를 입력하는 소스좀 부탁드립니다.
그 특정한 창이 비활성화된 상태에도 글자 입력이 되어야합니다.
3  COMMENTS
  • Profile
    홍성락 2002.07.25 23:46
    hsr/////////////////////////////////////////////////////
    특정한 이름의 창이란 어떠한건지요....
    아래것을 참조해보세요

    1. 같은 어플 내의 창이라면 2가지예로
    ---------------------------------
    procedure TForm1.Button3Click(Sender: TObject);
    var
        Form : TForm;
        i, j : integer;
    begin
        for i := 0 to Application.ComponentCount-1 do begin
           if  (Application.Components[i] is TForm) then begin
             Form := TForm(Application.Components[i]);
             if Form.Caption = 'Form2' then begin//특정폼의 갭셩으로 알아낸후
                for j := 0 to Form.ComponentCount-1 do begin
                    if (Form.Components[j].Name = Edit1.Name) then begin //특정폼의 특정 컴포
                        TEdit(Form.Components[j]).Text := '성공';
                    end;
                end;
             end;
           end;
        end;
    end;
    ---------------------------------------
    procedure TForm1.Button4Click(Sender: TObject);
    begin
        if assigned(Form2) then
           Form2.Edit1.Text := '성공';
    end;

    //////////////////////////////////////
    2.다른 프로그램창이라면 2가지예로
    procedure TForm1.Button5Click(Sender: TObject);
    var
        hForm, EHwnd  :HWND;
    begin
        hForm := FindWindow(nil, 'TargetForm');
        if hForm <> 0 then begin
           EHwnd := FindWindowEx(hForm, 0, PChar('TEdit'), '');
           if EHwnd <> 0 then
              //SendMessage(EHwnd, WM_SETTEXT, 0, LParam(PChar('성공')));
              PostMessage(EHwnd, WM_SETTEXT, 0, LParam(PChar('성공')));
        end;
    end;
    ---------------------------------------------------
    Handle을 구해 GlobalFindAtom등의 함수로 TWinControl로 받아
    TForm형으로 바꿔하는방법등이 있습니다
    아래는 자료실이던가 하여간 참조한 내용입니다.
    //////////////////////
    function TForm1.FindControl2(Handle: HWnd): TWinControl;
    var
    AtomText: array[0..31] of Char;
    WindowAtom: TAtom;
    begin
    Result := nil;
    if Handle <> 0 then
      begin
      //GlobalFindAtom을 이용해서 대상 윈도의 아톰을 구해온다.
        WindowAtom := GlobalFindAtom( StrFmt( AtomText, 'Delphi%.8X', [GetCurrentProcessID] ) );
      //GetProp를 이용해서 아톰에서 윈도우포인터를 구해온다...
      //이것은 TWinControl이 생성될때 SetProp를 이용해서 써넣은것을 읽어오는것이다.
        Result := TWinControl( Pointer( GetProp( Handle, MakeIntAtom( WindowAtom ) ) ) );
      end;
    end;
    /////////////////////////
  • Profile
    김현우 2002.07.26 02:05
    procedure TForm1.Button1Click(Sender: TObject);
    var
        hForm, EHwnd  :HWND;
    begin
        hForm := FindWindow(nil, '제목 없음 - 메모장');
        if hForm <> 0 then
        //SendMessage(EHwnd, WM_SETTEXT, 0, LParam(PChar('성공')));
        PostMessage(EHwnd, WM_SETTEXT, 0, LParam(PChar('성공')));
    end;
    end.

    여기까지 수정했는데요 제가 원하는건 '제목 없음 - 메모장'
    이라는 창이 있으면 '12345가나다' 이라는 글자가 메모장에
    써지게 하는건데요 어디를 어떻게 고쳐야 할지 도와주세요.
    메모장이 최소화된 상태에서도 '12345가나다'가 입력되야 합니다.
  • Profile
    최용일 2002.07.26 03:40
    안녕하세요. 최용일입니다.

    아래와 같이 해보세요...

    procedure TForm1.MemoAddStr(Index: Integer; Value: string);
    var
      MemoWnd, EditWnd: THandle;
      SelStart, LineLen: Integer;
      Line: string;
    begin
      MemoWnd := FindWindow('Notepad', '제목 없음 - 메모장');
      if MemoWnd <> 0 then
      begin
        EditWnd := FindWindowEx(MemoWnd, 0, 'Edit', '');
        if EditWnd <> 0 then
        begin
          if Index >= 0 then
          begin
            SelStart := SendMessage(EditWnd, EM_LINEINDEX, Index, 0);
            if SelStart >= 0 then
              Line := Value + #13#10
            else
            begin
              SelStart := SendMessage(EditWnd, EM_LINEINDEX, Index - 1, 0);
              if SelStart < 0 then Exit;
              LineLen := SendMessage(EditWnd, EM_LINELENGTH, SelStart, 0);
              if LineLen = 0 then Exit;
              Inc(SelStart, LineLen);
              Line := #13#10 + Value;
            end;

            SendMessage(EditWnd, EM_SETSEL, SelStart, SelStart);
            SendMessage(EditWnd, EM_REPLACESEL, 0, Longint(PChar(Line)));
          end;
          UpdateWindow(EditWnd);
        end;
      end;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
        MemoAddStr(0, '성공'); // 0 = 줄수
    end;

    ^^ 항상 즐코하세요...

    • 짱아
    • 2002.07.26 05:45
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 전형식
      2002.07.26 14:23
      런타임시에 SQL구분을 넣어주는것은 그냥 Text문장입니다. Parameter값을 넣는것은 그값으로 텍스트값을 ...
    • 강동순
      2002.07.26 19:02
      안녕하세요 수고 많습니다. 윗분의 답변도 맞습니다. 저는 항상 이렇게 사용합니다. (정답이라...
    • 김명원
    • 2002.07.26 05:42
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 김수경
      2002.07.26 07:20
      Form.Canvas에 그려보세요 Canvas.MoveTo( 10, 20 ); Canvas.LineTo( 300,100 ); 이런식으로요.....
    • 최용일
      2002.07.26 06:17
      안녕하세요. 최용일입니다. 폼은 폼에다가 그린걸 저장하는 기능이 없습니다. 때문에 이걸 어딘가에 저...
    • 김명원
      2002.07.26 06:46
      제가 지금 하고 있는 코딩의 내용을 간단히 설명 드리면 폼위에 메모를 동적으로 생성하고 계보를 그리려...
    • 최용일
      2002.07.26 06:55
      안녕하세요. 최용일입니다. TScrollBox한번 써보세요. 폼에 이것놓구 이미지든 메모든 모든걸 다 여기안...
    • 이동근
    • 2002.07.26 03:48
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 까마귀
    • 2002.07.26 03:16
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.26 06:32
      안녕하세요. 최용일입니다. 항상 두건을 입력하면 에러가 난다구 했으니까 첫번째건은 그냥 입력하시고,...
    • 까마귀
      2002.07.26 07:37
      안녕하세요. 까마귀입니다. 첫번째 건이나 두번째 건이나 같은 루틴을 도는 거거든요. 이건 뭐 당연한 ...
    • 수서니
    • 2002.07.26 03:14
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 전형식
      2002.07.26 14:31
      거참... 님께서 의도하는것이 주소 사이에 있는 공백에 '$를 붙이고 시퍼 하시는것같은데.. 맞나요? 만일...
    • KDDG_ZZOM
      2002.07.26 03:41
      이렇게 하니깐 되는것같은데... sAddr2[iIdx1] := ' $'; 이부분에서 오류나오지 않나요? sAddr2[iIdx1] :...
    • KDDG_ZZOM
      2002.07.26 03:24
        insert(inttostr(iIdx1)+'$', sAddr2, iIdx1+1)) 요기에서   ildx1 +1))문에서 )...
    • 수서니
      2002.07.26 03:32
      그건 아니네요...   insert(inttostr(iIdx1)+'$', sAddr2, iIdx1+1); 이렇게 하나 지워도 ...
    • 최용일
      2002.07.26 05:49
      안녕하세요. 최용일입니다. 혹시 with문같은거 사용하시지 않으셨나요? with문은 scope우선 순위가...
    • 수서니
      2002.07.26 19:07
      그렇군요... 이제 잘 됩니당...
    • 김기연
    • 2002.07.26 02:57
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 성더기
      2002.07.26 22:20
      트랜젝션 시작임다 if not DM.DB.inTransection then DM.DB.StartTranSaction; 일케 해보시져..^^ 롤...
    • 2002.07.26 03:13
      첫번째 가능성, 코딩으로 작성한 쿼리를 직접 작성하여 SQL 실행가능한 툴(DB Explorer나, Oracle 자체 툴)...
    • KDDG_ZZOM
      2002.07.26 03:09
      UPDATE, DELETE문은 조건에 없어도 sqlcode는 0으로 리턴되거든요... sqlplus나 다른 툴(토드같은거)에서 ...
    • 윤도상
    • 2002.07.26 02:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.07.26 03:00
      폼에 보면, Constraints 라는 속성이 있는데, 여기에 있는 네 가지 값들을 고정할 폭과 높이로 설정해...
    • 윤영욱
    • 2002.07.26 01:59
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 2002.07.26 01:59
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.26 06:28
    • 2002.07.26 10:39
    • 최용일
      2002.07.26 22:31
    • 2002.07.27 01:51
    • 최용일
      2002.07.27 18:50
    • 2002.07.27 20:09
    • 나옹이
    • 2002.07.26 01:47
    • 8 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.26 06:37
    • 나옹이
      2002.07.26 19:40
    • 최용일
      2002.07.26 20:33
    • 나옹이
      2002.07.26 20:35
    • 최용일
      2002.07.26 20:38
    • 나옹이
      2002.07.26 20:45
    • 최용일
      2002.07.26 22:39
    • • • •
    • 이영동
    • 2002.07.26 00:58
    • 0 COMMENTS
    • /
    • 0 LIKES
    • julien
    • 2002.07.26 00:56
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최수림
    • 2002.07.25 22:51
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.26 01:15
      안녕하세요. 최용일입니다. 델파이의 TIniFile을 이용하세요... ReadSections으로 경기도, 서울시, ....
    • 최수림
      2002.07.26 02:47
      감사합니다...!! 간단하게 테스트로 하니... =========================================================...
    • 최용일
      2002.07.26 05:41
      안녕하세요. 최용일입니다. 쩝~ 책보시구 트리뷰에 대한 부분을 잘 공부하세요... 동넣는건 쫌만 분석하...
    • 최수림
      2002.07.26 09:25
      넵 명심하겠습니다..!! ^^ 감사합니다..!!^^
    • 김현우
    • 2002.07.25 22:10
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.07.25 23:46
      hsr///////////////////////////////////////////////////// 특정한 이름의 창이란 어떠한건지요.... 아...
    • 김현우
      2002.07.26 02:05
      procedure TForm1.Button1Click(Sender: TObject); var     hForm, EHwnd &nbs...
    • 최용일
      2002.07.26 03:40
      안녕하세요. 최용일입니다. 아래와 같이 해보세요... procedure TForm1.MemoAddStr(Index: Integer; ...
    • 버섯
    • 2002.07.25 20:47
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 홍성철
    • 2002.07.25 20:35
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 오정민
      2002.07.25 21:02
      ms-sql의 경우 다른 데이터베이스를 조인 하기 위해서는 select A.*,B.* form DB1.테이블명 A INNER JOIN ...
    • KDDG_ZZOM
      2002.07.25 20:41
      테이블 스키마를 정확히 알아야 조인을 할수있을것같습니다... 즐프하세요...
    • 강미경
    • 2002.07.25 20:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 버섯
      2002.07.25 20:54
      대개 텍스트 파일을 데이터베이스에 옮기기 위해서는 선행작업이 필요합니다.. 원본 소스의 데이터를 ...
    • 델초보
    • 2002.07.25 19:40
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김길현
    • 2002.07.25 18:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.25 20:25
      안녕하세요. 최용일입니다. 하실려는 목적이 Ctrl-C누르는거 감시하는게 아니라 클립보드에 데이터가 들...