2009-05-06 5 views
5

대상 응용 프로그램은 델파이 (Win32가 아니라. NET)로 작성되었으며 폐쇄 소스입니다.다른 프로그램에서 컨텍스트 메뉴 항목을 프로그래밍 방식으로 선택하는 방법은 무엇입니까?

호출하려는 동작을 복사라고합니다. 그러나 명백한 바로 가기 키는 없습니다.

내 목표 HWND을 발견하고 상황에 맞는 메뉴를 엽니을 설득합니다 (Ctrl + 삽입이 잘못된 일을하고 Ctrl + C는 아무것도하지 않습니다) (이 WM_CONTEXTMENU-WM_RBUTTONDOWN/UP을하지 응답). 메뉴 HWND에서 MN_GETHMENU을 통해 메뉴 핸들을 가져 와서 원하는 메뉴 항목을 찾을 수 있습니다. 나는 항목을 "선택"하는 방법에 대한 세부 사항을 알지 못합니다. 메뉴가 "모덜리스", 즉 도움이되지 않습니다. 그것의 HWND은 소유하고 있지 않으므로 많은 숨겨진 TPUtilWindow 창이 진짜 주인인지 모르겠다. 그렇지 않으면 나는 단지 WM_COMMAND을 보내고 메뉴를 팝업 할 수는 없다.

나는 모든 종류의 해킹을 용이하게 할 것이라고 확신하지만 대상 프로세스에 코드를 삽입하지 않는 것이 좋습니다.

답변은 모든 언어에서 허용됩니다.

+0

그와 같은 것이 가능하다면 어떤 보안상의 영향이있을 것이라고 생각한다. 그럴 경우, 앱을 속일 때 키보드/마우스 입력을 받고 있다고 생각하게 될 수있다. 사실 그것은 다른 애플 리케이션에서오고있어! 그래도 구체적인 예를 생각할 수는 없지만 ... – Paggas

+0

어쨌든 당신은 이미 잃어버린 신뢰할 수없는 응용 프로그램을 실행 중입니다. 하지만 XP에서 작동합니다 ... Vista/7에서 작동하는지 궁금합니다. –

답변

8

분명히 당신은 WM_RBUTTONDOWN/UP 메시지를 보낼 수 있으며 응답합니다. 그렇다면 WM_KEYDOWN/UP 메시지를 보낼 수 있습니까? 메뉴의 구조를 알고 변경되지 않는 한 누군가가 아래쪽 화살표 X를 여러 번 누른 다음 Enter 키를 누르는 앱에 알려줍니다. 그게 나에게 가장 간단한 해결책 인 것 같아. ...

+0

간단히 말해 WM_CHAR을 보내지 않았지만 WM_KEYDOWN/UP을 보내 주셔서 감사합니다. –

+0

또한, 방금 단축키를 보냈고 커서는 아래로/들어가지 않았습니다. –

+0

그래, 그거 다. (당신은 그것을 가지고 있다면 언급하지 않았다.) –