using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using System.Runtime.InteropServices;
|
|
/********************************************************************************
|
* 资料收集:Jonny Sun ,www.csframework.com
|
* ******************************************************************************/
|
|
namespace HideIcon
|
{
|
/// <summary>
|
/// 操作Windows窗体,系统托盘所用的API函数
|
/// </summary>
|
public class Win32API
|
{
|
public const int WM_USER = 0x400;
|
public const int WM_CLOSE = 0x10;
|
public const int WM_GETTEXT = 0x000D;
|
public const int WM_SETTEXT = 0x000C;
|
|
public const int STANDARD_RIGHTS_REQUIRED = 0xF0000;
|
public const int SYNCHRONIZE = 0x100000;
|
public const int PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF;
|
public const int PROCESS_TERMINATE = 0x1;
|
|
public const int PROCESS_VM_OPERATION = 0x8;
|
public const int PROCESS_VM_READ = 0x10;
|
public const int PROCESS_VM_WRITE = 0x20;
|
|
public const int MEM_RESERVE = 0x2000;
|
public const int MEM_COMMIT = 0x1000;
|
public const int MEM_RELEASE = 0x8000;
|
|
public const int PAGE_READWRITE = 0x4;
|
|
public const int TB_BUTTONCOUNT = (WM_USER + 24);
|
public const int TB_HIDEBUTTON = (WM_USER + 4);
|
public const int TB_GETBUTTON = (WM_USER + 23);
|
public const int TB_GETBUTTONTEXT = WM_USER + 75;
|
public const int TB_GETBITMAP = (WM_USER + 44);
|
public const int TB_DELETEBUTTON = (WM_USER + 22);
|
public const int TB_ADDBUTTONS = (WM_USER + 20);
|
public const int TB_INSERTBUTTON = (WM_USER + 21);
|
public const int TB_ISBUTTONHIDDEN = (WM_USER + 12);
|
public const int ILD_NORMAL = 0x0;
|
public const int TPM_NONOTIFY = 0x80;
|
|
public const int WS_VISIBLE = 268435456;//窗体可见
|
public const int WS_MINIMIZEBOX = 131072;//有最小化按钮
|
public const int WS_MAXIMIZEBOX = 65536;//有最大化按钮
|
public const int WS_BORDER = 8388608;//窗体有边框
|
public const int GWL_STYLE = (-16);//窗体样式
|
public const int GW_HWNDFIRST = 0;
|
public const int GW_HWNDNEXT = 2;
|
public const int SW_HIDE = 0;
|
public const int SW_SHOW = 5;
|
|
[DllImport("User32.Dll")]
|
public static extern void GetClassName(IntPtr hwnd, StringBuilder s, int nMaxCount);
|
|
[DllImport("user32.dll", EntryPoint = "SetForegroundWindow", SetLastError = true)]
|
public static extern void SetForegroundWindow(IntPtr hwnd);
|
|
[DllImport("user32.dll", EntryPoint = "GetDlgItem", SetLastError = true)]
|
public static extern IntPtr GetDlgItem(int nID, IntPtr phWnd);
|
|
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
public static extern int RegisterWindowMessage(string msg);
|
|
[DllImport("kernel32", EntryPoint = "OpenProcess")]
|
public static extern IntPtr OpenProcess(int dwDesiredAccess, IntPtr bInheritHandle, IntPtr dwProcessId);
|
|
[DllImport("kernel32", EntryPoint = "CloseHandle")]
|
public static extern int CloseHandle(IntPtr hObject);
|
|
[DllImport("user32", EntryPoint = "GetWindowThreadProcessId")]
|
public static extern IntPtr GetWindowThreadProcessId(IntPtr hwnd, ref IntPtr lpdwProcessId);
|
|
[DllImport("user32.dll")]
|
public static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
|
|
[DllImport("user32", EntryPoint = "SendMessage")]
|
public static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
|
|
[DllImport("user32", EntryPoint = "SendMessage")]
|
public static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, IntPtr lParam);
|
|
[DllImport("kernel32", EntryPoint = "ReadProcessMemory")]
|
public static extern int ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, ref IntPtr lpBuffer, int nSize, int lpNumberOfBytesWritten);
|
|
[DllImport("kernel32.dll", EntryPoint = "ReadProcessMemory")]
|
public static extern bool ReadProcessMemoryEx(IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, int nSize, ref uint vNumberOfBytesRead);
|
|
[DllImport("kernel32", EntryPoint = "ReadProcessMemory")]
|
public static extern int ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, int nSize, int lpNumberOfBytesWritten);
|
|
[DllImport("kernel32", EntryPoint = "WriteProcessMemory")]
|
public static extern int WriteProcessMemory(IntPtr hProcess, ref int lpBaseAddress, ref int lpBuffer, int nSize, ref int lpNumberOfBytesWritten);
|
|
[DllImport("kernel32", EntryPoint = "VirtualAllocEx")]
|
public static extern IntPtr VirtualAllocEx(IntPtr hProcess, int lpAddress, int dwSize, int flAllocationType, int flProtect);
|
|
[DllImport("kernel32", EntryPoint = "VirtualFreeEx")]
|
public static extern int VirtualFreeEx(IntPtr hProcess, IntPtr lpAddress, int dwSize, int dwFreeType);
|
|
[DllImport("User32.dll")]
|
public extern static int GetWindow(int hWnd, int wCmd);
|
|
[DllImport("User32.dll")]
|
public extern static int GetWindowLongA(int hWnd, int wIndx);
|
|
[DllImport("user32.dll")]
|
public static extern bool GetWindowText(int hWnd, StringBuilder title, int maxBufSize);
|
|
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
public extern static int GetWindowTextLength(IntPtr hWnd);
|
|
[DllImport("User32.dll", EntryPoint = "FindWindow")]
|
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
|
|
[DllImport("user32.dll", EntryPoint = "FindWindowEx", SetLastError = true)]
|
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
|
|
[DllImport("user32.dll", EntryPoint = "ShowWindow", SetLastError = true)]
|
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
|
|
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
|
public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
|
|
}
|
}
|