[DllImport("hhctrl.ocx", SetLastError=true, EntryPoint = "HtmlHelpW", CharSet = CharSet.Unicode)]
static extern IntPtr HtmlHelp(
IntPtr hWndCaller,
[MarshalAs(UnmanagedType.LPWStr)]
string helpFile,
HTMLHelpCommand command,
IntPtr data);
[Flags()]
public enum HTMLHelpCommand : uint
{
HH_DISPLAY_TOPIC = 0,
HH_DISPLAY_TOC = 1,
HH_DISPLAY_INDEX = 2,
HH_DISPLAY_SEARCH = 3,
HH_DISPLAY_TEXT_POPUP = 0x000E,
HH_HELP_CONTEXT = 0x000F,
HH_CLOSE_ALL = 0x0012
}
<DllImport("hhctrl.ocx", SetLastError:=True, EntryPoint:="HtmlHelpW", CharSet:=CharSet.Unicode)> _
Function HTMLHelp( _
ByVal hWndCaller As IntPtr, ByVal pszFile As String, _
ByVal uCommand As Integer, ByVal dwData As IntPtr) As Integer
End Function
Public Enum HTMLHelpCommand
HH_DISPLAY_TOPIC = 0
HH_DISPLAY_TOC = 1
HH_DISPLAY_INDEX = 2
HH_DISPLAY_SEARCH = 3
HH_HELP_CONTEXT = &HF
HH_CLOSE_ALL = &H12
End Enum
None.
Article "How to use the unmanaged HTML Help API from a managed Visual C# application" on support.microsoft.com
VB
HTMLHelp(Nothing, filePath, HTMLHelpCommand.HH_HELP_CONTEXT, contextID)
or
HTMLHelp(Nothing, filePath, HTMLHelpCommand.HH_DISPLAY_TOC, 0)
C#
HtmlHelp(IntPtr.Zero, filePath, HTMLHelpCommand.HH_HELP_CONTEXT, contextID)
or
HtmlHelp(IntPtr.Zero, filePath, HTMLHelpCommand.HH_DISPLAY_TOC, 0)
System.Windows.Forms.Help.ShowHelp()
[DllImport("hhctrl.ocx", SetLastError = true, EntryPoint = "HtmlHelpW", CharSet = CharSet.Unicode)]
static extern int HtmlHelp(
IntPtr hWndCaller,
[MarshalAs(UnmanagedType.LPWStr)]
string pszFile,
HTMLHelpCommand uCommand,
[MarshalAs(UnmanagedType.LPStruct)]
HH_POPUP dwData);
[StructLayout(LayoutKind.Sequential), CLSCompliant(false)]
struct COLORREF
{
uint _ColorRef;
public COLORREF(Color aValue)
{
int lRGB = aValue.ToArgb();
int n0 = (lRGB & 0xff) << 16;
lRGB = lRGB & 0xffff00;
lRGB = (lRGB | (lRGB >> 16 & 0xff));
lRGB = (lRGB & 0xffff);
lRGB = (lRGB | n0);
_ColorRef = (uint)lRGB;
}
public COLORREF(int lRGB)
{
_ColorRef = (uint)lRGB;
}
public Color ToColor()
{
int r = (int)_ColorRef & 0xff;
int g = ((int)_ColorRef >> 8) & 0xff;
int b = ((int)_ColorRef >> 16) & 0xff;
return Color.FromArgb(r, g, b);
}
public static COLORREF FromColor(System.Drawing.Color aColor)
{
return new COLORREF(aColor);
}
public static System.Drawing.Color ToColor(COLORREF aColorRef)
{
return aColorRef.ToColor();
}
}
[StructLayout(LayoutKind.Sequential)]
class POINT
{
public int x;
public int y;
public POINT()
{
}
public POINT(int x, int y)
{
this.x = x;
this.y = y;
}
}
[StructLayout(LayoutKind.Sequential)]
struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
public RECT(int left, int top, int right, int bottom)
{
this.left = left;
this.top = top;
this.right = right;
this.bottom = bottom;
}
public RECT(Rectangle r)
{
this.left = r.Left;
this.top = r.Top;
this.right = r.Right;
this.bottom = r.Bottom;
}
public static RECT FromXYWH(int x, int y, int width, int height)
{
return new RECT(x, y, x + width, y + height);
}
public Size Size
{
get
{
return new Size(this.right - this.left, this.bottom - this.top);
}
}
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
class HH_POPUP
{
internal int cbStruct = Marshal.SizeOf(typeof(HH_POPUP));
internal IntPtr hinst = IntPtr.Zero;
internal int idString;
[MarshalAs(UnmanagedType.LPWStr)]
internal string pszText;
internal POINT pt;
internal COLORREF clrForeground = new COLORREF(-1);
internal COLORREF clrBackground = new COLORREF(-1);
internal RECT rcMargins = RECT.FromXYWH(-1, -1, -1, -1);
[MarshalAs(UnmanagedType.LPWStr)]
internal string pszFont;
}
None.
Article "How to use the unmanaged HTML Help API from a managed Visual C# application" on support.microsoft.com
C#
Color back_сolor_for_popup_window = Color.FromArgb(255, 255, 192); // yellow background, as in windows
Point current_cursor_location = Control.MousePosition;
HH_POPUP param = new HH_POPUP();
param.pszText = "Without specifying the font instead of text you may obtain the abracadabra";
param.idString = 0;
param.pt = new POINT(current_cursor_location.X, current_cursor_location.Y);
param.clrBackground = COLORREF.FromColor(back_сolor_for_popup_window);
param.pszFont = "Tahoma,8";
HtmlHelp(IntPtr.Zero, null, HTMLHelpCommand.HH_DISPLAY_TEXT_POPUP, param);
System.Windows.Forms.Help.ShowPopup()