亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? server.c

?? 網絡編程實例
?? C
?? 第 1 頁 / 共 3 頁
字號:
				mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MIDDLEUP,dwX,dwY,0,0);
				mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MIDDLEDOWN,dwX,dwY,0,0);
				mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MIDDLEUP,dwX,dwY,0,0);
			}
			else if (iMessage == 8) 
			{
				mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTDOWN,dwX,dwY,0,0);
			}
			else if (iMessage == 9) 
			{
				mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTUP,dwX,dwY,0,0);
			}
			else if (iMessage == 10)
			{
				mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTDOWN,dwX,dwY,0,0);
				mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTUP,dwX,dwY,0,0);
				mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTDOWN,dwX,dwY,0,0);
				mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTUP,dwX,dwY,0,0);
			}
		}
		else
		{
			// 沒有鼠標消息則判斷是否有鍵盤消息
			fWMKeyBdMsg = FALSE;
			for (iLoop = 0;iLoop < nWMKeyBdMsg;iLoop++)
			{
				if (strcmp(pCommandNode->Command.szElement,WMKeyBdMsg[iLoop].szWMKeyBdMsg) == 0)
				{
					// 設置鍵盤消息標志
					fWMKeyBdMsg = TRUE;
					if (strcmp(WMKeyBdMsg[iLoop].szWMKeyBdMsg,"WM_KD\0") == 0)
						iMessage = 1;//按下鍵
					else if (strcmp(WMKeyBdMsg[iLoop].szWMKeyBdMsg,"WM_KU\0") == 0)
						iMessage = 2;//松開鍵

					// 移動到參數鏈表的下一個節點,Virtural 鍵碼
					pCommandNode = pCommandNode->pNext;
					vk = atoi(pCommandNode->Command.szElement);

					//移動到參數鏈表的下一個節點,按下鍵標志
					pCommandNode = pCommandNode->pNext;
					fDown = atoi(pCommandNode->Command.szElement);

					// 移動到參數鏈表的下一個節點,按鍵重復數
					pCommandNode = pCommandNode->pNext;
					cRepeat = atoi(pCommandNode->Command.szElement);

					// 移動到參數鏈表的下一個節點,標志位
					pCommandNode = pCommandNode->pNext;
					flags = atoi(pCommandNode->Command.szElement);

					break;
				}
			}

			// 如果有鍵盤消息,則處理鍵盤消息
			if (fWMKeyBdMsg)
			{
				if (iMessage == 1) //模擬按鍵消息
				{
					keybd_event((BYTE)vk,(BYTE)vk,0,0);
				}
				else if (iMessage == 2) //模擬松開鍵的消息
				{
					keybd_event((BYTE)vk,(BYTE)vk,KEYEVENTF_KEYUP,0);
				}
			}
			else // 通用消息
			{
				for (iLoop = 0;iLoop < nMsg;iLoop++)
				{
					if (strcmp(pCommandNode->Command.szElement,Msg[iLoop].szMsg) == 0)
					{
						if (strcmp(Msg[iLoop].szMsg,"WM_COMP\0") == 0)
						{
							// 移動到參數鏈表的下一個節點,壓縮級數
							pCommandNode = pCommandNode->pNext;
							iCompressionLevel = atoi(pCommandNode->Command.szElement);
						}
						else if (strcmp(Msg[iLoop].szMsg,"WM_GRID\0") == 0)
						{
							// 移動到參數鏈表的下一個節點,x網格數
							pCommandNode = pCommandNode->pNext;
							nGridX = atoi(pCommandNode->Command.szElement);

							// 移動到參數鏈表的下一個節點,y網格數
							pCommandNode = pCommandNode->pNext;
							nGridY = atoi(pCommandNode->Command.szElement);

							// 清除當前的顯示設置
							ClearDisplay(hServerWnd);
							// 初始化新的顯示設置
							InitDisplay(hServerWnd);
						}
						else if (strcmp(Msg[iLoop].szMsg,"WM_CMOD\0") == 0)
						{
							// 移動到參數鏈表的下一個節點,每個屏幕點的字節數
							pCommandNode = pCommandNode->pNext;
							bmBitsPixel = atoi(pCommandNode->Command.szElement);

							ClearDisplay(hServerWnd);
							InitDisplay(hServerWnd);
						}
					}
				}
			}
		}
	}
	// 清除命令隊列
	Clear_Command(&CommandStart);
}

