Когда я запускаю этот код для GetWindowText я получаю следующее сообщение об ошибке брошенной внутреннем исключения:GetWindowText() бросает ошибку и не быть пойманной Try/уловом
{ "Попытка чтения или записи в защищенной памяти. Это часто указывает на то, что другая память повреждена "}
[DllImport("user32.dll", EntryPoint = "GetWindowTextLength", SetLastError = true)]
internal static extern int GetWindowTextLength(IntPtr hwnd);
[DllImport("user32.dll", EntryPoint = "GetWindowText", SetLastError = true)]
internal static extern int GetWindowText(IntPtr hwnd, ref StringBuilder wndTxt, int MaxCount);
try{
int strLength = NativeMethods.GetWindowTextLength(wndHandle);
var wndStr = new StringBuilder(strLength);
GetWindowText(wndHandle, ref wndStr, wndStr.Capacity);
}
catch(Exception e){ LogError(e) }
у меня 2 вопроса:.
Почему ошибка не поймана в попытке поймать?
Любая идея, как я могу остановить программу сбой, когда она попадает этот тип ошибки, кроме использования TRY/поймать
Приветствия
Не следует ловить (исключение e) быть уловом (исключение e)? – hatchet
Это да, просто опечатка в вопросе. –
Можете ли вы попробовать GetWindowTExt (wndHandle, wndStr, wndStr.Capacity)? Кроме того, возможно ли, что NativeMethods.GetWindowTextLength (wndHandle) - это то, что бросает исключение? – hatchet