자동화

조회 수 907 추천 0 댓글 10

안녕하세요. C#으로 비활성 매크로 제작중에 질문드립니다.


게임 화면 핸들러를 가져와 캡쳐해 이미지를 찾아서 상황에 맞는 키보드 이벤트를 보내주는 매크로를 만들려고합니다,


계산기 등의 화면의 이미지는 잘 가져오고 sendMessage, postMessage가 잘 작동하는데


제가 접근하는 게임에는 이미지도 못가져오고 send, post Mesage가 작동하지 않습니다.


이미지 서치는 꼼수를 써서 해결했는데, 키보드 이벤트가 발생하지 않습니다.


혹시 뚫는 방법을 알수있을까요? 힌트주시면 감사하게씁니다.ㅠㅠ


  • profile
    소심비형 2019.12.07 17:10

    일단 확인해봐야 하는 부분은... 비주얼 스튜디오가 관리자 권한으로 실행되었는지 봐야 합니다. 윈도우 API를 호출할 충분한 권한이 없으면 동작하지 않거든요. 첫번째 확인해야 할 사항이죠~

  • 타탕우 2019.12.07 18:29

    소중한 답변 감사드립니다.
    관리자 권한으로 실행하니 비활성 이미지 서치를 잘 해옵니다.
    하지만, 키보드 이벤트는 발생하지 않습니다. 물론 제 코드 문제 같습니다.

    모모플레이어 예제를 보니, 부모 윈도우를 가져오고, 자식 핸들러(랜더링 담당)에게 마우스, 키이벤트를 발생하더라구요. 하지만 제가 하는 게임은 부모 윈도우 하나만있고, 따로 자식 핸들러가 존재하지 않는것 같습니다.(Spy++로 확인했으나, 자식 핸들러가 있으면 + 탭이 나와서 누르면 자식핸들러를 보여주는데 + 탭이 보이지 않았습니다.)

    보통 제일 부모 윈도우에는 키 이벤트를 발생시키지 않나요?
    부모 윈도우의 자식 핸들러에게만 키 이벤트를 발생시키는건지, 핸들러가 존재하지만 숨어있는건지 잘 모르겠네요.

  • profile
    소심비형 2019.12.07 19:13
    최상위(보통 매인 핸들러라고 부름) 핸들러에도 이벤트는 전달됩니다. 코드 문제일듯 하구요. 참고로 Post나 Send는 스페셜키를 사용할 수 없습니다. 참고로, 비활성이라도 키 입력은 입력 포커스에 영향을 받으니 이 부분도 체크해보셔야 해요.
  • 타탕우 2019.12.07 19:52
    아, 메인 핸들러에도 이벤트는 전달되는군요.
    스페셜키는 사용안하고 방향키, i(게임 단축키)만 테스트해보았는데 반응은 없습니다.
    말씀해주신데로 게임 채팅 입력창에 커서를주고 매크로에서 시작 버튼을 누르면 채팅입력창의 포커스는
    사라지더라구요.

    메인 핸들러 주소도 잘가져오고, 그걸이용해서 이벤트를 줬는데 왜 안되는지 의문입니다.ㅠㅠ
    혹시 몰라 이벤트 소스 첨부합니다.

    IntPtr findwindow = FindWindow(null, "gameName");
    if (findwindow != IntPtr.Zero)
    {
    // WM_KEYDOWN : 0x100, VK_I : 0x49
    PostMessage(findwindow, WM_KEYDOWN, (IntPtr)VK_I, IntPtr.Zero);
    // WM_KEYUP : 0x101, VK_I : 0x49
    PostMessage(findwindow, WM_KEYUP, (IntPtr)VK_I, IntPtr.Zero);
    }
  • profile
    소심비형 2019.12.07 20:35

    어디에 이벤트를 주는지 모르겠지만... 일단 메모장이나 기타 다른 프로그램에 테스트 해보시고 함수에 문제가 없는지 판단해야 할거 같아요. 메모장에 잘 동작한다면 키보드 입력하려는 창이 윈도우 이벤트를 가로채서 내부 메시지로 처리하는지 확인하셔야 해요. 윈도우 이벤트를 정상적으로 받았더라도 윈도우 컨트롤이 아닌 자체 그래픽인 ActiveX나 OpenGL등등... 처리하는거라면 해당 이벤트 어떻게 전달하는지 보셔야 합니다. 근데 보통 게임이 아니라면 잘 동작해야 해요. 게임이라면 별도 처리가 더 필요할거구요.

  • 타탕우 2019.12.07 20:40
    계산기에 postMessage를 주면 정상적으로 값이 들어가더라구요. 게임입니다.ㅠㅠ 이벤트 전달되는지는 어떤걸 공부하면 될까요?
  • profile
    소심비형 2019.12.07 21:13
    일단... 위 글을 자세히 보면요. 포커스가 사라지는 문제랑 관련 있는지 의심됩니다. 핸들 설정된 창을 active와 front 속성을 적용해보시는게 좋을듯 하네요.
  • profile
    소심비형 2019.12.07 21:15

    제가 만든 NGM 매크로 1.0 버전이 소스 공개 되어 있어요. 분석하면서 테스트 해보시면 도움이 될지도 모르겠네요...

  • 타탕우 2019.12.09 16:09
    postMessage를 수정해서 비활성 키보드가 잘 입력되도록 했습니다. 다만, 방향키만 작동을 하지 않습니다. 윈도우 컨트롤 자체가아닌 ActiveX나 OpenGL로 처리하는거라면 이벤트 전달 흐름을 보라고하셨는데요. 제가 발생한 이벤트가 어디로 전달되는지 흐름을 확인하려면 어떻게해야하는지 키워드를 알려주실수있나요?
  • 할량 2020.03.30 00:38

    안녕하세요 저도 SendMeassage로 클릭을 해보려고 하는데 안되서요

    저는 그림판이나 계산기에서도 안되네요

    혹시 도움을 좀 받을 수 있을까요?


