0
我有一個API窗口函數FindWindowEx的問題,實際上我獲得了進程的MainWindow的句柄,但是當我嘗試使用FindWindowEx檢索其中一個按鈕的句柄時,它沒有運行。 我用spy ++驗證了窗口及其按鈕,並且一切運行良好,即使我的程序返回的主窗口的句柄與spy ++的相匹配。我已經測試了由「Marshal.GetLastWin32Error()」返回的錯誤代碼, 我總是得到錯誤1008.我搜索了很多處理我的問題的舊帖子,但是我沒有找到任何解決方案。這裏是我的代碼:FindWindowEx沒有運行
DllImport("user32.dll" , CharSet = CharSet.Auto)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);
// ....
IntPtr hwnd = proc.MainWindowHandle;
string str = proc.MainWindowTitle;
Console.WriteLine("Main window Title : " + str);
Console.WriteLine("Main window Handle : " + hwnd.ToString());
//Get a handle for the "suivant" button
IntPtr hwndChild = FindWindowEx((IntPtr)hwnd, IntPtr.Zero, "Button", "suivant");
int error = Marshal.GetLastWin32Error() ;
Winforms中按鈕的類名不是「Button」。易於在Spy ++中查看。你不能使用FindWindowEx,類名是不可預知的。你需要EnumChildWindows()。並看看white.codeplex.com – 2012-03-15 15:18:14
,而不是「按鈕」從間諜++編寫的按鈕類 – Reniuz 2012-03-15 15:38:05
我看到,EnumChildWindows()允許掃描父窗口的所有子窗口,在我的情況下,我想獲得句柄爲了使on_click動作自動化,在主窗口中的按鈕。 – 2012-03-15 15:53:56