首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c#中使用win32句柄访问ComInterface到VB6 OCX控件

在c#中使用win32句柄访问ComInterface到VB6 OCX控件
EN

Stack Overflow用户
提问于 2015-02-08 01:18:02
回答 1查看 368关注 0票数 0

目前,我正在自动化使用vb6开发的遗留应用程序的测试,该应用程序使用来自Janus Systems的GridEx2000b控件。

为此,我使用Ranorex作为我最喜欢的工具来开发测试自动化,这样我就可以使用c#开发测试代码。

我现在的问题是自动化Ranorex2000B的控制,GridEx没有任何开箱即用的支持。因此,我正在尝试找出一种解决方案,在该解决方案中,我可以使用为控件找到的Win32句柄来引用GrixEx控件,这样我就可以使用组件中的ComInterface来导航自动化控件。

我有一个解决方案的想法,但我不知道怎么做,我希望你们能帮助我。

问题的伪代码:

代码语言:javascript
复制
using GridEX20;

class GridExWrapper
{
    public GridEX20.GridEXClass Instance;

    public GridExWrapper(IntPtr win32handle)
    {
        Instance = (GridEX20.GridEXClass)Win32ControlUtilities.GetControlReference(win32Handle);
    }
}


class Win32ControlUtilities
{
    public static SomeKindOfHandle GetControlReference(IntPtr win32Handle)
    {
        ...
        ...
        ...
    }
}

我会从Ranorex或其他间谍工具那里拿到win32handle。然后我就可以像这样使用GridExWrapper了。

代码语言:javascript
复制
using NUnit.Framework;

class Program
{
    [Test]
    public void control_should_have_9_items()
    {
        /// Get win32 handle from Ranorex
        IntPtr win32handle = XXXXXX;
        int expectedItemCount = 9;

        GridEXClass control = new GridExWrapper(win32handle);
        Assert.AreEqual(expectedItemCount, control.ItemCount);
    }

}
EN

回答 1

Stack Overflow用户

发布于 2015-03-24 16:53:30

您可以尝试使用Microsoft UI自动化库(System.Windows.Automation)来标识控件的属性。有时,即使Ranorex失败,MSUIA在查看控件的本机属性以进行标识时,也会设法识别该控件。不能保证,但值得一试。Here is a link to a tutorial on using MSUIA.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28385038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档