천객만래 [千客萬來] (It has an interminable succession of visitors)
[Delphi] TWebbrowser 의 찾는 문자열에 형광팬 효과 주기   델파이 
2009/11/04 17:40
http://blog.naver.com/yagyu82/92553070
uses 절에는 MsHTML 을 추가합니다. 그리고 함수는 다음과 같습니다.

var
  tr: IHTMLTxtRange;
begin
  tr := ((WebBrowser.Document as IHTMLDocument2).body 
as IHTMLBodyElement).createTextRange;

while tr.findText('찾는 문자열', 1, 0) do
  begin
    tr.pasteHTML('<span style="background-color: Lime; font-weight: bolder; font-size: 30">' 
+ tr.htmlText + '</span>');

    tr.scrollIntoView(True);
  end;
end;

즉 tr 에 TWebbrowser 내부의 로딩된 도큐먼트를 IHTMLDocument 2로 반환해서 해당 html 의 body 테그에 해당하는 부분, 즉, 본문 내용을 저장합니다.

이후 while 문으로 tr 의 findText 함수로 문자열을 검색합니다.

tr 의 htmlText 함수로 해당 문자열을 알수 있으며 pasteHTML 로 앞 뒤에 형광팬 효과를 위한 태그를 추가합니다.

tr.scrollIntoView 는 해당 위치로 자동 스크롤 하는 명령입니다.

즉, 형광효과란, 해당 문자열을 찾아서 문서에 임의의 테그를 추가하여 문서를 변화시키는 방법입니다.

당연히 해당 테그를 수정하면 사이즈, 배경색, 기울임 효과등도 추가할 수 있습니다.

다시 원 문서로 돌리고 싶으시다면 Webbrowser.ReFlesh() 해주세요

당연히 원래 문서를 재 로딩하고, 효과는 취소됩니다.

이 코드를 이용하면 익스플로러 툴바 중 알툴바의 형광팬 효과와 똑같이 구현할 수 있습니다


Posted by SB패밀리
[Delphi] IdHTTP로 세션아이디를 포함하여 요청하기 (SessionID)

출처: 출처 : http://bloodguy.tistory.com
 
세션ID는 재주껏 가져오자.
쿠키에 저장되어 있으니.

TWebBrowser에서 세션ID 가져오기 : http://bloodguy.tistory.com/entry/Delphi-TWebBrowser에서-세션아이디SessionID-가져오기



// URL에서 도메인명만 따냄
function GetHostNameFromURL(URL: String): String;
var PosSlash: Integer;
begin
  Result:=Trim(URL);

  Result:=MidStr(Result, Pos('://', Result)+3, Length(Result));
  PosSlash:=Pos('/', Result);
  if PosSlash>0 then Result:=MidStr(Result, 1, PosSlash-1);
end;

// 세션ID를 포함하여 GET 요청
function GetWithSessionID(URL, SessID: String): String;
var
  HTTP: TIdHTTP;
  Cookie: TIdCookieManager;
  HostName: String;
begin
  Result:='';

  HTTP:=TIdHTTP.Create(nil);
  Cookie:=TIdCookieManager.Create(nil);
  try
    HTTP.CookieManager:=Cookie;
    Cookie.AddCookie('PHPSESSID='+SessID, GetHostNameFromURL(URL));
    try
      Result:=HTTP.Get(URL);
    except on E:Exception do
      OutputDebugString(PWideChar(E.Message));
    end;
  finally
    FreeAndNil(Cookie);
    FreeAndNil(HTTP);
  end;
end;



Posted by SB패밀리