В моем приложении я читаю текст окна для того же процесса. Я использую GetWindowText из User32.dll. Но когда он пытается вызвать метод, я получаю исключение «Необработанное исключение типа« System.ExecutionEngineException »произошло в aaaa.exe». Где я могу увидеть точную ошибку. И почему я получаю это исключение.
Мой код, как показано ниже.
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int GetWindowText(IntPtr hWnd,
[Out] StringBuilder lpString, int nMaxCount);
EnumDelegate enumfunc = new EnumDelegate(EnumWindowsProc);
private bool EnumWindowsProc(IntPtr win, int lParam)
{
StringBuilder sb = new StringBuilder();
GetWindowText(win, sb, 100);
if (sb.Length > 0)
{
// do something
}
}
GetWindowText
. Поскольку вы хотите прочитать текст из окна того же процесса, почему бы вам вместо этого не использовать управляемый API? - person Dirk Vollmar   schedule 06.01.2010StringBuilder
с начальной емкостью и передачи именно этой емкости в качестве значения `nMaxCount` функцииGetWindowText
. Это должно делать свое дело. Если вы этого не сделаете, ваш объект построителя строк имеет пустой буфер, и GetWindowText не сможет записать в него (и в качестве побочного узла для будущих публикаций: сделайте отступ в коде на 4 пробела или нажмите Форматировать как код кнопка, которая сделает код красиво отформатированным). - person Dirk Vollmar   schedule 07.01.2010