首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

|ZYCWPF| WINAPI 怎么枚举窗体所有控件? 多谢

2013-01-23 
|ZYCWPF| WINAPI 如何枚举窗体所有控件? 谢谢private void Button_Click_1(object sender, RoutedEventArg

|ZYCWPF| WINAPI 如何枚举窗体所有控件? 谢谢



        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            richHandle = IntPtr.Zero;
            EnumWindows(EnumFunc, 0);
            if (richHandle == IntPtr.Zero)
                return;
            Console.WriteLine(Process_ReadRichEditText(richHandle));
        }

        public bool EnumFunc(IntPtr hwnd, int lParam)
        {
            if (!IsWindowVisible(hwnd))
                return true; // 不可见 

            StringBuilder vBuffer = new StringBuilder(256);
            GetClassName(hwnd, vBuffer, vBuffer.Capacity);
            string name = vBuffer.ToString();
            if (vBuffer.ToString() == "TXGuiFoundation")
            {
                uint vProcessId;

                GetWindowThreadProcessId(hwnd, out vProcessId);
                var nameid = GetProcessName(vProcessId).ToLower();
                if (GetProcessName(vProcessId).ToLower() == "qq.exe")
                {
                    GetWindowText(hwnd, vBuffer, vBuffer.Capacity);
                    // 标题中含"聊天中" 
                    if (vBuffer.ToString().IndexOf("杜老师") >= 0)
                    {
                        //在这里应该是要找这个窗体里面的控件才对啊?为什么这里是枚举他的子窗口?
                        //还有他这里不会进入@EnumChild方法,我想是因为他找不到这个子窗口的原因?
                        //那这里怎么来枚举这个窗体的所有控件呢? 
                        //谢谢                        


                        EnumChildWindows(hwnd, @EnumChild, lParam);
                        return false;
                    }
                }
            }
            return true;
        }



我上面用: EnumWindows(EnumFunc, 0); 方法来得到所有窗体
然后在EnumFunc中判断窗体类型是否为:TXGuiFoundation且进程为"qq.exe"
如果是的话判断QQ聊天窗体的标题是否为有:“杜老师”
如果有的话,我就要“枚举这个窗体的所有控件”,来找到聊天输入框
但是现在,我不知道旧城改造以来“枚举这个窗体的所有控件”

谢谢 
[解决办法]
spy++有个树状视图的,可以分层显示子窗口

相当于你的enumchildwindows

如果列不出来,那就是没有了。

如果列出来,看看你代码步入的“路径”是否正确。
[解决办法]
lz留个邮箱

热点排行