C# usa la API de Windows para obtener un identificador de control en el control sin título

  /// <summary>
        /// Obtiene la función de identificador de ventana
        /// </summary>
        /// <param name="lpClassName">nombre de clase de ventana</param>
        /// <param name="lpWindowName" >Ventana title name</param>
        /// <returns>Return handle</returns>
        [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName) ;

  [DllImport("user32.dll", EntryPoint = "FindWindowEx", SetLastError = true)]
        public static extern IntPtr FindWindowEx(IntPtr hwndParent, uint hwndChildAfter, string lpszClass, string lpszWindow);

        [DllImport("user32.dll")]
        public static extern int EnumChildWindows(IntPtr hWndParent, CallBack lpfn, int lParam);

[DllImport("user32.dll")]
        public static extern int GetWindowText(IntPtr hwnd, StringBuilder sb, int length);

 delegado público bool CallBack(IntPtr hwnd, int lParam);

        /// <summary>
        /// Encuentre el identificador de control en el formulario
        /// </summary>
        /// <param name="hwnd">identificador del formulario principal</param>
        /// <param name="lpszWindow ">Título del control (Texto)</param>
        /// <param name="bChild">Establecer si buscar en el formulario secundario</param>
        /// <returns>Manejador de control, si no se encuentra, devuelve IntPtr. Zero </returns>
        public static IntPtr FindWindowExMy(IntPtr hwnd, string lpszWindow, bool bChild)
        {             IntPtr iResult = IntPtr.Zero;             // Primero busque los controles en el formulario padre             iResult = FindWindowEx(hwnd, 0, null, lpszWindow);             / / Si lo encuentra, devuelve directamente el identificador de control             si (iResult != IntPtr.Cero)                 devuelve iResult;





            // Si está configurado para no buscar en el formulario secundario
            if (!bChild)
                devuelve iResult;

            // Enumerar ventanas secundarias, encontrar identificadores de control
            int i = EnumChildWindows(
            hwnd,
            (h, l) =>
            {                 IntPtr f1 = FindWindowEx(h, 0, null, lpszWindow);                 if (f1 == IntPtr.Zero)                     return true;                 else                 {                     StringBuilder title = new StringBuilder(200);                     int len;                     len = GetWindowText(hwnd, title, 200);







                    iResult = f1;
                    return false;
                }
            },
            0);
            // devuelve el resultado de la búsqueda
            return iResult;
        }

Supongo que te gusta

Origin blog.csdn.net/yunxiaobaobei/article/details/91801987#comments_25621242
Recomendado
Clasificación