2012-08-10 9 views
0

내 질문은 : 이 응용 프로그램에서 C# 및 webBrowser 컨트롤에 Windows Forms 응용 프로그램이 있습니다. 예를 들어 youtube의 비디오를 마우스 오른쪽 버튼으로 클릭하면 컨텍스트 메뉴가 나타납니다. 이제 웹 브라우저 컨트롤을 프로그래밍 방식으로 오른쪽 클릭하여 프로그래밍 방식으로 해당 컨텍스트 메뉴의 특정 항목을 클릭 할 수 있습니까?컨텍스트 메뉴에서 C# 시뮬레이션 클릭

+0

일반적으로 없습니다. 이것은 다른 프로세스가 소유하거나 다른 창의 계층 구조에 묻혀있는 경향이 있습니다. 창 핸들을 얻는 좋은 방법이 없습니다. Spy ++를 살펴보십시오. –

답변

0

예, 그렇지만 항상 같은 픽셀에서 시작하거나 더 나은 실제 픽셀 범위를 사용해야하므로 클릭 한 결과가 필수 결과가 될 것입니다. 또한 텍스트를 지정하여 항목을 클릭 할 수 없으며, 그래픽 관점에서 모든 것을 프로그램 적으로 수행해야합니다 (X - Y 축은 단지 2 차원이므로 작업합니다). 이것이 대부분의 웹 로봇이 다양한 목적으로 만들어진 방식입니다.

+0

글쎄,하지만 그건 진짜 안전하지 않나요? 누군가 다른 화면 해상도를 가지고 있고 마우스 클릭이 정확하지 않다고 가정하면 컨텍스트 메뉴의 항목은 클릭되지 않습니다. – VGD

+0

당신이 정확합니다. 이를위한 솔루션은 사전 정의 된 여러 시나리오에서 인스턴스를 작동시키는 것입니다. – Freeman

+0

단순한 이미지 인식을 사용하여 하드 코딩하지 않고 정확한 위치를 찾는 것이 좋습니다. – Viezevingertjes

0

컨텍스트 메뉴를 실제로 시뮬레이트해야합니까, 아니면 원하는 동작만으로 충분합니까? 그렇다면 ContextMenu.Items 목록에서 항목을 가져 와서 버튼에 Click 이벤트가 발생한다고 가정하면됩니다. 최소한 컨텍스트 메뉴를 표시해야하는 경우 ContextMenu.Show 이벤트를 호출 할 수 있습니다. 이 모든 것은 WebBrowser 컨트롤의 컨텍스트 메뉴가 공개되어 있다고 가정합니다 (숨겨진 일부 제삼자 상속 된 컨트롤이 아님).

+0

제가 시도한 문제는 webBrowser.ContextMenu가 항상 _null_을 반환한다는 것입니다. 그런 다음 컨텍스트 메뉴가 기본 웹 브라우저 컨텍스트 메뉴 인 웹 사이트에서만 작동하는 컨텍스트 메뉴를 비활성화하려고했습니다. 그래서 나는 youtube가 자신의 컨텍스트 메뉴를 사용한다는 사실로 인해 webBrowser.ContextMenu를 통해 컨텍스트 메뉴에 액세스 할 수 없다고 생각합니다. 그래도 액세스하는 방법을 알고 있다면 알려주세요.) – VGD

관련 문제