Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[9757] Re:Re:Re:Re:[질문]유영인님 한번 더 부탁합니다.
이동안 [] 1127 읽음    2004-07-18 11:01
정말 성실히 답변에 주셔서 감사합니다.
너무나 큰 도움이 되었습니다.
그런데 제가 정확히 알려고 하는것은
id의 입력버턴에 마우스(SetCursorPos(500,600))로 위치하여 edit1.text값을 id에 대입하는것입니다.
그런데 그 id값(vaDocument.Forms.Item(itCount).Item(itItemCount).Name)이 login으로 변수가 정해진것은 아닙니다.
또 그 입력버턴이 1개 2개 정해진것이 아닙니다.
만일 입력버턴에 테스트의 값을 대입시키는 방법만 알고 싶은것입니다.
그리고 입력버턴이 정해진것이 아니기 때문에 위치(x,y)를 화일처리 할려고 합니다.
너무나 제가 저의 노력은 안하고 제 입장만 말하는것 같아 죄송합니다. 그런데 이쪽은 전혀 가닥이 잡히지 안습니다.
또 웹브라우저에 대하여 노력하겠습니다.
그리고 저는 델6를 사용하고 있습니다.
갑사합니다.
////////////////////////////////////////////////////////////////////////////////////////////////////

유영인  Cuperido 님이 쓰신 글 :
: 3번 방법을 이용하여 한 방법이 보다 정확해서 그렇게 예제를 꾸미다가
: 보통은 이렇게 하고 Submit 이벤트를 호출하면 되는데,
: Yahoo는 조금 특별해서 자동 로그인 검사까지 하는군요.
: (마우스로 클릭을 하였을때 특정 변수를 올려서 로그인 폼을 직접 찍었는지 검사합니다)
:
: 그래서, 아이디와 패스워드는 소스 파일을 이용해서 갈아치우는 방법
: 로그인 버튼은 직접 눌러주는 방법으로 예제를 만들었습니다.
: (전체 소스와 실행을 해보시려면 첨부파일을 참조하세요)
:
: 계속 연구해서 Submit 을 호출하는 방법으로 깔끔히 처리해 보시는 것도... :)
:
:
: cuperido
:
:
: unit Unit1;
:
: interface
:
: uses
:   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
:   StdCtrls, ExtCtrls, OleCtrls, SHDocVw;
:
: type
:   TForm1 = class(TForm)
:     Panel1: TPanel;
:     Edit1: TEdit;
:     Edit2: TEdit;
:     Button1: TButton;
:     WebBrowser1: TWebBrowser;
:     procedure Button1Click(Sender: TObject);
:     procedure WebBrowser1DocumentComplete(Sender: TObject;
:       const pDisp: IDispatch; var URL: OleVariant);
:   private
:     { Private declarations }
:   public
:     { Public declarations }
:   end;
:
: var
:   Form1: TForm1;
:
: implementation
:
: {$R *.DFM}
:
: procedure TForm1.Button1Click(Sender: TObject);
: begin
:
:  WebBrowser1.Navigate('http://kr.yahoo.com/');
:
: end;
:
: procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
: var
:  stSource, stURL : string;
:  vaDocument : OleVariant;
:  itCount, itItemCount : Integer;
:  blHaveToLogin : boolean;
: begin
:
:  // Home에서만 처리하도록 함
:  stURL := URL;
:  if stURL <> 'http://kr.yahoo.com/' then exit;
:
:  if VarIsEmpty(WebBrowser1.Document) or VarIsNull(WebBrowser1.Document) then exit;
:  vaDocument := WebBrowser1.Document;
:
:  blHaveToLogin := false;
:
:  for itCount := 0 to vaDocument.Forms.Length - 1 do
:  begin
:    for itItemCount := 0 to vaDocument.Forms.Item(itCount).Length - 1 do
:    begin
:      if vaDocument.Forms.Item(itCount).Item(itItemCount).Name = 'login' then
:      begin
:        vaDocument.Forms.Item(itCount).Item(itItemCount).Value := Edit1.Text;
:        blHaveToLogin := true;
:      end;
:
:      if vaDocument.Forms.Item(itCount).Item(itItemCount).Name = 'passwd' then
:      begin
:        vaDocument.Forms.Item(itCount).Item(itItemCount).Value := Edit2.Text;
:        blHaveToLogin := true;
:      end;
:    end;
:  end;
:
:  if blHaveToLogin then
:  begin
:    SetCursorPos(Form1.Left + 670, Form1.Top + 230);
:    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
:    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
:  end;
:
: end;
:
: end.
:
:
: 이동안 님이 쓰신 글 :
: : 답변 감사합니다.
: : 그럼 제가 올린소스는 왜 안된느지 또는 어떤 방법으로 해야 되는지 좀 부탁합니다.
: : 마우스로까지는 id와 passsword에 포커스를 이동하는것까지는 하였습니다,
: : 또 마우스 다운 업 또는 리턴까지도 가능합니다.
: : 그런데 클릭보드(Edit1.Text)에 들어있는 값을 id포커스에 자동으로 보내고 하는 작업은 아직 헤메고 있습니다.
: : 또 밑에 소스를 보시고 작성하는 순서가 올바른지 아니면 방법을 좀 부탁합니다.
: : 하여튼 감사합니다.
: :
: : //////////////////////////////////
: :
: : 유영인  Cuperido 님이 쓰신 글 :
: : : 자동 로그인을 구현하기 위해서는 몇가지 정도의 방법이 있습니다.
: : :
: : : 1. 시뮬레이션
: : : 이동안님께서 하신 방법처럼 하시는 방법인데, 이 방법은 다른 사람들에게 배포시에는
: : : 상당한 여러움이 발생할 수 있습니다. 객체의 위치가 OS마다 IE 버젼, IE를 크기를
: : : 어디에 맞추었는지에 따라 다르기 때문 인데요, 물론 자신만 사용할 것이면 상관이
: : : 없겠지만, 그렇지 않은 경우에는 당연히 엉뚱한 곳을 찍는 문제가 발견됩니다.
: : : 하지만 매우 쉽게 구현할 수 있겠지요.
: : :
: : : 2. 쿠키 생성
: : : IE를 이용하지 않는 객체라면, 쿠키값을 만들어줌으로써 자동 로그인을 구현할 수 있습니다.
: : : 당연히, IE에서만 지원되는 것은 처리되지 않지만, 자동 게시물 쓰기 라든지의 프로그램등에서
: : : 볼 수 있는 기능들처럼, IE 기능이 필요한 없는 곳에서는 사용이 편리하고 꽤 정확합니다.
: : :
: : : 3. IE 객체 생성
: : : WebBrowser 컴포넌트로 생성된 IE에서 이벤트를 이용함으로 보다 정확하게 접근할 수 있겠습니다.
: : : 결과적으로는 아래의 COM 방식과 동일하겠지만, 프로그래머 입장으로서는 이미 맵핑되어 있는
: : : 이벤트를 만질 수 있어 보다 조금 정확하게 구현할 수 있습니다. 이러한 방법으로는 홈페이지가
: : : 모드 로드되었을때를 기준으로 해서 소스를 바꿔치기 해버리는 방법으로 구현합니다.
: : :
: : : 4. IE COM 연결
: : : COM 객체로 연결하여 인터페이스를 생성하고 원하는 객체를 바꾸는 방법입니다. 이 방법의 장점은
: : : 굳이 내포시키지 않더라도, 사용자가 따로 띄운 IE에서도 동작을 할 수 있게끔 할 수 있다는
: : : 것이고요. 자동 로그인 프로그램들이 이러한 방식을 사용하고 있습니다. 물론, 이 방법이 가장
: : : 까다롭고, 로그인 정도면 무난하겠지만, 더 깊은 부분의 경우에는 책 한권을 봐야할 정도의 많은
: : : 레퍼런스가 필요합니다.
: : :
: : :
: : : 1번 방법을 답변해 드리려고 하니, 제 PC에 맞춰서 설명을 드리자면 실행을 하실때 실행이 안되는
: : : 경우가 발생할것 같아서, 여러 방법을 다시 말씀드렸습니다. 원하시는 스펙에 따른 방법을 선택해
: : : 주시면 그 해당하는 방법을 답변해 드리겠습니다. :)
: : :
: : :
: : : cuperido
: : :
: : :
: : :
: : : 이동안 님이 쓰신 글 :
: : : : 안녕하세요
: : : : 좀처럼 처음 해보는 일입니다. 도움좀 부탁합니다.
: : : : //////////////////////////////////////////////////////////////////
: : : :      //
: : : :      IE := CreateOLEObject('InternetExplorer.Application');
: : : :      IE.Visible     := True;
: : : :      IE.ToolBar     := False;
: : : :      IE.Resizable   := False;
: : : :      //.TheaterMode := True ;
: : : :      IE.Left        := 0    ;
: : : :      IE.Top         := 0    ;
: : : :      IE.Width       := 800  ;
: : : :      IE.Height      := 700  ;
: : : :      IE.Navigate(URL);
: : : :      //
: : : :      Setcursorpos(400,130);        // 커서를 x,y 좌표이용하여 id에 위치 시킵니다.
: : : :      Edit1.text := 'winsoft';      // id
: : : :      Edit1.setfocus;
: : : :      Edit1.copyToClipboard;
: : : :      //
: : : :      Edit2.text := 'winsoft';      // password
: : : :      Edit2.setfocus;
: : : :      Edit3.copyToClipboard;
: : : :
: : : : 위에 테스트문자값을 야후의 id와 password에 입력후 자동으로  Login를 클릭할려고 합니다.
: : : : 그런데 그 방법좀 부탁합니다.
: : : : 감사합니다.
: : : : 
: : : :

+ -

관련 글 리스트
9750 [질문]야후 싸이트에서 Edit1,Edit2값을 id,password를 보내기 입니다.......부탁합니다. 이동안 1163 2004/07/17
9752     Re:[질문]야후 싸이트에서 Edit1,Edit2값을 id,password를 보내기 입니다.......부탁합니다. 유영인 Cuperido 1392 2004/07/17
9753         Re:Re:[질문]유영인님 한번 더 부탁합니다. 이동안 1087 2004/07/18
9755             Re:Re:Re:[질문]유영인님 한번 더 부탁합니다. 유영인 Cuperido 1297 2004/07/18
9757                 Re:Re:Re:Re:[질문]유영인님 한번 더 부탁합니다. 이동안 1127 2004/07/18
9760                     Re:Re:Re:Re:Re:[질문]유영인님 한번 더 부탁합니다. 유영인 Cuperido 1475 2004/07/18
9764                         Re:Re:Re:Re:Re:Re:[질문]유영인님 한번 더 부탁합니다. 이동안 1294 2004/07/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.