List of Articles
분류 제목 글쓴이 최근변경 추천
자유 프로그래밍 게시판 소개 피카부 2023.04.01 0/0
질문 C# 던파매크로 혹시 팁있으신가요 ?> 1 현질하다털림 2020.10.03 0/0
질문 모바일게임 매트로는 기본적으로 이미지써치 방식인가요? 5 하하허헛 2020.09.20 0/0
질문 파이썬 메이플 메크로 keyboard 이벤트 파이쓰은 2020.08.29 0/0
질문 파이썬 비활성 전송 할줄 아시는분 계신가요? BC 2020.08.17 0/0
질문 c# PostMessage 질문있습니다. 1 씨샵 2020.10.08 0/0
질문 파이썬으로 매크로 만들어도 결국 소프트웨어 입력이라... 3 beumguy 2020.08.09 0/0
질문 카카오토처럼 원하는 앱플레이어 인스턴스를 부팅하는 ... 겔바슨 2020.07.06 0/0
질문 파이썬 메이플 한영키 변환하는법 4 작은이득 2020.07.16 0/0
질문 파이썬 반복하는법 질문 작은이득 2020.06.19 0/0
질문 메이플 스토리 매크로 구합니다. tensorf 2020.05.25 0/0
질문 아두이노 마우스 좌표 질문드립니다. 4 Larva 2020.05.07 0/0
질문 파이썬 키보드 질문드립니다 1 생탄의탄생 2020.05.02 0/0
질문 룬오토 해제를 티처블머신으로 할 수 있다~!!! 5 쩌리오리 2022.03.01 0/0
질문 메이플 거탐 관련 7 TAIIllL 2020.05.22 0/0
질문 lua 스크립트 처음 짜보는데 도움좀여 퀵키 2020.04.25 0/0
질문 lua 스크립트 질문 윤목s1 2020.04.24 0/0
질문 파이썬 매크로 4 prest 2020.04.28 0/0
질문 파이썬 으로 린2m 매크로 막히나요? 도영아빠 2020.04.21 0/0
질문 c#으로 이미지서치에서 배경제외하고 검색하는 부분에... 4 엔젤스타피방 2020.04.15 0/0
질문 머신러닝 4부 - 머신러닝을 이용한 매이플 오토룬 풀기~ 16 쩌리오리 2021.12.22 2/0
Board Pagination Prev 1 2345678910 11 Next
/ 11

전체 최신 인기글

전체 주간 인기글