// 初始化顯示變量
void InitDisplay(HWND hWnd)
{
	struct	GdiDS	Gdi;
	int		iWidthX,iHeightY,nGrid;
	int		iXGrid,iYGrid,iLoop;

	GdiStart.pNext = NULL;
	pGdiNode = &GdiStart;
	hDDC = CreateDC("DISPLAY",NULL,NULL,NULL);

	// 得到屏幕的寬度和高度
	iWidth = GetDeviceCaps(hDDC,HORZRES);
	iHeight = GetDeviceCaps(hDDC,VERTRES);

	// 分割屏幕成X網格區域
	if (nGridX > 0)
		iWidthX = iWidth/nGridX;
	else
		iWidthX = iWidth;

	// 分割屏幕成Y網格區域
	if (nGridY > 0)
		iHeightY = iHeight/nGridY;
	else
		iHeightY = iHeight;

	// 為網格創建區域的位圖和Memory DC
	if ((nGridX > 0) && (nGridY > 0))
	{
		for (iXGrid = 0;iXGrid < nGridX;iXGrid++)
		{
			for (iYGrid = 0;iYGrid < nGridY;iYGrid++)
			{
				Gdi.fChange = FALSE;
				Gdi.fDIBitmap = FALSE;

				Gdi.iGridX = iXGrid;
				Gdi.iGridY = iYGrid;

				Gdi.iWidth1 = iXGrid * iWidthX;
				Gdi.iWidth2 = iXGrid * iWidthX + iWidthX;
				Gdi.iHeight1 = iYGrid * iHeightY;
				Gdi.iHeight2 = iYGrid * iHeightY + iHeightY;

				Gdi.hMemDC = CreateCompatibleDC(hDDC);
				Gdi.hDIBitmap = CreateCompatibleBitmap(hDDC,iWidthX,iHeightY);
				SelectObject(Gdi.hMemDC,Gdi.hDIBitmap);

				// 往隊列中添加GDI信息
				pGdiNode = Add_Gdi(pGdiNode,Gdi);
			}
		}
	}
	else 
	{
		nGrid = max(nGridX,nGridY);
		for (iLoop = 0;iLoop < nGrid;iLoop++)
		{
			Gdi.fChange = FALSE;
			Gdi.fDIBitmap = FALSE;

			if (nGridX > 0)
			{
				Gdi.iGridX = iLoop;
				Gdi.iWidth1 = iLoop * iWidthX;
				Gdi.iWidth2 = iLoop * iWidthX + iWidthX;
			}
			else
			{
				Gdi.iGridX = 0;
				Gdi.iWidth1 = 0;
				Gdi.iWidth2 = iWidthX;
			}

			if (nGridY > 0)
			{
				Gdi.iGridY = iLoop;
				Gdi.iHeight1 = iLoop * iHeightY;
				Gdi.iHeight2 = iLoop * iHeightY + iHeightY;
			}
			else
			{
				Gdi.iGridY = 0;
				Gdi.iHeight1 = 0;
				Gdi.iHeight2 = iHeightY;
			}

			Gdi.hMemDC = CreateCompatibleDC(hDDC);
			Gdi.hDIBitmap = CreateCompatibleBitmap(hDDC,iWidthX,iHeightY);
			SelectObject(Gdi.hMemDC,Gdi.hDIBitmap);
			pGdiNode = Add_Gdi(pGdiNode,Gdi);
		}
	}
	hNullDC = GetDC(NULL);
}

// 清除顯示變量
void ClearDisplay(HWND hWnd)
{
	DeleteDC(hDDC);
	DeleteDC(hNullDC);
	Clear_Gdi(&GdiStart);
}

