방개
비밀번호를 잊어버리셨나요?

질문

비활성 이미치서치후 클릭

    • 글자 크기

 

#SingleInstance force
#Include Gdip_All.ahk
#Include Gdip_ImageSearch.ahk


q::
{
pToken := Gdip_Startup()
pHaystack := Gdip_BitmapFromHwnd(WinExist("외형 수정"))
pNeedle := Gdip_CreateBitmapFromFile("q.bmp")
result := Gdip_ImageSearch(pHaystack, pNeedle, outputVar)

Gdip_DisposeImage(pHaystack)
Gdip_DisposeImage(pNeedle)
Gdip_Shutdown(pToken)


if (result = 1)
{

    RegExMatch(outputVar, "(.*),(.*)", out)
    MsgBox, X: %out1% Y: %out2%
   
}
return


}

 

하아...png

 

이렇게 윈도우 타이틀이 계속 바뀌는 프로그램이고 타이틀안에 다른타이틀이 있습니다

 

하면 xy 좌표는 스크린 좌표가아닌 클라이언트 안의 좌표로 정확히 출력이 됩니다

근데 이걸 찾은 좌표를 비활성클릭을 하고 싶어서 일단 정확히 클릭이 되는지 확인할려고

마우스클릭을 하면 클릭이 외형수정 타이틀안에서 클릭이 되는데 마우스가 스크린 밖으로 나가면 클릭이 안되길래  croodmode, mouse, client로 사용을해도 밖에서는 먹히질않아서 컨트롤 클릭으로 비활성클릭을 해볼려고 하닌깐 외형수정 타이틀안에서 마우스포인트가 존재했을때 마우스왼쪽버튼을 누르면서  q를 눌러야지 클릭이 되더라구요 ... 회사다니면서 저녁에 계속해보고 있는데 아직 잘모르겠어서요 ㅜㅡㅜ

윈도우 타이틀 핸들을 GDIP에서 받아오면 컨트롤 클릭명령을 내렸을데 그대로 실행되야할꺼같은데 안되서 ..ㅠㅠ

조금 편하게 사용하고 싶어서 만드는건데 그냥 이미지서치후에 마우스 클릭으로는 스크립트를 완성했는데 마우스가 왔다갔다하니 영 불편해서 비활성으로 만들어보고  싶습니다. .도와주세요 !!

 

    • 글자 크기
댓글 5
  • 2020.2.23 11:19 댓글

    MouseClick같은 경우엔 기본적으로 Relative 좌표기 때문에 해당 프로그램이 활성화 되어있지 않으면 당연히 틀린 곳의 좌표를 고를 것입니다. (이는 client 좌표로 해도 마찬가지입니다.)

    우선, 비활성 이미지서치로 나온 좌표가 바깥에 (허만수_2020-02-01~~~) 프로그램의 좌표인지, 아니면 안쪽 "외형 수정" 프로그램을 기준으로 한 좌표인지 알아보시고

    비활성 이미지서치할 때 얻은 Haystack 비트맵이 바깥 프로그램의 비트맵인지, "외형 수정"창의 비트맵인지 알아보세요. (Gdip_SaveBitmapToFile()을 쓰면 간단히 확인할 수 있겠죠?)

     

    저는 정상적으로 진행되는 작업인데, ControlClick 쪽을 어떻게 쓰셨는지도 궁금하구요.

  • 프날님께
    박유빈글쓴이
    2020.2.23 11:57 댓글

    비활성 이미지서치로 나온 좌표는 외형수정 안의 클라이언트 좌표이구요(이미지왼쪽끝상단 좌표일치)

    Haystack 비트맵도 외형수정의 비트맵이구요

     

    #SingleInstance force

    #Include Gdip_All.ahk

    #Include Gdip_ImageSearch.ahk

     

    q::

    {

    pToken := Gdip_Startup()

    pHaystack := Gdip_BitmapFromHwnd(WinExist("ahk_exe DentalCADApp.exe"))

    pNeedle := Gdip_CreateBitmapFromFile("q.bmp")

    result := Gdip_ImageSearch(pHaystack, pNeedle, outputVar)

     

    Gdip_DisposeImage(pHaystack)

    Gdip_DisposeImage(pNeedle)

    Gdip_Shutdown(pToken)

     

     

    if (result = 1)

    {

     

    RegExMatch(outputVar, "(.*),(.*)", out)

    ControlClick, X%out1% Y%out2%, 외형 수정

    }

    }

    return

     

    컨트롤 클릭은 이렇게 사용했어요 ... 마우스를 누르면서 q버튼을 누를때는 클릭이 되요 외형수정이

    컨트롤클릭시 타이틀이  허만수에서 >> 외형수정으로 넘어가기는합니다 ..  

  • 박유빈님께
    2020.2.23 12:38 댓글

    이거 상호작용하는 프로그램을 제가 써보지 않아서..ㅠㅠ 애매하네요.

    타이틀이 바뀐다면, ahk_exe나 ahk_id로 ControlClick의 타이틀을 잡아보시는 건 어떨까요?

     

    Controlclick, x%out1% y%out2%, title,,,,NA

     

    이렇게 NA옵션도한번..

  • 프날님께
    박유빈글쓴이
    2020.2.23 13:12 댓글

    흠 ㅠㅠ exe 랑 id 로 둘다 잡아서 해봤는데 같은 현상이고 그냥 새폴더파일 그림보이게 띄워서 타이틀 새폴더로 하면 클릭이되네요...ㅠㅠ프로그램의문제이겠죠?!

     

    클릭만되면되는디 속상하네요 ㅜㅜ

  • 박유빈님께
    2020.2.23 14:11 댓글

    아무래도 외부 프로그램이랑 작용하는거니까 그럴 가능성이 크네요 ㅠㅠ

    스크립트 관리자 권한으로 실행 해보셨나여?

댓글 달기

서버에 요청 중입니다. 잠시만 기다려 주십시오...