IntPtr
を次のように関数SendMessageTimeout
に渡しています。 SendMessageTimeout
はuser32.dllに属します。IntPtrの空きメモリ
このDLLがすべてIntPtr
に渡されたメモリをどのように調べているかわかりません。つまり、です。
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;
}
}
}
ドキュメントには、このパラメータがオプションであると記載されているので、省略しないでください。 (すなわち 'IntPtr.Zero'を渡します)。 –
ありがとうございます.Yeah私はIntPtr.Zeroを渡すことが私にとって理にかなっていると思います。 Btw私はこのパラメータを使用する必要がある場合は、ポインタをリリースする適切な方法はありますか?私はuser32.dll関数 – Gajukorse
のいずれかの適切なドキュメントを見つけられませんでした。グーグルでは、発信者がメモリを解放する責任を負っているのか、このメモリを解放するために "システム"に頼ることができるかどうかについて本当の手がかりはありません。 –