/// <summary> /// 加载程序集加载失败事件 /// </summary> static Program() { IntPtr hUser32 = GetModuleHandle("user32.dll"); IntPtr SetProcessDPIAware = GetProcAddress(hUser32, "SetProcessDPIAware"); if (SetProcessDPIAware != IntPtr.Zero) { FarProc setProcessDpiAware = (FarProc)Marshal.GetDelegateForFunctionPointer(SetProcessDPIAware, typeof(FarProc)); setProcessDpiAware(); } AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; }
static void Main() { // SetProcessDPIAware是Vista以上才有的函数,需兼容XP的话不能直接调用,需按如下所示间接调用 IntPtr hUser32 = GetModuleHandle("user32.dll"); IntPtr addrSetProcessDPIAware = GetProcAddress(hUser32, "SetProcessDPIAware"); if (addrSetProcessDPIAware != IntPtr.Zero) { FarProc SetProcessDPIAware = (FarProc)Marshal.GetDelegateForFunctionPointer(addrSetProcessDPIAware, typeof(FarProc)); SetProcessDPIAware(); } // C#的原有代码 Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); }