FindWindowEx de user32.dll está retornando um identificador de zero e código de erro de 127 usando dllimport

Eu preciso lidar com outro aplicativo do Windows programaticamente, pesquisando no google, encontrei um exemplo que lida com a calculadora do Windows usando o DLLImport Attribute e importando as funções user32.dll para as gerenciadas em C #.

O aplicativo está sendo executado, estou recebendo o identificador da janela principal, ou seja, a própria calculadora, mas o código posterior não está funcionando. O método FindWindowEx não está retornando as alças dos filhos da Calculadora, como botões e caixa de texto.

Eu tentei usar o SetLastError = True no DLLImport e descobri que estou recebendo um código de erro 127 que é "Procedimento não encontrado".

Este é o link de onde obtive o aplicativo de amostra:

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

Por favor, ajude se alguém souber como resolvê-lo.

ATUALIZAÇÃO: O DLLImport é:

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

O código que não está funcionando é:

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();

questionAnswers(3)

yourAnswerToTheQuestion