⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 win32.cs

📁 报刊广告管理系统。CSharp编写
💻 CS
字号:
using System;
using System.Runtime.InteropServices;

namespace WWAM
{
	/// <summary>
	/// Win32 的摘要说明。
	/// </summary>
	/// <summary>
	/// WinAPI 的摘要说明。
	/// </summary>
	public class Win32
	{
		
		public const uint EM_LINESCROLL = 0x00B5;
		public const uint WM_NCLBUTTONDOWN = 0x00A1;
		public const uint WM_NCPAINT = 0x0085;
		public const uint WM_PAINT = 0x000F;
		public const uint WM_ERASEBKGND = 0x0014;

		[DllImport("User32.dll", CharSet = CharSet.Auto)]
		public static extern int SendMessage(IntPtr hWnd, uint Msg, uint wParam, uint lparam);

		/// <summary>
		/// 禁止在窗口绘画
		/// </summary>
		/// <param name="hWnd"></param>
		/// <returns></returns>
		[DllImport("User32.dll", CharSet = CharSet.Auto)]
		public static extern bool LockWindowUpdate(IntPtr hWnd);

		/// <summary>
		/// 释放鼠标捕获
		/// </summary>
		/// <returns></returns>
		[DllImport("User32.dll", CharSet = CharSet.Auto)]
		public static extern bool ReleaseCapture();

		[DllImport("User32.dll", CharSet = CharSet.Auto)]
		public static extern IntPtr GetWindowDC(IntPtr hWnd);

		#region OneInstance

		[DllImport("Kernel32.dll", CharSet = CharSet.Auto)] 
		public static extern IntPtr OpenMutex(uint dwDesiredAccess, int bInheritHandle, string lpName); 

		[DllImport("Kernel32.dll", CharSet = CharSet.Auto)] 
		public static extern IntPtr CreateMutex(IntPtr lpMutexAttributes, int bInitialOwner, string lpName); 

		public static bool IsFirst(string appId) 
		{ 
			bool result = false; 

			if ( Win32.OpenMutex(0x1F0001, 0, appId) == IntPtr.Zero)
			{ 
				Win32.CreateMutex(IntPtr.Zero, 0, appId);
				result = true; 
			} 

			return result; 
		}

		#endregion

		#region 继承SendMessge
		/// <summary>
		/// 带Scroll的控件滑到底部(主要用于RichTextBox一类控件)
		/// </summary>
		/// <param name="controlHandle">控件句柄</param>
		public static void ScrollToBottom(IntPtr controlHandle)
		{
			uint SB_BOTTOM = 0x0007;
			SendMessage(controlHandle , EM_LINESCROLL , SB_BOTTOM , 0 );
		}

		/// <summary>
		/// 窗体事件
		/// </summary>
		/// <param name="form"></param>
		/// <param name="param"></param>
		private static void FormEvent(System.Windows.Forms.Form form,FormEventParam param)
		{
			ReleaseCapture();
			SendMessage(form.Handle, WM_NCLBUTTONDOWN , (uint)param, 0);
		}

		public enum FormEventParam
		{
			HTCAPTION = 0x0002,
			HTLEFT = 0x000A,
			HTRIGHT = 0x000B,
			HTTOP = 0x000C,
			HTTOPLEFT = 0x000D,
			HTTOPRIGHT = 0x000E,
			HTBOTTOM = 0x000F,
			HTBOTTOMLEFT = 0x0010,
			HTBOTTOMRIGHT = 0x0011,

		}
		/// <summary>
		/// 移动窗体
		/// </summary>
		/// <param name="formHandle">窗体句柄</param>
		public static void FormMove(System.Windows.Forms.Form form)
		{
			FormEvent(form , FormEventParam.HTCAPTION );
		}
		/// <summary>
		/// 改变窗体大小
		/// </summary>
		/// <param name="formHandle">窗体句柄</param>
		/// <param name="mParam"/>改变方向</param>
		public static void FormResize(System.Windows.Forms.Form form , FormEventParam mParam )
		{
			FormEvent(form , mParam );
		}
		#endregion

