FindWindowEx de user32.dll está devolviendo un identificador de cero y un código de error de 127 usando dllimport

Necesito manejar otra aplicación de Windows programáticamente, buscando en Google encontré una muestra que maneja la calculadora de Windows usando DLLImport Attribute e importando las funciones user32.dll en las administradas en C #.

La aplicación se está ejecutando, estoy obteniendo el identificador de la ventana principal, es decir, la calculadora, pero el código posterior no funciona. El método FindWindowEx no devuelve los identificadores de los elementos secundarios de la Calculadora como botones y cuadro de texto.

He intentado usar SetLastError = True en DLLImport y descubrí que obtengo un código de error 127 que es "Procedimiento no encontrado".

Este es el enlace desde donde obtuve la aplicación de muestra:

http: //www.codeproject.com/script/Articles/ArticleVersion.aspx? aid = 14519 & av = 34503

Por favor, ayuda si alguien sabe cómo resolverlo.

UPDATE: El DLLImport es:

[DllImport("user32.dll", SetLastError = true)]
        public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className,  string  windowTitle);

El código que no funciona es:

hwnd=FindWindow(null,"Calculator"); // This is working, I am getting handle of Calculator

// The following is not working, I am getting hwndChild=0 and err = 127
hwndChild = FindWindowEx((IntPtr)hwnd,IntPtr.Zero,"Button","1");

                Int32 err = Marshal.GetLastWin32Error();

Respuestas a la pregunta(3)

Su respuesta a la pregunta