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

📄 utiilities.cs

📁 该即时通讯系统系统能够实现像QQ一样的通讯功能
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Text;
using System.Runtime.InteropServices;
using System.Drawing;


namespace LanMsg.AV
{
	#region wave
	[StructLayout(LayoutKind.Sequential)]
	public struct WAVEHDR 
	{
		public IntPtr       lpData;                 /* pointer to locked data buffer */
		public int       dwBufferLength;         /* length of data buffer */
		public int       dwBytesRecorded;        /* used for input only */
		public int   dwUser;                 /* for client's use */
		public int       dwFlags;                /* assorted flags (see defines) */
		public int       dwLoops;                /* loop control counter */
		public int  lpNext;     /* reserved for driver */
		public int   reserved;               /* reserved for driver */
	} 
	[StructLayout(LayoutKind.Sequential)]
	public struct WAVEFORMATEX
	{
		public short  wFormatTag;
		public short   nChannels;
		public int   nSamplesPerSec;
		public int   nAvgBytesPerSec;
		public short   nBlockAlign;
		public short   wBitsPerSample;
		public short   cbSize;
	}
	[StructLayout(LayoutKind.Sequential)]
	public struct PCMWAVEFORMAT 
	{
		public WAVEFORMAT  wf;
		public short        wBitsPerSample;
	} 
	[StructLayout(LayoutKind.Sequential)]
	public struct WAVEOUTCAPSA 
	{
		public short     wMid;                  /* manufacturer ID */
		public short     wPid;                  /* product ID */
		public int vDriverVersion;      /* version of the driver */
		[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
		public string    szPname;   /* product name (NULL terminated string) */
		public int   dwFormats;             /* formats supported */
		public short     wChannels;             /* number of sources supported */
		public short     wReserved1;            /* packing */
		public int   dwSupport;             /* functionality supported by driver */
	} 
	[StructLayout(LayoutKind.Sequential)]
	public struct WAVEOUTCAPSW 
	{
		public short     wMid;                  /* manufacturer ID */
		public short     wPid;                  /* product ID */
		public	int vDriverVersion;      /* version of the driver */
		[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
		public string    szPname;   /* product name (NULL terminated string) */
		public int   dwFormats;             /* formats supported */
		public short     wChannels;             /* number of sources supported */
		public short     wReserved1;            /* packing */
		public int  dwSupport;             /* functionality supported by driver */
	}
	[StructLayout(LayoutKind.Sequential)]
	public struct WAVEINCAPSW
	{
		public short    wMid;                    /* manufacturer ID */
		public short    wPid;                    /* product ID */
		public uint     vDriverVersion;        /* version of the driver */
		[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
		public string    szPname;    /* product name (NULL terminated string) */
		public int     dwFormats;               /* formats supported */
		public short    wChannels;               /* number of channels supported */
		public short    wReserved1;              /* structure packing */
	} 
	[StructLayout(LayoutKind.Sequential)]
	public struct WAVEINCAPSA 
	{
		public short     wMid;                    /* manufacturer ID */
		public short     wPid;                    /* product ID */
		public int vDriverVersion;        /* version of the driver */
		[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
		public string    szPname;    /* product name (NULL terminated string) */
		public int   dwFormats;               /* formats supported */
		public short    wChannels;               /* number of channels supported */
		public short    wReserved1;              /* structure packing */
	} 
	[StructLayout(LayoutKind.Sequential)]
	public struct WAVEFORMAT 
	{
		public short   wFormatTag;        /* format type */
		public short   nChannels;         /* number of channels (i.e. mono, stereo, etc.) */
		public int  nSamplesPerSec;    /* sample rate */
		public int  nAvgBytesPerSec;   /* for buffer estimation */
		public short   nBlockAlign;       /* block size of data */
	} 

	public delegate void waveProc(IntPtr hwi,int uMsg,int dwInstance,ref WAVEHDR hdr,int dwParam2);

	#endregion


	#region video

	public delegate int capErrorCallback(
	IntPtr hWnd,  
	int nID,    
	string lpsz 
	);
	public delegate int capVideoStreamCallback(
	IntPtr hWnd,         
	ref VIDEOHDR lpVHdr  
	);

