'오토핫키이미지리스트'에 해당되는 글 1건

  1. 2015.10.11 오토핫키+ ImageList 명령어 추가 (2)

ImageList 명령어는 서브커맨드에 따라 이미지리스트에 이미지를 추가하거나 가져오거나 설정하는 명령어입니다. ImageListSearch 에 사용하는 이미지리스트를 만들때 사용하면 유용합니다.



ImageList , sub-command, hBmpListVar, hBmpVar, [option]

 

[결과값]
ErrorLevel = 0: 명령어수행 완료
ErrorLevel = 1: 명령어수행 실패
ErrorLevel = 2: 이미지리스트 오류 (Get,Set 에서만 사용하며 필수옵션이 없어도 발생)

 

[변수]
hBmpListVar : 이미지리스트 비트맵 핸들용 변수
hBmpVar : 파트이미지 비트맵 핸들용 변수

 

[서브커맨드]
Add : 이미지리스트에 파트이미지를 추가합니다.

(출력변수 : hBmpListVar ,  입력변수 : hBmpVar)

Get : 이미지리스트에서 선택한 파트이미지를 가져옵니다.

(출력변수 : hBmpVar     ,  입력변수 : hBmpListVar)

Set : 이미지리스트의 파트이미지를 교체합니다.

(출력변수 : hBmpListVar ,  입력변수 : hBmpListVar, hBmpVar)

 

[Add 서브커맨드 옵션]
*WidthList : 가로이미지리스트 일때 사용

*SrcNotDel : 명령어 사용후 'hBmpVar' 변수의 비트맵핸들을 초기화 하지 않음
*BackgroundN : N값은 컬러명 또는 RGB 값

 (ex. *BackgroundBlack, *BackgroundWhite, *Background0xFFFFAA)

 

[Get 서브커맨드 옵션]
*ListMaxNN : 필수옵션, NN값은 이미지리스트상의 파트이미지 총개수
*SelectNN : 필수옵션, NN값은 1부터 시작하는 파트이미지 인덱스
*WidthList : 가로이미지리스트 일때 사용
*ListNotDel : 명령어 사용후'hBmpListVar' 변수의 비트맵핸들을 초기화 하지 않음

*UseZeroIndex : 이미지리스트의 시작인덱스를 1이 아닌 0을 사용


[Set 서브커맨드 옵션]
*ListMaxNN : 필수옵션, NN값은 이미지리스트상의 파트이미지 총개수
*SelectNN : 필수옵션, NN값은 1부터 시작하는 파트이미지 인덱스
*WidthList : 가로이미지리스트 일때 사용
*ListNotDel : 명령어 사용후 'hBmpListVar' 변수로 입력받은 비트맵핸들을 초기화 하지 않음

*SrcNotDel : 명령어 사용후 'hBmpVar' 변수의 비트맵핸들을 초기화 하지 않음

*UseZeroIndex : 이미지리스트의 시작인덱스를 1이 아닌 0을 사용

[주의]

 - 출력변수로 받은 HBITMAP 핸들은 사용이 끝난 후 초기화 해주세요. (ex. DllCall("DeleteObject", Ptr,hBitmap)

 - ImageListSearch 명령어에 사용할 이미지리스트를 만들때는 *WidthList 옵션을 넣지 마세요.

 


 

아래 샘플스크립트는 F1 키로 마우스 위치의 이미지를 캡춰 한후 이미지리스트에 계속 추가 할 수 있으며 F2 키로 이미지리스트를 비트맵파일로 저장하는 스크립트 입니다.

 

 

Test.ahk 파일을 다운로드한  'Ahk+ 전용 AutoHotkey.exe 파일'  위에 드래그해서 실행하세요.

ImageList명령어_테스트.zip

 

 

<테스트 스크립트중 일부>

 

CoordMode, Mouse, Screen
CoordMode, Pixel, Screen
captureWidth  := 20
captureHeight := 20

 

RectWindow:
  Gui 2: +LastFound
  Gui 2: -Caption +AlwaysOnTop
  Gui 2: Color, EEAA99
  Gui 2: Add, Text, w%captureWidth% h%captureHeight% Border vBorder hwndhwndBorder
  Gui 2: Show
  WinSet, TransColor, EEAA99 255
  hwndRectWin := WinExist()
  WinGetPos, borderx,bordery,,, ahk_id %hwndBorder%
  WinGetPos, rectwinx,rectwiny,,, ahk_id %hwndRectWin%
  gapx := borderx-rectwinx  ,  gapy := bordery-rectwiny
  Loop
  {
    MouseGetPos, capx,capy
    capx -= gapx  ,  capy -= gapy+captureHeight
    WinMove, ahk_id %hwndRectWin%,, capx, capy
    Tooltip, F1:이미지리스트추가
    sleep, 10
  }
return


;현재 영역 캡춰 후 이미지리스트에 추가
F1::
  WinGetPos, x,y,w,h, ahk_id %hwndBorder%
  ImageGet, hBitmap, x+1,y+1,w-2,h-2,, *WH
  ImageList, Add, hImageList, hBitmap   ;hBitmap 핸들은 ImageList 명령어 사용 후 초기화 됩니다.
  sleep, 300

return


;이미지리스트 파일로 저장 후 스크립트 종료
F2::
  if hImageList
  {
    SaveHBITMAPToFile(hImageList, imgListFile := "캡춰이미지리스트.bmp")
    DllCall("DeleteObject", Ptr,hImageList)
    hImageList =
    MsgBox, 캡춰한 이미지리스트를 %imgListFile%에 저장했습니다.
  }
  ExitApp
return

 

 

 

Posted by 와이로