2011-05-13 259 views
1

簡而言之:我有一個包含按鈕的ActiveX控件的VB6表單,並且我想創建一個可以使用C#單擊這個按鈕的自動工具。 我試圖使用反射來解決這個問題,但我無法訪問表單。 我建議的一般方向是使用窗口API來訪問表單,但它看起來非常「昂貴」的解決方案。獲取ActiveX對象屬性

有沒有人熟悉這個主題? 謝謝

+0

這無疑是另一個進程擁有的控件。是的,這將是昂貴的,你將不得不花費大量的時間學習Windows API。您不能直接訪問控件,只能訪問它創建的窗口。有些不是,特別是VB6的。從Spy ++開始,看看有什麼。 – 2011-05-13 23:23:09

回答

0

您能否使用.net的AutomationElement

爲了測試這個:

  1. 下載從這個question

  2. 採取UiSpy.zip鏈接獲取的形式開放,激活懸停模式。如果你「看到」按鈕,它應該很容易使用] AutomationElement實際上發送一個點擊。

+0

我會試一試。謝謝您的回答 – 2011-05-18 07:36:09

0

如何發送/掛鉤窗口消息(例如發送WM_MOUSEDOWN或WM_MOUSEMOVE)?簡短/簡單的例子可以在here找到。

+0

這個解決方案對我來說並不好,因爲我也想訪問ActiveX對象,以便獲得它的屬性 – 2011-05-13 22:21:05

+0

所以我們不是隻談論點擊按鈕嗎?還是僅僅是挑選下拉值或將文本放入輸入框?你應該把這個添加到你的問題中(你到底想要做什麼)。 – Mario 2011-05-13 22:26:51

+0

第一步也是最需要的一步是根據像素位置執行按鈕單擊(而不是觸發單擊事件),但我想知道如何處理其他控件(組合框,網格等)。 – 2011-05-18 07:38:45

0

如果你的目標是爲自動化測試的UI,我就從SmartBear軟件,該軟件可以直接訪問你的VB6的形式,控件和屬性建議TestComplete。它們基本上掛鉤了進程並訪問「Forms」對象和「Screen」對象以訪問加載的表單。

+0

謝謝您的回覆。我的問題的基礎是,我想在我自己的專用框架中替換當前的自動化工具(QTP)。由於我正在測試我公司的應用程序,因此我不需要像TestComplete或QTP那樣的通用工具。 – 2011-05-18 07:33:15