dllManager.LoadFun(@"user32", "GetAsyncKeyState");
object tempFlag = dllManager.Invoke(ObjArray_Parameter, TypeArray_ParameterType, ModePassArray_Parameter, Type_Return, "GetAsyncKeyState");
r = (int)tempFlag;
llManager.UnLoadDll();
public void UnLoadDll()
{
FreeLibrary(hModule);
hModule = IntPtr.Zero;
farProc = IntPtr.Zero;
}
dllManager.UnloadDll()
似乎不起作用,内存未释放,因为当我再次调用DLL时,它将继续增加内存。我该如何释放内存?
答案 0 :(得分:1)
通常,您声明了extern
函数,并且不必过多担心内存使用情况。 Windows无论如何都在内部使用此DLL。
[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Windows.Forms.Keys key);
private void button1_Click(object sender, EventArgs e)
{
short state = GetAsyncKeyState(Keys.D);
switch (state)
{
// ?
}
}
另见
http://www.pinvoke.net/default.aspx/user32.getasynckeystate
答案 1 :(得分:0)
您可以在Application Domain内加载该链接库,然后卸载该应用程序域。