//得到區域的顯示位圖
int GetRegionDisplay(HWND hWnd)
{
	int		iWidth1,iWidth2,iHeight1,iHeight2;
	BOOL	bGotBits;
	DWORD	iLength;
	char	*pStartDIB;

	DWORD	dwLen1;
	DWORD	dwBitMapHeader1;
	char	*pDIBitmap1;
	char	*pDIB1;
	int		fChange1;
	char	*pDIBChange1;

	// 得到區域的矩形坐標
	iWidth1 = pGdiNode->Gdi.iWidth1;
	iWidth2 = pGdiNode->Gdi.iWidth2;
	iHeight1 = pGdiNode->Gdi.iHeight1;
	iHeight2 = pGdiNode->Gdi.iHeight2;

	BitBlt(pGdiNode->Gdi.hMemDC,0,0,iWidth2,iHeight2,hDDC,iWidth1,iHeight1,SRCCOPY);

	//將DDB轉化成DIB
	// 得到區域位圖信息
	GetObject(pGdiNode->Gdi.hDIBitmap,sizeof(BITMAP),&(pGdiNode->Gdi.DIBitmap));
	// 設置顏色模式
	pGdiNode->Gdi.DIBitmap.bmBitsPixel = bmBitsPixel;
	// 初始化位圖信息頭
	pGdiNode->Gdi.BMIH.biSize = sizeof(BITMAPINFOHEADER);
	pGdiNode->Gdi.BMIH.biWidth = pGdiNode->Gdi.DIBitmap.bmWidth;
	pGdiNode->Gdi.BMIH.biHeight = pGdiNode->Gdi.DIBitmap.bmHeight;
	pGdiNode->Gdi.BMIH.biPlanes = 1;
	pGdiNode->Gdi.BMIH.biBitCount = (WORD)pGdiNode->Gdi.DIBitmap.bmPlanes * (WORD)pGdiNode->Gdi.DIBitmap.bmBitsPixel;
	pGdiNode->Gdi.BMIH.biCompression = BI_RGB;
	pGdiNode->Gdi.BMIH.biSizeImage = 0;
	pGdiNode->Gdi.BMIH.biXPelsPerMeter = 0;
	pGdiNode->Gdi.BMIH.biYPelsPerMeter = 0;
	pGdiNode->Gdi.BMIH.biClrUsed = 0;
	pGdiNode->Gdi.BMIH.biClrImportant = 0;

	//設置區域的顏色數
	pGdiNode->Gdi.nColors = 1 << pGdiNode->Gdi.BMIH.biBitCount;
	if (pGdiNode->Gdi.nColors > 256)
		pGdiNode->Gdi.nColors = 0; 
	// 計算為位圖信息頭和彩色表分配內存所需的尺寸
	pGdiNode->Gdi.dwLen = (DWORD)(sizeof(BITMAPINFOHEADER) + pGdiNode->Gdi.nColors * sizeof(RGBQUAD));

	if (!pGdiNode->Gdi.fDIBitmap)
	{
		pGdiNode->Gdi.pDIB = (char *)malloc(pGdiNode->Gdi.dwLen);
		pStartDIB = pGdiNode->Gdi.pDIB;
	}

	pGdiNode->Gdi.lpBMIH = (LPBMIH)pGdiNode->Gdi.pDIB;
	*(pGdiNode->Gdi.lpBMIH) = pGdiNode->Gdi.BMIH;
	GetDIBits(hNullDC,pGdiNode->Gdi.hDIBitmap,0L,(DWORD)pGdiNode->Gdi.BMIH.biHeight,(LPBYTE)NULL,(LPBITMAPINFO)pGdiNode->Gdi.lpBMIH,DIB_RGB_COLORS);

	// 以計算的尺寸設置區域位圖信息頭
	pGdiNode->Gdi.BMIH = *(pGdiNode->Gdi.lpBMIH);
	// 保存位圖信息頭的大小
	pGdiNode->Gdi.dwBitMapHeader = pGdiNode->Gdi.dwLen;
	pGdiNode->Gdi.dwLen += (DWORD)(pGdiNode->Gdi.BMIH.biSizeImage);
	if (!pGdiNode->Gdi.fDIBitmap)
	{
		pGdiNode->Gdi.pDIB = pStartDIB;
		pGdiNode->Gdi.pDIB = (char *)realloc(pGdiNode->Gdi.pDIB,pGdiNode->Gdi.dwLen);
	}

	pGdiNode->Gdi.lpBMIH = (LPBMIH)pGdiNode->Gdi.pDIB;
	bGotBits = GetDIBits(hNullDC,pGdiNode->Gdi.hDIBitmap,0L,(DWORD)pGdiNode->Gdi.BMIH.biHeight,(LPBYTE)pGdiNode->Gdi.lpBMIH + (pGdiNode->Gdi.BMIH.biSize + pGdiNode->Gdi.nColors * sizeof(RGBQUAD)),(LPBITMAPINFO)pGdiNode->Gdi.lpBMIH,DIB_RGB_COLORS);

	// 比較區域DIBS之前和之后的變化
	if (pGdiNode->Gdi.fDIBitmap)
	{
		dwLen1 = pGdiNode->Gdi.dwLen;
		dwBitMapHeader1 = pGdiNode->Gdi.dwBitMapHeader;
		pDIBitmap1 = pGdiNode->Gdi.pDIBitmap;
		pDIB1 = pGdiNode->Gdi.pDIB;
		fChange1 = pGdiNode->Gdi.fChange;

		// 每次4個字節的比較兩副位圖,注意要跳過位圖的頭部
		__asm
		{
			MOV		ECX,dwLen1
			SUB		ECX,dwBitMapHeader1
			SHR		ECX,2 
			MOV		EDX,dwBitMapHeader1
			MOV		ESI,pDIBitmap1
			ADD		ESI,EDX
			MOV		EDI,pDIB1
			ADD		EDI,EDX
			REP		CMPSD
			JNZ		SetFlagRegion1
			MOV		fChange1,FALSE
			JMP		ExitRegion1
			SetFlagRegion1:
			MOV		fChange1,TRUE
			ExitRegion1:
		}

		//設置變化狀態
		pGdiNode->Gdi.fChange = fChange1;
		// 為兩副區域DIB的差別建立一個新的DIB
		if (pGdiNode->Gdi.fChange)
		{
			DWORD		iZeros = 0;
			iLength = (pGdiNode->Gdi.dwLen - pGdiNode->Gdi.dwBitMapHeader);
			pGdiNode->Gdi.pDIBChange = pGdiNode->Gdi.pDIBChangeStart;
			pDIBChange1 = pGdiNode->Gdi.pDIBChange;

			__asm
			{
				MOV		ECX,iLength 
				SHR		ECX,2 
				MOV		EDI,pDIBChange1
				MOV		ESI,pDIB1
				ADD		ESI,dwBitMapHeader1
				MOV		EDX,pDIBitmap1
				ADD		EDX,dwBitMapHeader1
				SubtractRegion:
				LODSD
				SUB		EAX,[EDX]
				ADD		EDX,4
				STOSD
				DEC		ECX
				JNZ		SubtractRegion
			}

			//拷貝到全局區域的DIB
			memblast(pGdiNode->Gdi.pDIBitmap,pGdiNode->Gdi.pDIB,pGdiNode->Gdi.dwLen);
			// 設置壓縮長度
			pGdiNode->Gdi.dwCompress = pGdiNode->Gdi.dwLen - pGdiNode->Gdi.dwBitMapHeader;
			// 設置數據的起始位
			pGdiNode->Gdi.iStartPos = pGdiNode->Gdi.dwBitMapHeader;
		}
	}
	else
	{
		iLength = (pGdiNode->Gdi.dwLen);
		pGdiNode->Gdi.pDIBitmap = (char *)malloc(iLength);
		pGdiNode->Gdi.pDIBChange = (char *)malloc(iLength);
		pGdiNode->Gdi.pDIBChangeStart = pGdiNode->Gdi.pDIBChange;
		memblast(pGdiNode->Gdi.pDIBitmap,pGdiNode->Gdi.pDIB,pGdiNode->Gdi.dwLen);
		memblast(pGdiNode->Gdi.pDIBChange,pGdiNode->Gdi.pDIB,pGdiNode->Gdi.dwLen);

		// 不需要再分配內存
		pGdiNode->Gdi.fDIBitmap = TRUE;
		pGdiNode->Gdi.fChange = TRUE;

		pGdiNode->Gdi.dwCompress = pGdiNode->Gdi.dwLen;
		pGdiNode->Gdi.iStartPos = 0;
	}

	return pGdiNode->Gdi.fChange;
}

