2009-02-13 43 views
1

我有一個VB6應用程序,我沒有源代碼。此應用程序使用第三方ActiveX控件。我想自動化這些ActiveX控件。是否有可能獲得IUnknowns或對象引用?對於其中一些,我可以獲得底層的HWND,但從我可以告訴的是沒有將這些HWND轉換爲ActiveX控件的通用方法。使用ActiveX控件自動化VB6應用程序

某些測試軟件允許您使用ActiveX控件編寫VB6應用程序的腳本。他們是如何做到的呢?

+0

您是否嘗試自動化VB6應用程序,或者您是否試圖訪問ActiveX控件並從你的程序運行它們? – jdigital 2009-02-13 22:06:34

回答

0

您可能可以通過Microsoft Research Detours庫使用DLL注入。基本上你會想要鉤住那些特定控件的共同點。您需要特別小心,特別是如果您執行任何跨線程/跨進程(COM線程規則非常重要)。

整體Detours很容易使用......但我從來沒有用COM例程試過它。你可能想看看不同的解決方案。

另請注意,Detours對其有一些許可限制,可能會影響您分發它的能力。

測試軟件可能只是發送適當的WM_XXX消息到有問題的特定窗口(例如WM_MOUSEMOVE)。

+0

我目前使用WM_XXX消息,但是你可以用它們做什麼是有限的。我將嘗試DLL注入路由。謝謝。 – 2009-02-14 05:59:50

0

對不起,但VB6 EXE不包含需要拉出它使用的COM對象的清單。你最好打賭的是嘗試一些rbobby的建議,特別是關於發送WM_XXX消息。

1

這些ActiveX控件是否在單獨的DLL中?如果是這樣,您可以使用OLE視圖(一個VS 6.0工具)來打開DLL並查看所有的接口,coclasse等。

相關問題