일단 gdip 쓰면서 간단히 주의할 점들 몇개 쓰겠습니다
1. 화면보호기는 gdip 사용시 어떤 문제도 일으키지 않지만 전원옵션을 통해서 모니터 끄기를 한 경우스크린에 쏘는 그래픽 리소스가 없어져서 gdip 작동안됩니다
다만 물리적으로 모니터를 끄는 것은 문제가 없습니다
2. 이미지 사용하신 후 disposeimage 꼭 해주셔야합니다
이미지 파일이 2~3메가 되기때문에 변수 클리어 안하시면 램 다 잡아먹습니다
아래는 팁들
1. 화면 밖으로 창 밀어내기
아직 2렙이 안되서 딴 게시판들은 못봤지만 일단 이 방법은 굉장히 흔한거 같습니다
다만 gdip를 이용할 경우 듀얼모니터 구성이 전혀 필요없다는 점에서 간편합니다
IfWinNotActive, ahk_id %hwndA%
?? WinActivate, ahk_id %hwndA%
inout := !inout
WinMove, ahk_id %hwndA%,, % inout ? 15 : -1500, % inout ? 15 : -1500,
;위 라인은 아래와 같습니다
/*
if inout
WinMove, ahk_id %hwndA%,,15,15,
else
WinMove, ahk_id %hwndA%,,-1500,-1500,
*/
이런식으로 창을 화면밖으로 (음수 좌표) 밀어버리고 필요하다면
WinSet, Bottom,, ahk_id %hwndA%
까지해서 창을 맨뒤로 보내주면 깔끔합니다
2. 창 숨기기
일단 블루스택으로만 해봤습니다
Parent Window를 이용한 건데요
윈도우에는 progman 이라는 프로세스가 항시 구동중입니다
윈도창을 이 프로세스에 child로 편입시키면
창 표시순서가 바탕화면 바로위로 바뀌면서 시작표시줄에서 해당 창은 사라집니다
블루스택의 경우 윈도와 버그가 있는지 아래와 같은 코드로 child로 편입시키면 창이 아예 보이지 않습니다
하지만 보이지만 않지 창은 계속 존재하므로 child 편입 후 위에 밀어내기 코드를 써주셔야합니다
(밀어내기 안하시면 바탕화면에 블루스택 창 존재하는 위치에 클릭이 안됩니다 ㅎㅎ)
아래 코드로 한번 실험해보시기 바랍니다
shouldn't find it 메시지가 나왔을때
pBitmap := Gdip_BitmapFromHWND(hwndA)
Gdip_SaveBitmapToFile(pBitmap, "test.bmp", 100)
위와 같은 코드로 스샷 저장해서 보시면 보이지만 않지 실제로 정상 작동중임을 확인 할 수 있습니다
SetTitleMatchMode,2
targetwd := "BlueStacks App Player"
WinGet, hw_a, ID, %targetwd%
if hw_a=
{
??? MsgBox, Failure to WinGet target window ID!
??? ExitApp
}
hw_parent := DllCall( "GetParent", "uint", hw_a )
;WinGet, hw_progman, ID, Program Manager ahk_class Progman
WinGet, hw_progman, ID, ahk_class Progman
turnwhat:=DllCall( "SetParent", "uint", hw_a, "uint", hw_progman )
WinActivate, ahk_id %hw_a%
winshow, ahk_id %hw_a%
MsgBox, check the taskbar for the target window button... shouldn't find it
turnwhat1:=DllCall( "SetParent", "uint", hw_a, "uint", hw_parent )
MsgBox, check the taskbar for the target window button... it's back
3. gdip 사용시 창 투명도에 제약을 받지 않습니다
WinSet, Transparent, 0, ahk_id %hwndA%
이런식으로 그냥 안보이게 해놔도 잘 작동합니다
어렵네요 ... 크윽.. 여기는 또다른 신세계네요 ..
여러싸이트 도움으로 간단한 배열부터 기본적인것 배우는데도 힘들어는데..
이건 이것대로 신세계인듯... ㅡ.ㅜ 정말 오핫의 배움은 끝이 없는것같네요 ;;
저같이 이쪽 전공 (기계) 아닌?사람은 걍 활성 서치 써먹어야 할듯... ㅋ