in sources/Google.Solutions.Terminal/Controls/VirtualTerminal.NativeMethods.cs [145:295]
public static extern HRESULT CreateTerminal(
IntPtr parent,
out IntPtr hwnd,
out TerminalSafeHandle terminal);
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern void DestroyTerminal(IntPtr terminal);
//---------------------------------------------------------------------
// I/O.
//---------------------------------------------------------------------
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern void TerminalSendOutput(
TerminalSafeHandle terminal,
string lpdata);
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern void TerminalRegisterWriteCallback(
TerminalSafeHandle terminal,
[MarshalAs(UnmanagedType.FunctionPtr)] WriteCallback callback);
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern void TerminalSendKeyEvent(
TerminalSafeHandle terminal,
ushort vkey,
ushort scanCode,
ushort flags,
bool keyDown);
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern void TerminalSendCharEvent(
TerminalSafeHandle terminal,
char ch,
ushort scanCode,
ushort flags);
//---------------------------------------------------------------------
// Resizing.
//---------------------------------------------------------------------
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern HRESULT TerminalTriggerResize(
TerminalSafeHandle terminal,
int width,
int height,
out TilSize dimensions);
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern HRESULT TerminalTriggerResizeWithDimension(
TerminalSafeHandle terminal,
TilSize dimensions,
out TilSize dimensionsInPixels);
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern HRESULT TerminalCalculateResize(
TerminalSafeHandle terminal,
int width,
int height,
out TilSize dimensions);
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern void TerminalDpiChanged(
TerminalSafeHandle terminal,
int newDpi);
//---------------------------------------------------------------------
// Scrolling.
//---------------------------------------------------------------------
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern void TerminalRegisterScrollCallback(
TerminalSafeHandle terminal,
[MarshalAs(UnmanagedType.FunctionPtr)] ScrollCallback callback);
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern void TerminalUserScroll(
TerminalSafeHandle terminal,
int viewTop);
//---------------------------------------------------------------------
// Selection.
//---------------------------------------------------------------------
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern void TerminalClearSelection(
TerminalSafeHandle terminal);
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
public static extern string TerminalGetSelection(
TerminalSafeHandle terminal);
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool TerminalIsSelectionActive(
TerminalSafeHandle terminal);
//---------------------------------------------------------------------
// Appearance.
//---------------------------------------------------------------------
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern void TerminalSetTheme(
TerminalSafeHandle terminal,
[MarshalAs(UnmanagedType.Struct)] TerminalTheme theme,
string fontFamily,
short fontSize,
int newDpi);
[DllImport(TerminalCore, CallingConvention = CallingConvention.StdCall)]
public static extern void TerminalBlinkCursor(
TerminalSafeHandle terminal);
[DllImport(TerminalCore, CallingConvention = CallingConvention.StdCall)]
public static extern void TerminalSetCursorVisible(
TerminalSafeHandle terminal, bool visible);
//---------------------------------------------------------------------
// Focus.
//---------------------------------------------------------------------
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern void TerminalSetFocus(
TerminalSafeHandle terminal);
[DllImport(TerminalCore, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern void TerminalKillFocus(
TerminalSafeHandle terminal);
[DllImport(User32, SetLastError = true)]
public static extern IntPtr SetFocus(IntPtr hWnd);
[DllImport(User32, SetLastError = true)]
public static extern IntPtr GetFocus();
[DllImport(User32, SetLastError = true)]
public static extern short GetKeyState(int keyCode);
[DllImport(User32, SetLastError = true)]
public static extern uint GetCaretBlinkTime();
}
//---------------------------------------------------------------------
// SafeHandles.
//---------------------------------------------------------------------
internal class TerminalSafeHandle : SafeHandleZeroOrMinusOneIsInvalid
{