- Elkha - Blue
- 오토핫키 커뮤니티
- 오토핫키
녹스 비활성 PixelGetColor 어떻게 해야할까요?
-
-
봐주셔서 감사합니다만 그래도 킬때마다 값이 바뀌네요 ㅠㅠ
그림판에다가 테스트 해보면 항상 정해진 값이 나오는데
녹스에다가만 하면 가만히 있는 셀 값도 계속 바뀌고 매크로를 리로드하면 값이 크게 달라지네요ㅠ -
아 그리고 녹스는 스피드모드(directX)로 이용하고 있습니다
-
그렇군요. 스피드 모드가 문제 일수도 있겠네요. 예전에 녹스 초기에 스피드모드 잠깐 써봤는데 픽셀값이 많이 흔들렸던거 같습니다. 녹스 최신버전으로 사용중이신지?(5.0.0.1) 최신버전에서는 픽셀값 흔들리는게 개선 되었던거 같네요. 중간에 3.x버전은 사용안해봐서 모르겠습니다.
가능하면 호환모드 쓰시는게 좋습니다. -
버전은 5.0.0.1 쓰고 있습니다.
호환성모드 쓰면 postmessage가 안된다 그런거 같아서 스피드 모드 쓰고 있었는데 지금 해보니까 호환성 모드에서도 postmessage가 작동하긴 하네요
픽셀값은 모드 상관없이 막 튀네요 ㅋㅋㅋ
오히려 0값이 나오거나 안떠버리면 뭔가 잘못됬구나 하고 바꿔볼텐데 값이 나오긴 나오는데 매번 바뀌니 더 모르겠네요ㅋㅋ 하.....
9878896 / 10222184 / 10529192 / 13091472 / 11778536
녹스 그냥 킨 상태에서 리로드만 했는데 값이 이렇게 튀네요 ㅋㅋㅋ
비활성너무 어려워요 ㅠㅠ -
pBitmap을 이미지로 저장하셔서 함 보시지요. 이미지가져오는거에 문제가 있는거 같은데요.
그리고 title은 가급적 title명을 직접 쓰기보단
winget,hwnd,,ahk_class Qt5QWindowIcon 로 잡아서 윈도우 핸들갑 취하셔서 핸들값으로 쓰시는게 날수있습니다.
같은이름이 들어간 윈도우들이 있으면 오작동할수 있어요. -
#Include Gdip.ahk
home::
N := winget,hwnd,,ahk_class Qt5QWindowIcon
{
a := Getcolor(500,500,"N")
send, %a%
}
return
Getcolor(x,y,Title_function)
{
pToken := Gdip_Startup()
pBitmap:=Gdip_BitmapFromHWND(hwnd := WinExist(Title_function))
static image세이브드
if !image세이브드 and image세이브드 := true
Gdip_세이브BitmapToFile( pBitmap, "테스트.bmp")
ARGB := Gdip_GetPixel( pBitmap, x, y )
Gdip_disposeimage(pBitmap)
Gdip_Shutdown(pToken)
return ARGB
}
세이브를 칠 수 없네요...ㅋㅋ
이렇게 변경하고 했더니 호환성모드 스피드모드 둘다 하얀 화면이 저장되네요 ....
그림판은 잘만 저장되는데 ㅠㅠ -
#Include Gdip.ahk
home::N := winget,hwnd,,ahk_class Qt5QWindowIconwinget,N,id,ahk_class Qt5QWindowIcon
{a := Getcolor(500,500,"N")a := Getcolor(500,500,N)
send, %a%
}
return
Getcolor(x,y,Title_function)
{
pToken := Gdip_Startup()pBitmap:=Gdip_BitmapFromHWND(hwnd := WinExist(Title_function))pBitmap:=Gdip_BitmapFromHWND(Title_function)
static image세이브드 ; 어떤 용도인지 모르겟네요
if !image세이브드 and image세이브드 := true ; 어떤 용도인지 모르겟네요
Gdip_세이브BitmapToFile( pBitmap, "테스트.bmp")
ARGB := Gdip_GetPixel( pBitmap, x, y )
Gdip_disposeimage(pBitmap)
Gdip_Shutdown(pToken)
return ARGB
}추가적으로 Gdip.ahk안에 Gdip_Gdip_BitmapFromHWND
함수 안에
printwindow(hwnd,hdc) 가 있다면
pritnwindow(hwnd,hdc,"0x2") 로 변경해보세요.
-
두분 다 너무 감사드립니다
부족한 지식에 제대로 이해하기보다 흉내만 내다보니 기초적인것도 이것저것 틀리는게 너무 많네요 ㅠㅠ
중간에 용도를 모르겠다고 하신 부분도 어떻게 해야할지 몰라서 그대로 끌어오다 보니 딸려들어갔나 봅니다
일단은 녹스 화면이 저장은 됐습니다!
근데 계속 저 화면만 녹화가 됩니다 ㅋㅋㅋㅋ
저 화면이 없어져도 계속 저화면만 저장되네요 ㅋ
좀 더 공부해보고 건드려야 할거같습니다 ㅠㅠ
-
추가적으로 Gdip.ahk안에 Gdip_Gdip_BitmapFromHWND
함수 안에
printwindow(hwnd,hdc) 가 있다면
printwindow(hwnd,hdc,"0x2") 로 변경해보세요.
혹시 이부분 적용하셧나요? -
어제 복사해서 찾기해보니 없다고 떠서 없는줄 알았는데 지금보니까 printwindow네요....
일단 해당 코드가 Gdip.ahk 안에 들어있습니다!
근데 사용법을 모르겠네요 .....DllCall("GetDC", "uint", hwnd)pBitmap:=Gdip_BitmapFromHWND(printwindow(Title_function,GetDC,"0x2"))이런식으로 넣어봤는데 제대로 작동하지 않는걸보니 잘못넣은듯 합니다 ㅠㅠ -
아네 제가 오타를 냇네요 그렇게 수정하심 안되고요...ㅠㅠgdip.ahk에 아래 함수 찾으셔서Gdip_BitmapFromHWND(hwnd){WinGetPos,,, Width, Height, ahk_id %hwnd%hbm := CreateDIBSection(Width, Height), hdc := CreateCompatibleDC(), obm := SelectObject(hdc, hbm)PrintWindow(hwnd, hdc) 이부분을 PrintWindow(hwnd, hdc,"0x2") 이렇게 바까주세요. 바꾸시고나서 저장하시고요.pBitmap := Gdip_CreateBitmapFromHBITMAP(hbm)SelectObject(hdc, obm), DeleteObject(hbm), DeleteDC(hdc)return pBitmap}
-
넘나 부족해서 죄송합니다 ㅠㅠ
여기저기서 막 dllcall 넣고 막 그러길래 ㅋㅋㅋ
그리고 됐어요 ㅋㅋㅋㅋㅋ
눈물이 눈앞을 가립니다 ㅠㅠ
다들 엄따구님 찬양하는 이유가 있네요 ㅋㅋ 너무너무 감사합니다! -
각각 틀린 문구를 잡아드립니다.
winget,n, id, ahk_class Qt5QWindowIcon
a := Getcolor(500,500,n)
pBitmap:=Gdip_BitmapFromHWND(n)
if image세이브드
-
스피드모드와 OpenGL 둘다 모두 움직이는 영상이 없다면 일정한 색값이 나옵니다.
그러나 서로 색값이 약간 다르기 때문에 이미지나 픽셀칼라값을 이용하여 제작했다면 공용하여 사용할순 없지요.
-
두분 다 너무 감사드립니다
부족한 지식에 제대로 이해하기보다 흉내만 내다보니 기초적인것도 이것저것 틀리는게 너무 많네요 ㅠㅠ
호환모드랑 스피드모드도 따로 안해보고 그렇다고 하는 글을 지나가다 몇번 보고 해 볼 생각도 안했었네요
일단은 녹스 화면이 저장은 됐습니다!
근데 계속 저 화면만 녹화가 됩니다 ㅋㅋㅋㅋ
저 화면이 없어져도 계속 저화면만 저장되네요 ㅋ
좀 더 공부해보고 건드려야 할거같습니다 ㅠㅠ
return ARGB 을
Gdip_Shutdown(pToken) 아래에 넣어보세요