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)

*/



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

?

  1. 14
    Jun 2021
    08:35

    파이썬 Beautifulsoup html의 특정 주소만 가져오기

    Category컴퓨터잡담 Views2986
    Read More
  2. 01
    Dec 2015
    08:36

    555 TIMER AM TRANSMITTER CIRCUIT(AM 송신 회로)

    Category회로도전자부품 Views3691
    Read More
  3. 14
    Aug 2010
    23:31

    [autohotkey] 시스템 레지스트리 수정, 삭제

    Category컴퓨터잡담 Views8062
    Read More
  4. 26
    Jan 2015
    17:19

    Autohotkey 브라우저 제어 테스트

    CategoryAutoHotKey Views8203
    Read More
  5. 14
    Aug 2010
    23:31

    [autohotkey] 시스템 레지스트리 수정, 삭제

    Category컴퓨터잡담 Views8486
    Read More
  6. 17
    Jan 2018
    22:14

    ahk) Send an email 메일발송하기

    CategoryAutoHotKey Views9389
    Read More
  7. 07
    Jul 2018
    21:49

    Autohotkey] 키보드 후킹 테스트

    CategoryAutoHotKey Views9681
    Read More
  8. 07
    Oct 2011
    08:39

    AHK_L) SysListView321 컨트롤 내용 추출하기

    Category컴퓨터잡담 Views9893
    Read More
  9. 25
    Jan 2018
    13:07

    스프레드시트 autohotkey html gmail 스마트폰 이용하여 핑로스 즉시 알림받기

    Category[Docs]스프레드시트 Views10577
    Read More
  10. 30
    Sep 2011
    09:11

    autohotkey - 변수리스트(Variables and Expressions) 모음

    Category컴퓨터잡담 Views11830
    Read More
  11. 26
    Dec 2011
    08:58

    Ahk) ip할당 진단프로그램

    CategoryAutoHotKey Views12119
    Read More
  12. 01
    Apr 2014
    17:12

    ahk) autohotkey controlgettext 이름을 마우스커서에 졸졸 따라다니게 하기

    CategoryAutoHotKey Views12182
    Read More
  13. 17
    Dec 2011
    17:24

    부팅완료 메시지 프로그램

    CategoryAutoHotKey Views12719
    Read More
  14. 11
    Oct 2011
    17:43

    AHK & my Address of Pointer and my Offset

    Category컴퓨터잡담 Views13183
    Read More
  15. 28
    Jul 2011
    22:45

    [AHK] AutoHotkey_N, AutoHotkey.dll

    Category컴퓨터잡담 Views13562
    Read More
  16. 28
    Jul 2011
    23:38

    [AHK] COM Standard Library

    Category컴퓨터잡담 Views13588
    Read More
  17. 11
    Oct 2011
    15:45

    Ahk Standard Library Collection, 2010 Sep (+Gui) ~ Libs: 100

    Category컴퓨터잡담 Views14189
    Read More
  18. 17
    Feb 2011
    19:17

    웹페이지의 내용을 변수에 넣기

    CategoryAutoHotKey Views14492
    Read More
  19. 17
    Dec 2011
    17:41

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

    Category컴퓨터잡담 Views14604
    Read More
  20. 22
    Feb 2011
    13:00

    클릭해서 새창열리는 페이지에 클릭 또는 값설정 가능한가요?

    CategoryAutoHotKey Views14723
    Read More
Board Pagination Prev 1 2 3 4 5 Next
/ 5

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소