如何在c#.net中部署Win32 API

时间:2015-03-05 10:28:24

标签: c# winforms winapi memory-management

我正在使用c#.net开发winform应用程序。我的winform应用程序正在使用以下组件 1)赢得32个dll(使用System.Runtime.InteropServices) 2)计时器(计数3)(System.Timers) 3)Excel Interop

应用程序的内存根本没有下降。由于计时器连续运行所以我无法处理 所以想实现配置模式。

是否有必要将win32 API与Excel interop区分开来。 如有必要,请您建议调用和处理win32 API的最佳方法。 下面列出了应用程序中使用的一些Win32 API。

    DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    static extern uint RegisterWindowMessage(string lpString);


    [DllImport("wininet.dll")]
    private extern static bool InternetGetConnectedState(out int netConnection, int val);


    [DllImport("Oleacc.dll")]
    private static extern int AccessibleObjectFromWindow(IntPtr hwnd, uint dwObjectID, byte[] riid, ref Excel.Window ptr);


    [DllImport("WtsApi32.dll")]
    private static extern bool WTSRegisterSessionNotification(IntPtr hWnd, [MarshalAs(UnmanagedType.U4)]int dwFlags);

    [DllImport("WtsApi32.dll")]
    private static extern bool WTSUnRegisterSessionNotification(IntPtr hWnd);

1 个答案:

答案 0 :(得分:-1)

函数调用中的hWnd参数都是窗口句柄。作为一般规则,无论何时在Windows API中使用窗口句柄,都需要使用CloseHandle函数显式释放它