Skip to content
컴퓨터잡담
2011.12.17 17:41

IE 훅킹 혹은 가로채기. 강좌

조회 수 14604 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

IE 훅킹 혹은 가로채기. 강좌

/*

윈도우 내 맘대로 다루기에서 잠깐 다루었지만 보충합니다.

 

먼저 강좌에서와 같이 오토핫키를 이용합니다.

http://www.autohotkey.com/

 

오토핫키는 사용해 보면 자바스크립트와 닮았습니다.

자바 스크립트가 웹페이지를 풍부하게 한다면 오토핫기키는 윈도우를 풍성하게 합니다.

 

오토핫키를 이용하여 오토핫키와 자바스크립트를 결합시켜 보겠습니다.

*/

 

#NoEnv
#Persistent
#SingleInstance, force 
DetectHiddenWindows, On
Process, Priority, , High  
SetBatchLines, -1
SetWinDelay, 0
SetControlDelay, 0

 

;창 생성 및 활성화 감시
Gui, +LastFound
DllCall( "RegisterShellHookWindow", UInt, WinExist() ) 
MsgNum := DllCall( "RegisterWindowMessage", Str, "SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" ) 
Return

 

ShellMessage( wParam,lParam ) 
{
  Global Url

  If wParam = 6
  {
    ControlGetText, Url, Edit1, ahk_id %lParam%
    If Url Contains http
    {
      Gosub, InjectScript
      ControlFocus, Internet Explorer_Server1, ahk_id %lParam%
    }

  }

}

 

;웹페이지 인터페이스하기
GetWebrouser()
{
  Static Msg := DllCall("RegisterWindowMessage", "str", "WM_HTML_GETOBJECT")
  SendMessage Msg, 0, 0, Internet Explorer_Server1, ahk_class IEFrame
  lResult := ErrorLevel
  DllCall("oleacc\ObjectFromLresult", "ptr", lResult
      , "ptr", GUID(IID_IHTMLDocument2,"{332C4425-26CB-11D0-B483-00C04FD90119}")
      , "ptr", 0, "ptr*", pdoc)
  ComObjError(false)
  Static IID_IHTMLWindow2 := "{332C4427-26CB-11D0-B483-00C04FD90119}"
  Pwin := ComObjQuery(pdoc, IID_IHTMLWindow2, IID_IHTMLWindow2)
  ObjRelease(pdoc)
  Static VT_DISPATCH := 9, F_OWNVALUE := 1
  Return ComObject(VT_DISPATCH, Pwin, F_OWNVALUE)
}

 

GUID(ByRef GUID, sGUID)
{
  VarSetCapacity(GUID, 16, 0)
  return DllCall("ole32\CLSIDFromString", "wstr", sGUID, "ptr", &GUID) >= 0 ? &GUID : ""
}

 

/*

ie유저 사용자를 위한 것입니다.

firefox 사용자라면 이미  웹페이지를 자유자재로 다룰 수 있으니 이런 과정이 필요없겠죠.

본인은 ie만 사용하므로 이런 과정이 필요합니다.
ie유저에게도 trixie ietoy ie7pro 등이 있어 웹페이지를 직접 다룰 수 있었지만 ie9를 사용하고부턴 전혀 사용해 본적이 없어 ie9에서도 적용되는지 여부는 모르겠습니다.

 

 

 

위의 코드를 짧게나마 설명합니다.

웹페이지 인터페이스하기 혹은 구하기는 함수입니다. 그래서 따로 독립시킨다음

#include 함수파일이름 해도 되고 오토핫키 디폴도 lib 파일에 저장해 놓으면 #include 필요없이 자동으로 읽어 들입니다.

 

 

9번째 줄 return까지 자동 실행영역입니다. 바로 위줄 onmessage에서 메세지 감시를 걸었습니다.

이 명령어에 의해서 조건 성립시 위 스크립트는 계속해서 함수 ShellMessage를 실행합니다.
이중에서  wParam = 6 조건 성립시 ie 인터페이스를 구해 사용자 것으로 만든 것입니다.
더 좋은 방법은 잘 모르겠습니다. 조건  wParam = 6으로 했을 경우 본인으로선 여태까지 불편이 없었으므로 현재까지도 사용합니다.

 

위 스크립트만으로 아무런 작업도 할 수 없거나 에러메시지가 발생할것입니다.
이유는 ShellMessage 함수내에 gosub,  InjectScript 명령줄에서 InjectScript을 만들지 않았기 때문입니다.

gosub 명령어는 함수와 유사합니다.

지정한 injectScript를 실행하고 돌아와서 다음 명령줄을 계속 이행합니다.

예시에서는 ControlFocus, Internet Explorer_Server1, ahk_id %lParam% 이 되겠네요.
이 명령어는 없어도 되는 것으로 무엇을 하냐면 간혹 어떤 웹사이트들이 로딩시 포커스를 자기 맘대로 주소표시줄이나 그런 것으로 하여 본인이 불편하여 항시 웹페이지에 포커스를 두도록 한 명령어입니다.

*/

 

;자 이제  InjectScript를 만듭니다.
;명령어와 주석(설명문)을 구분하기 위해 주석에는 오코핫키 주석처리 ;를 혹은 다중줄 /*주석*/덧붙이겠습니다.

 

InjectScript:

;여기와서 ie를 사용자 것으로 만들어 버립니다.

