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