创建Service程序并监控有界面的进程实现

直接上代码,比较简单,容易看懂。

需要注意的是:启动的监控程序默认桌面是WinLogon,如果登陆成功后,被启动的程序,需要设置活动桌面。(通过OpenInputDesktop和GetUserObjectInformation当前的活动桌面,然后通过SetThreadDesktop设置线程桌面)

 

// RemoteControlService.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "RemoteControlService.h"
#include <Winsvc.h>
#include "CommonClas.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#endif


TCHAR szServiceName[] = _T("Win8 Server");

DWORD dwThreadID;
HANDLE hEvent = INVALID_HANDLE_VALUE;
SERVICE_STATUS status;
SERVICE_STATUS_HANDLE hServiceStatus;


void Init();
BOOL IsServiceInstalled();
BOOL InstallService();
BOOL UninstallService();
BOOL ServiceCtrlStart();
BOOL ServiceCtrlStop();
void WINAPI ServiceMain();
void WINAPI ServiceStrl(DWORD dwOpcode);
BOOL RunRemoteControl();


// The one and only application object

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
 int nRetCode = 0;

 // initialize MFC and print and error on failure
 if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
 {
  // TODO: change error code to suit your needs
  _tprintf(_T("Fatal Error: MFC initialization failed\n"));
  nRetCode = 1;
 }
 else
 {
  // TODO: code your application's behavior here.
 }

 Init();

 dwThreadID = ::GetCurrentThreadId();

 SERVICE_TABLE_ENTRY st[] =
 {
  { szServiceName, (LPSERVICE_MAIN_FUNCTION)ServiceMain },
  { NULL, NULL }
 };

 TCHAR *lpCmdLine = argv[1];
 if ( argc == 2 )
 {
  BOOL bRet;

  if (wcsicmp(lpCmdLine, L"/install") == 0)
  {
   bRet = InstallService();
   if ( bRet == TRUE )
   {
    printf( "Install service %s success", szServiceName );
   }
   else
   {
    printf( "Install service %s failed", szServiceName );
   }
  }
  else if (wcsicmp(lpCmdLine, L"/uninstall") == 0)
  {
   bRet = UninstallService();
   if ( bRet == TRUE )
   {
    printf( "Uninstall service %s success", szServiceName );
   }
   else
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值