	[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
	public struct VIDEOHDR 
	{
		public	IntPtr      lpData;                 /* pointer to locked data buffer */
		public	int       dwBufferLength;         /* Length of data buffer */
		public	int       dwBytesUsed;            /* Bytes actually used */
		public	int       dwTimeCaptured;         /* Milliseconds from start of stream */
		public	int   dwUser;                 /* for client's use */
		public	int       dwFlags;                /* assorted flags (see defines) */
		public	int   dwReserved;          /* reserved for driver */
	} 
	[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
	public struct CaptureParms 
	{
		public	int       dwRequestMicroSecPerFrame;  // Requested capture rate
		public	bool        fMakeUserHitOKToCapture;    // Show "Hit OK to cap" dlg?
		public	uint        wPercentDropForError;       // Give error msg if > (10%)
		public	bool        fYield;                     // Capture via background task?
		public	int       dwIndexSize;                // Max index size in frames (32K)
		public	uint        wChunkGranularity;          // Junk chunk granularity (2K)
		public	bool        fUsingDOSMemory;            // Use DOS buffers?
		public	uint        wNumVideoRequested;         // # video buffers, If 0, autocalc
		public	bool        fCaptureAudio;              // Capture audio?
		public	uint        wNumAudioRequested;         // # audio buffers, If 0, autocalc
		public	uint        vKeyAbort;                  // Virtual key causing abort
		public	bool        fAbortLeftMouse;            // Abort on left mouse?
		public	bool        fAbortRightMouse;           // Abort on right mouse?
		public	bool        fLimitEnabled;              // Use wTimeLimit?
		public	uint        wTimeLimit;                 // Seconds to capture
		public	bool        fMCIControl;                // Use MCI video source?
		public	bool        fStepMCIDevice;             // Step MCI device?
		public	int       dwMCIStartTime;             // Time to start in MS
		public	int       dwMCIStopTime;              // Time to stop in MS
		public	bool        fStepCaptureAt2x;           // Perform spatial averaging 2x
		public	int        wStepCaptureAverageFrames;  // Temporal average n Frames
		public	int       dwAudioBufferSize;          // Size of audio bufs (0 = default)
		public	int        fDisableWriteCache;         // Attempt to disable write cache
		public	int        AVStreamMaster;             // Which stream controls length?
	} 
	[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
	public  struct BITMAPINFOHEADER
	{
		public	int  biSize; 
		public	int   biWidth; 
		public	int   biHeight; 
		public	short   biPlanes; 
		public	short   biBitCount; 
		public	int  biCompression; 
		public	int  biSizeImage; 
		public	int   biXPelsPerMeter; 
		public	int   biYPelsPerMeter; 
		public	int  biClrUsed; 
		public	int  biClrImportant; 
	} 
	[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
	public struct BITMAPINFO 
	{ 
		public	BITMAPINFOHEADER bmiHeader; 
		public	int          bmiColors; 
	}
	[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
	public struct CAPSTATUS 
	{
		public	int        uiImageWidth;               // Width of the image
		public	int        uiImageHeight;              // Height of the image
		public	bool        fLiveWindow;                // Now Previewing video?
		public	bool        fOverlayWindow;             // Now Overlaying video?
		public	bool        fScale;                     // Scale image to client?
		public	Point       ptScroll;                   // Scroll position
		public	bool        fUsingDefaultPalette;       // Using default driver palette?
		public	bool        fAudioHardware;             // Audio hardware present?
		public	bool        fCapFileExists;             // Does capture file exist?
		public	int       dwCurrentVideoFrame;        // # of video frames cap'td
		public	int       dwCurrentVideoFramesDropped;// # of video frames dropped
		public	int       dwCurrentWaveSamples;       // # of wave samples cap'td
		public	int       dwCurrentTimeElapsedMS;     // Elapsed capture duration
		public	IntPtr    hPalCurrent;                // Current palette in use
		public	bool        fCapturingNow;              // Capture in progress?
		public	int       dwReturn;                   // Error value after any operation
		public	int        wNumVideoAllocated;         // Actual number of video buffers
		public	int        wNumAudioAllocated;         // Actual number of audio buffers
	} 
	#endregion


	#region mixer

	[StructLayout(LayoutKind.Sequential)]
	public struct MIXERCAPS 
	{
		public short wMid;
		public short wPid;
		public int vDriverVersion;
		[MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]
		public string szPname;
		public int fdwSupport;
		public int cDestinations;
	}
	/*
	 * typedef struct { 
    DWORD cbStruct; 
    DWORD dwControlID; 
    DWORD dwControlType; 
    DWORD fdwControl; 
    DWORD cMultipleItems; 
    CHAR  szShortName[MIXER_SHORT_NAME_CHARS]; 
    CHAR  szName[MIXER_LONG_NAME_CHARS]; 
    union { 
        struct { 
            LONG lMinimum; 
            LONG lMaximum; 
        }; 
        struct { 
            DWORD dwMinimum; 
            DWORD dwMaximum; 
        }; 
        DWORD dwReserved[6]; 
    } Bounds; 
    union { 
        DWORD cSteps; 
        DWORD cbCustomData; 
        DWORD dwReserved[6]; 
    } Metrics; 
} MIXERCONTROL, *PMIXERCONTROL, FAR *LPMIXERCONTROL; 

	*/
	[StructLayout(LayoutKind.Explicit,Size=148)]
	public struct MIXERCONTROL
	{ 
		[FieldOffset(0)]
		public int cbStruct; 
		[FieldOffset(4)]
		public int dwControlID; 
		[FieldOffset(8)]
		public int dwControlType; 
		[FieldOffset(12)]
		public int fdwControl; 
		[FieldOffset(16)]
		public int cMultipleItems; 
		[FieldOffset(20)]
		[MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)]
		string  szShortName; 
		[FieldOffset(36)]
		[MarshalAs(UnmanagedType.ByValTStr,SizeConst=64)]
		string  szName; 
		[FieldOffset(100)]
		public Volume Bounds;
		[FieldOffset(124)]
		public int Metrics; 
	} 
	public struct Volume
	{
		public int dwMinimum; 
		public int dwMaximum; 
	}
	[StructLayout(LayoutKind.Sequential)]
	public struct MIXERCONTROLDETAILS 
	{
		public int cbStruct;
		public int dwControlID;
		public int cChannels;
		public int cMultipleItems;
		public int cbDetails;
		public int paDetails;
	}
	[StructLayout(LayoutKind.Sequential)]
	public class MIXERCONTROLDETAILS_BOOLEAN 
	{
		public bool fValue;
	}
	[StructLayout(LayoutKind.Sequential)]

⌨️ 快捷键说明

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