標籤:stringbu chm user color callback 協助 system pac div
系統內建的開啟CHM的方法不能指定開啟視窗的大小。
下面是System.Windows.Forms.Help.ShowHelp的介紹。
對於需要全屏(當然也可以指定大小,只需要修改參數)開啟的可以參考下面的代碼
public static class HelpFileUtility{public static void OpenHelperFileFullScreen(Control control,string fileName){Help.ShowHelp(control, fileName);control.BeginInvoke(new MethodInvoker(() => HelpFileUtility.MoveHelpWindow(new Rectangle(0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height))));}public static void MoveHelpWindow(Rectangle rc){EnumThreadWndProc callback = (hWnd, lp) => {// Check if this is the help windowStringBuilder sb = new StringBuilder(260);GetClassName(hWnd, sb, sb.Capacity);if (sb.ToString() != "HH Parent") return true;MoveWindow(hWnd, rc.Left, rc.Top, rc.Width, rc.Height, false);return false;};foreach (ProcessThread pth in Process.GetCurrentProcess().Threads){EnumThreadWindows(pth.Id, callback, IntPtr.Zero);}}// P/Invoke declarationsprivate delegate bool EnumThreadWndProc(IntPtr hWnd, IntPtr lp);[DllImport("user32.dll")]private static extern bool EnumThreadWindows(int tid, EnumThreadWndProc callback, IntPtr lp);[DllImport("user32.dll")]private static extern int GetClassName(IntPtr hWnd, StringBuilder buffer, int buflen);[DllImport("user32.dll")]private static extern bool MoveWindow(IntPtr hWnd, int x, int y, int w, int h, bool repaint);}
winform全屏開啟CHM協助文檔