我正在将IntPtr
传递给函数SendMessageTimeout
,如下所示。
SendMessageTimeout
是属于user32.dll的。
我不知道这个DLL如何将内存改为作为参考传递的IntPtr
,即result
。
如何释放传递给此函数的IntPtr
内存?
[DllImport("user32")]
public static extern int SendMessageTimeout(
int hwnd, int msg, int wparam, int lparam,
int fuFlags, int uTimeout, IntPtr lpdwResult);
if (handle > 0 && GetWindowText(handle, Buff, nChars) > 0)
{
this.log("GetForegroundWindow : " +Buff.ToString());
foreach (string str in this.titleList)
{
if (Buff.ToString().ToLower().Contains(str.ToLower()))
{
IntPtr result = IntPtr.Zero;
if (SendMessageTimeout(handle, 0x0010, 0, 0, 0x0002, 2000, result) != 0)
DestroyWindow(handle);
killed = true;
break;
}
}
}
答案 0 :(得分:0)
完成后使用Marshal.FreeHGlobal。
您可以使用FreeHGlobal从AllocHGlobal,ReAllocHGlobal或任何等效的非托管API方法分配的全局堆中释放任何内存。
Marshal.FreeHGlobal(lpdwResult);