操纵遨游工具栏的方法,解决spy++无法捕获控件的问题(2)

发表于:2009-04-23来源:作者:点击数: 标签:工具spy捕获控件解决
利用微软内部工具 mitaspy可以发现msaa对象。这说明,mita比maui要强。mita也是微软以后的标准。 同时发现了FindWindowEx只能搜索子窗口,不能搜索孙子窗口,所以,需要提前注意窗口的嵌套层次。 这个问题完结了。我也不研究了。继续其他的学习。 更新后的代
利用微软内部工具 mitaspy可以发现msaa对象。这说明,mita比maui要强。mita也是微软以后的标准。

同时发现了FindWindowEx只能搜索子窗口,不能搜索孙子窗口,所以,需要提前注意窗口的嵌套层次。
这个问题完结了。我也不研究了。继续其他的学习。

更新后的代码


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Runtime.InteropServices;
using Aclearcase/" target="_blank" >ccessibility;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int hWnd = FindWindowEx(0, 0, "Maxthon2_Frame", null);
            int sub = FindWindowEx(hWnd, 0, "XTPDockBar", null);
            int subhwnd = FindWindowEx(sub, 0, null, "标准工具栏");
            if (subhwnd!= null)
                Console.WriteLine("OK, Found the toolbar");
            msaa((IntPtr)subhwnd);

            Console.ReadKey();
        }

        [DllImport("oleacc", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        public static extern int AccessibleChildren(IAccessible paccContainer, int iChildStart, int cChildren, [In, Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] object[] rgvarChildren, ref int pcObtained);

        [DllImport("oleacc.dll")]
        internal static extern int AccessibleObjectFromWindow(
                      IntPtr hwnd,
                      uint id,
                      ref Guid iid,
                      [In, Out, MarshalAs(UnmanagedType.IUnknown)] ref object ppvObject);

        internal enum OBJID : uint
        {
            WINDOW = 0x00000000,
            SYSMENU = 0xFFFFFFFF,
            TITLEBAR = 0xFFFFFFFE,
            MENU = 0xFFFFFFFD,
            CLIENT = 0xFFFFFFFC,
            VSCROLL = 0xFFFFFFFB,
            HSCROLL = 0xFFFFFFFA,
            SIZEGRIP = 0xFFFFFFF9,
            CARET = 0xFFFFFFF8,

原文转自:http://www.ltesting.net