// 發送Resolution到客戶端
void SendResolution(SOCKET MySocket)
{
	char	szMessage[81];
	DWORD	iSent,iRecv;

	// 建立屏幕寬度
	memset(szMessage,'\0',sizeof(szMessage));
	sprintf(szMessage,"%d",iWidth);
	iSent = Transmit(MySocket,szMessage,strlen(szMessage));

	// 接收確認
	memset(szMessage,'\0',sizeof(szMessage));
	iRecv = recv(MySocket,szMessage,81,0);
	szMessage[iRecv] = '\0';

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人动漫一区| 亚洲欧美日韩人成在线播放| 欧美日韩成人综合| 色综合天天综合网天天狠天天| 国产精品99久久久久久久女警| 国产精品996| 国产成人啪免费观看软件| 韩国av一区二区| 国产剧情一区二区三区| 九九视频精品免费| 国产精品影视网| 成人午夜在线播放| 91影院在线观看| 欧美日韩在线播放三区四区| 欧美视频三区在线播放| 欧美日韩国产乱码电影| 日韩午夜在线观看视频| 久久久久免费观看| 成人免费一区二区三区在线观看| 亚洲色图制服丝袜| 午夜精品福利一区二区蜜股av| 裸体一区二区三区| 成人激情免费网站| 91久久一区二区| 日韩午夜在线观看视频| 中文字幕在线一区免费| 亚洲福利一区二区| 91猫先生在线| 久久成人18免费观看| 国产精品卡一卡二| 夜夜嗨av一区二区三区四季av | 久久精品国产亚洲aⅴ| 国产精品99久久久久久有的能看 | 日韩高清国产一区在线| 国产综合色视频| 欧美性极品少妇| 久久精品夜色噜噜亚洲a∨| 亚洲免费三区一区二区| 久久精品99国产精品| 99精品欧美一区| 精品国产免费一区二区三区四区 | www亚洲一区| 亚洲精品一卡二卡| 久久成人av少妇免费| 在线观看av一区| 欧美激情资源网| 奇米色777欧美一区二区| 99精品热视频| 精品福利一区二区三区| 一区二区三区中文在线观看| 国产精品一区二区久久不卡 | 日韩午夜激情免费电影| 亚洲欧洲精品一区二区精品久久久 | 69成人精品免费视频| 国产精品高潮呻吟久久| 激情文学综合丁香| 日韩一区二区免费视频| 亚洲高清免费视频| 色88888久久久久久影院按摩| 欧美激情艳妇裸体舞| 精品一区二区三区日韩| 91精品国产综合久久香蕉麻豆 | 免费成人在线观看视频| 91国在线观看| 亚洲美腿欧美偷拍| 91在线丨porny丨国产| 中文字幕乱码一区二区免费| 另类人妖一区二区av| 日韩精品资源二区在线| 蜜桃久久av一区| 欧美一区二区三区四区五区| 丝瓜av网站精品一区二区 | 国产成人综合亚洲网站| 欧美变态口味重另类| 日本成人在线看| 欧美一级免费大片| 美日韩一区二区| 精品乱人伦一区二区三区| 久久 天天综合| 久久天天做天天爱综合色| 国产一区亚洲一区| 欧美激情在线观看视频免费| 国产精品18久久久久| 国产亚洲一区字幕| 成人午夜私人影院| 伊人开心综合网| 欧美一级片免费看| 国产原创一区二区| 肉肉av福利一精品导航| 日韩免费观看2025年上映的电影| 另类小说综合欧美亚洲| 欧美国产在线观看| 91麻豆免费观看| 日本美女一区二区三区视频| 久久综合一区二区| 色综合咪咪久久| 日韩综合小视频| 日本一区二区三区四区| 91一区二区三区在线播放| 午夜激情一区二区三区| 精品成人在线观看| 91碰在线视频| 美女视频网站久久| 亚洲欧洲日韩女同| 欧美顶级少妇做爰| 岛国一区二区三区| 亚洲卡通欧美制服中文| 日韩美女视频一区二区在线观看| 懂色一区二区三区免费观看| 亚洲图片有声小说| 国产精品人妖ts系列视频| 欧美日韩国产综合一区二区| 国产高清精品久久久久| 香蕉av福利精品导航| 日本一区二区高清| 91精品国产aⅴ一区二区| 成人免费高清视频在线观看| 天天影视网天天综合色在线播放| 久久精品夜色噜噜亚洲aⅴ| 欧美日韩国产首页| av不卡免费电影| 国产精品1024久久| 日本最新不卡在线| 亚洲一区欧美一区| 欧美国产日韩a欧美在线观看 | 日韩欧美中文字幕公布| 白白色 亚洲乱淫| 国产九色精品成人porny| 日韩中文字幕亚洲一区二区va在线| 国产欧美日韩在线| 精品国产免费一区二区三区四区| 在线一区二区观看| kk眼镜猥琐国模调教系列一区二区 | 午夜免费久久看| 一区二区三区在线视频观看 | 久久电影网站中文字幕| 夜夜爽夜夜爽精品视频| 亚洲欧洲日韩综合一区二区| 欧美精品一区二区三区视频| 91精品国产91久久久久久最新毛片 | 日本在线观看不卡视频| 亚洲一区二区偷拍精品| 国产精品美女久久久久久| 精品国产一区二区三区忘忧草| 欧美精选一区二区| 欧美日本一区二区三区| 欧美日韩成人一区| 欧美男女性生活在线直播观看| 色网综合在线观看| 91啦中文在线观看| 色婷婷精品大在线视频| 色婷婷综合五月| 欧美怡红院视频| 欧美午夜一区二区三区免费大片| 91黄色激情网站| 欧美日韩在线观看一区二区 | 91日韩精品一区| 色婷婷综合在线| 欧美日韩性生活| 欧美巨大另类极品videosbest | 蜜臀久久99精品久久久久久9 | 欧美人妖巨大在线| 91精品国产综合久久婷婷香蕉| 91麻豆精品国产91久久久久久久久 | 欧美精品一区二区三区在线播放| 欧美一区二区美女| 久久综合久久综合久久综合| 亚洲国产精品精华液ab| 亚洲日本va在线观看| 亚洲国产精品久久久男人的天堂| 天堂一区二区在线免费观看| 老色鬼精品视频在线观看播放| 久久国产欧美日韩精品| 东方欧美亚洲色图在线| 色播五月激情综合网| 欧美一区午夜精品| 欧美极品美女视频| 午夜久久久影院| 国产69精品久久久久毛片| 欧美影视一区二区三区| 精品国产一区二区三区不卡| 中文字幕一区二区三区在线播放| 亚洲高清三级视频| 国产成人精品亚洲午夜麻豆| 欧美亚洲综合一区| 久久亚洲精华国产精华液| 亚洲激情成人在线| 国产麻豆精品一区二区| 欧美日韩一区小说| 中文字幕国产精品一区二区| 亚洲国产精品精华液网站| 国产精品亚洲视频| 678五月天丁香亚洲综合网| 中文字幕高清一区| 美女mm1313爽爽久久久蜜臀| 99久久国产综合精品色伊| 91精品欧美综合在线观看最新| 国产精品久久久久7777按摩| 免费观看在线色综合| 色欧美乱欧美15图片|