2012-08-10 108 views
0

所以我的問題是: 我在這個應用程序中獲得了C#中的Windows窗體應用程序和webBrowser控件。例如,當您右鍵點擊YouTube上的視頻時,會出現一個上下文菜單。現在,是否有可能以編程方式右鍵單擊webBrowser控件,然後再以編程方式單擊該上下文菜單中的特定條目?c#在上下文菜單中模擬點擊

+0

通常不會。這往往是由另一個進程擁有的窗口,或者被埋在其他窗口的層次結構中。沒有好方法來獲得窗口句柄。看看Spy ++。 – 2012-08-10 13:53:43

回答

0

是的,但您始終必須從相同的像素開始,或者更好地說一個實際的像素範圍,因此您可以確定點擊的結果將是必需的。另外你不能通過指定它的文本來點擊一個項目,你必須從圖形的角度來完成所有的程序設計(從X - Y軸上只有2維)。這是大多數網絡機器人用於各種目的的方式。

+0

嗯,但這不是很安全,是嗎?假設某人有不同的屏幕分辨率,並且鼠標點擊不準確,上下文菜單中的條目將不會被點擊。 – VGD 2012-08-10 13:10:43

+0

你是對的。那麼解決方案就是讓實例適用於許多預定義的場景。 – Freeman 2012-08-10 13:13:50

+0

通過使用簡單的圖像識別來找到沒有對其進行硬編碼的確切位置,效果更佳。 – Viezevingertjes 2012-08-10 13:26:31

0

您是否真的需要模擬上下文菜單的點擊或者只是想要足夠好的動作?如果是這樣,您可以從ContextMenu.Items列表中獲取該項目,並假設該按鈕會引發Click事件。如果您確實需要至少顯示上下文菜單,則可以調用ContextMenu.Show事件。這一切都假定您的WebBrowser控件的上下文菜單是公共的(不是某些第三方繼承的控件隱藏它或某物)。

+0

我試過了,問題是,webBrowser.ContextMenu總是返回_null_,然後我只是試圖禁用上下文菜單,這工作,但只適用於上下文菜單是默認webbrowser上下文菜單的網站。所以我認爲youtube使用它自己的上下文菜單的事實使得無法通過webBrowser.ContextMenu訪問上下文菜單。如果你知道如何訪問它,告訴我;) – VGD 2012-08-11 08:48:01