Я использую EasyHook , библиотеку C # для ввода и обхода функций из неуправляемых приложений.Я пытаюсь зацепиться за GetDlgItemTextA , который принимает аргументы:
UINT WINAPI GetDlgItemText(
__in HWND hDlg,
__in int nIDDlgItem,
__out LPTSTR lpString,
__in int nMaxCount
);`
В моем хуке я использую его как:
[DllImport("user32.dll",
// CharSet = CharSet.Unicode,
SetLastError = true,
CallingConvention = CallingConvention.StdCall)]
static extern uint GetDlgItemTextA(IntPtr hWin, int nIDDlgItem, StringBuilder text, int MaxCount);
hook:
static uint DGetDlgItemText_Hooked(IntPtr hWin, int nIDDlgItem, StringBuilder text, int MaxCount)
{
// call original API...
uint ret = GetDlgItemTextA(hWin, nIDDlgItem, text, MaxCount);
MessageBox.Show(text.ToString());
return ret;
}
К сожалению, в тот момент, когда это вызывается, зависшее приложение вылетает.Есть ли лучший каст, который я могу использовать, чтобы успешно подключиться к этой функции?Спасибо!
Я скомпилировал, отредактировал и подтвердил рабочее состояние моей установки EasyHook.Это только оболочка и только зацепка.