		#region 声音相关
		[DllImport("winmm.dll", CharSet = CharSet.Auto)]
		public static extern int PlaySound(string lpszName, int hModule, int dwFlags);	
		
		public enum PlayingFlags : uint 
		{
			SND_SYNC = 0x00,
			SND_ASYNC = 0x01,
			SND_NODEFAULT = 0x02,
			SND_MEMORY = 0x04,
			SND_ALIAS = 0x010000,
			SND_FILENAME = 0x020000,
			SND_RESOURCE = 0x040004,
			SND_ALIAS_ID = 0x0110000,
			SND_ALIAS_START = 0,
			SND_LOOP = 0x08,
			SND_NOSTOP = 0x010,
			SND_VALID = 0x01F,
			SND_NOWAIT = 0x02000,
			SND_PURGE = 0x40
		}
		#endregion

		#region 模拟鼠标事件
		[DllImport("User32.dll", CharSet = CharSet.Auto)]
		public static extern bool SetCursorPos(int X, int Y);

		[DllImport("User32.dll", CharSet = CharSet.Auto)]
		public static extern bool GetCursorPos(out MousePoint lpPoint);

		public struct MousePoint
		{
			public int x;
			public int y;
		}

		public static System.Drawing.Point GetMousePos()
		{
			MousePoint mp;
			GetCursorPos(out mp);
			return new System.Drawing.Point(mp.x,mp.y);
		}

		[DllImport("User32.dll", CharSet = CharSet.Auto)]
		public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInfo);

		[Flags]
		public enum MouseEventFlags
		{
			LEFTDOWN = 0x00000002, 
			LEFTUP = 0x00000004,
			MIDDLEDOWN = 0x00000020,
			MIDDLEUP = 0x00000040,
			MOVE = 0x00000001,
			ABSOLUTE = 0x00008000,
			RIGHTDOWN = 0x00000008,
			RIGHTUP = 0x00000010
		} 

		

		/*
		Example :  
		//Set cursor position 
		SetCursorPos(10, 50);
		//Mouse Right Down and Mouse Right Up
		mouse_event((uint)MouseEventFlags.RIGHTDOWN,0,0,0,0); 
		mouse_event((uint)MouseEventFlags.RIGHTUP,0,0,0,0);  
		*/
		#endregion

		#region 设置系统时间
		[StructLayout(LayoutKind.Sequential)] 
		private struct SystemTime 
		{ 
			public ushort _Year; 
			public ushort _Month; 
			public ushort _DayOfWeek; 
			public ushort _Day; 
			public ushort _Hour; 
			public ushort _Minute; 
			public ushort _Second; 
			public ushort _Miliseconds; 
		} 

		[DllImport("Kernel32.dll")] 
		private static extern bool SetSystemTime( ref SystemTime sysTime ); 
		[DllImport("Kernel32.dll")] 
		private static extern void GetSystemTime(ref SystemTime sysTime); 

		public static void SetSystemTime(DateTime sysTime)
		{
			SystemTime _sysTime = new SystemTime();
			_sysTime._Year = Convert.ToUInt16(sysTime.Year); 
			_sysTime._Month = Convert.ToUInt16(sysTime.Month); 
			_sysTime._Day = Convert.ToUInt16(sysTime.Day); 
			_sysTime._DayOfWeek = Convert.ToUInt16(sysTime.DayOfWeek); 
			_sysTime._Hour = Convert.ToUInt16(sysTime.Hour); 
			_sysTime._Minute = Convert.ToUInt16(sysTime.Minute); 
			_sysTime._Second = Convert.ToUInt16(sysTime.Second); 
			_sysTime._Miliseconds = Convert.ToUInt16(sysTime.Millisecond); 
			SetSystemTime(ref _sysTime);
		}
		#endregion
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -