管理されていないアプリケーションから関数を挿入および迂回するためのC#ライブラリであるEasyHookを使用しています。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);
そして私のフックは:
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セットアップの動作条件をコンパイル、編集、および確認しました。これは単なるケーシングとフックのみです。