using System; using System.Runtime.InteropServices; using System.Text; namespace Notepad.Extensions.Logging { static class NativeMethods { [DllImport("User32.dll", CharSet = CharSet.Unicode, SetLastError = true)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("User32.dll", CharSet = CharSet.Unicode, SetLastError = true)] public static extern IntPtr FindWindowEx(IntPtr hWndParent, IntPtr hWndChildAfter, string lpszClass, string lpszWindow); public const int EM_REPLACESEL = 0x00C2; [DllImport("User32.dll", CharSet = CharSet.Unicode, SetLastError = true)] public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, [MarshalAs(UnmanagedType.LPWStr)] string lParam); public const int SCI_ADDTEXT = 2001; [DllImport("User32.dll", CharSet = CharSet.Unicode, SetLastError = true)] public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); public delegate bool EnumWindowsDelegate(IntPtr hWnd, object lParam); [DllImport("user32.dll")] public static extern bool EnumWindows(EnumWindowsDelegate lpEnumFunc, object lParam); [DllImport("User32.dll", CharSet = CharSet.Unicode)] public static extern int GetWindowText(IntPtr hWndParent, StringBuilder sb, int maxCount); [DllImport("kernel32.dll", SetLastError = true)] public static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, IntPtr dwSize, int flAllocationType, int flProtect); public const int MEM_COMMIT = 0x00001000; public const int MEM_RESERVE = 0x00002000; public const int MEM_RELEASE = 0x8000; public const int PAGE_READWRITE = 0x04; [DllImport("kernel32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool VirtualFreeEx(IntPtr hProcess, IntPtr lpAddress, IntPtr dwSize, int dwFreeType); [DllImport("User32.dll")] public static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId); [DllImport("kernel32.dll", SetLastError = true)] public static extern int WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, IntPtr nSize, out IntPtr lpNumberOfBytesWritten); } }