Pwin :=  GetWebrouser()


/*

Pwin이란 무엇이란 무엇이냐 하면 자바스크립트에서 윈도우 객체라고 생각하면 됩니다.

Pwin대신에 GetWebrouser()함수내에서 pweb구하여 pweb을 리턴시킬수도 있습니다.

여기서는 pwin이므로 pwin만 설명합니다

Pwin이 자바스크립트 윈도우 객체이므로 윈도우에 객체에 속한 모든 자바스크립트가 사용 가능하며 동일합니다.

http://www.w3schools.com/js/default.asp 자바스크립트 모든 것이 이용가능합니다.

단지 window 대신 Pwin이 쓰이는 것이죠.

window.alert("안녕");

대신

Pwin.alert("안녕")하면 되겠습니다.

*/

 

Pwin.alert("안녕")

Return ;여기서 리턴을 만나 최초 gosub으로 돌아가 그 다음줄을 실행해 나간다.

 

;자 여기까지 잘 따라 오셨다면 ie가 새로 실행되거나 혹은 로딩 될때마다  안녕이라는 메세지를 볼 수 있을 것입니다.

 


/*

이제 이 스크립트를 통해 다양한 웹페이지에 특화된 userscript를 사용하고 싶다면.

global Url이 이용하면 되겠습니다.

global 이 뭐냐면 전역변수선언입니다.

전역변수는 뭐냐면 변수를 어디에서나 사용할 수 있다는 말입니다.
오토핫키는 기본적으로 선언없이도 전역입니다. 함수내에서 사용하였기에 global 선언을 하여 전역화하였습니다.

웹브라우저가 새 페이지를 로딩할때마다 그 주소를 url이라는 변수에 담아 놓았습니다.

따라서 특정 페이지가 로딩될때 자바 스크립트를 삽입하고 싶으면 다음과 같이 하면 되겠습니다.

*/

 

 

Pwin := GetWebrouser()

If url contains daum.net

  {

  Pwin.alert(" 안녕 " )

  }

if Url Contains youtube.com/watch

  {

  Pwin.alert(" 나 압구정 날라리야")

  }

return

 

/*

몇가지 예시를 더 들자면.

Pwin.document.createStyleSheet().cssText := " [id^='nad_'] {dispay:none !important;}"

css삽입입니다.

css삽입 다른 방법

MyCSSFILE := "file:///D:/포터블 프로그램/MyCSSFILE.css"

Pwin.document.createStyleSheet(MyCSSFILE)

스크립트 언어 삽입

JSCODE =

(

  alert("이런 방법도 있어");

)

Pwin.execScript(JSCODE)

*/



로그인 후 댓글쓰기가 가능합니다.

?

List of Articles
번호 분류 제목 날짜 조회 수
87 AutoHotKey #ifwinactive & #ifwinexist 윈도우창 마다 핫키의 용도를 다르게 사용하는 방법 2011.02.14 16522
86 회로도전자부품 555 TIMER AM TRANSMITTER CIRCUIT(AM 송신 회로) 2015.12.01 3691
85 AVR 555 TIMER AM TRANSMITTER CIRCUIT(AM 송신 회로) file 2014.09.20 23297
84 컴퓨터잡담 AHK & my Address of Pointer and my Offset 2011.10.11 13183
83 컴퓨터잡담 Ahk Standard Library Collection, 2010 Sep (+Gui) ~ Libs: 100 3 2011.10.11 14189
82 AutoHotKey ahk) autohotkey controlgettext 이름을 마우스커서에 졸졸 따라다니게 하기 file 2014.04.01 12181
81 AutoHotKey ahk) autohotkey 글자 자르기 방법 2013.10.30 34671
80 AutoHotKey ahk) autohotkey 엑셀(Excel)에서 행값 증가시키기 2013.10.30 37413
79 AutoHotKey AHK) AUTOKEY 웹페이지 열지않고 소스 가져오기 또는 로그인 하기 14 2012.05.12 52951
78 AutoHotKey Ahk) ip할당 진단프로그램 file 2011.12.26 12119
77 AutoHotKey ahk) Send an email 메일발송하기 2018.01.17 9388
76 AutoHotKey AHK) 보안프로그램 등으로 화면복사(Printscreen) 안될때 사용방법 1 12 file 2012.11.21 47165
75 AutoHotKey ahk) 열려진 엑셀창의 값 불러오기 1 2013.10.30 32526
74 AutoHotKey ahk) 오토핫키 콤보박스 제어하기 file 2013.10.30 38175
73 AutoHotKey Ahk) 웹페이지 감시결과에 따라 마이피플로 글 전송하기 12 file 2013.01.06 44022
72 AutoHotKey ahk_l 웹페이지 앞, 뒤페이지 제어 예제소스 및 설명첨부 2011.02.22 17535
71 AutoHotKey ahk_l 과 com 의 이해 2011.02.22 17485
70 AutoHotKey AHK_L 예제소스 1 2011.02.10 17015
69 AutoHotKey ahk_l 웹페이지 파일로 저장한 뒤 불러와 필요한 부분 추출하여 출력하기 2011.02.22 16989
68 컴퓨터잡담 AHK_L) SysListView321 컨트롤 내용 추출하기 2011.10.07 9893
Board Pagination Prev 1 2 3 4 5 Next
/ 5

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소