PPPOE登录程序二(启动进程部分plck)
2010-08-20 13:59
183 查看
//代码全部在这里,主要是主进程挂起,等待线程正常或者异常退出
// plck.cpp : 定义应用程序的入口点。
//
#include "stdafx.h"
#include "plck.h"
#pragma comment(lib,"shell32.lib")
#define MAX_LOADSTRING 100
// 全局变量:
HINSTANCE hInst; // 当前实例
void protect(HANDLE);
// 此代码模块中包含的函数的前向声明:
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
DWORD exit_code;
// TODO: 在此放置代码。
DWORD id=0;
HANDLE hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)protect,(LPVOID)::GetCurrentProcess(),0,&id);
// protect(::GetCurrentProcess());
// MessageBox(NULL,_T("test msg!!"),_T("test"),0);
::WaitForSingleObject(hThread,INFINITE);
::GetExitCodeThread(hThread,&exit_code);
CloseHandle(hThread);
return exit_code;
}
void protect(HANDLE p)
{
DWORD exit_code=0;
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = _T("C://Program Files//Win//NtuSoftware//locked.exe");
ShExecInfo.lpParameters =NULL;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
if(!ShellExecuteEx(&ShExecInfo))
{
MessageBox(NULL,_T("开启线程错误!!"),_T("提示"),MB_OK|MB_ICONERROR);
return ;
}
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
GetExitCodeProcess(ShExecInfo.hProcess,&exit_code);
if(exit_code==69)
{
::TerminateProcess(p,69);
}
else
{
while(true)
{
/// MessageBox(NULL,_T("线程被异常卸载,电脑将5秒后重启!!"),_T("提示"),MB_OK|MB_ICONERROR);
ShellExecute(NULL,NULL,_T("shutdown"),_T("-s -t 5000 -c locked.exe进程被异常卸载,电脑将5秒后重启!!"),NULL,1);
Sleep(15*1000);
}
}
}
// plck.cpp : 定义应用程序的入口点。
//
#include "stdafx.h"
#include "plck.h"
#pragma comment(lib,"shell32.lib")
#define MAX_LOADSTRING 100
// 全局变量:
HINSTANCE hInst; // 当前实例
void protect(HANDLE);
// 此代码模块中包含的函数的前向声明:
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
DWORD exit_code;
// TODO: 在此放置代码。
DWORD id=0;
HANDLE hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)protect,(LPVOID)::GetCurrentProcess(),0,&id);
// protect(::GetCurrentProcess());
// MessageBox(NULL,_T("test msg!!"),_T("test"),0);
::WaitForSingleObject(hThread,INFINITE);
::GetExitCodeThread(hThread,&exit_code);
CloseHandle(hThread);
return exit_code;
}
void protect(HANDLE p)
{
DWORD exit_code=0;
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = _T("C://Program Files//Win//NtuSoftware//locked.exe");
ShExecInfo.lpParameters =NULL;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
if(!ShellExecuteEx(&ShExecInfo))
{
MessageBox(NULL,_T("开启线程错误!!"),_T("提示"),MB_OK|MB_ICONERROR);
return ;
}
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
GetExitCodeProcess(ShExecInfo.hProcess,&exit_code);
if(exit_code==69)
{
::TerminateProcess(p,69);
}
else
{
while(true)
{
/// MessageBox(NULL,_T("线程被异常卸载,电脑将5秒后重启!!"),_T("提示"),MB_OK|MB_ICONERROR);
ShellExecute(NULL,NULL,_T("shutdown"),_T("-s -t 5000 -c locked.exe进程被异常卸载,电脑将5秒后重启!!"),NULL,1);
Sleep(15*1000);
}
}
}
相关文章推荐
- PPPOE登录程序一(主程序部分locked)
- PPPOE登录程序三(lock动态库部分)
- PPPOE登录程序四(connect动态库部分)
- PPPOE登录程序五(配置程序部分)
- 解决Ubuntu安装VM Tools请确保您已登录客户机操作系统。在客户机中装载CD驱动器启动终端,使用tar解压缩安装程序,然后执行vmware-insall.pl安装VMware Tools。
- Linux_登录后启动指定程序,开机自启动
- C#判断当前启动程序进程是否存在
- 关于登录sql server 2005 出现“已成功与服务器建立连接,但是在登录过程中发生错取。(provider:共享内存提供程序,error:0-管道的另一端上无任何进程”的问题
- 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。)
- 进程里启动关闭程序
- iOS - 判断程序是否是第一次启动 & 进程延迟
- 启动一个程序使之成为守护进程
- 无法显示进程 没有正确安装调试器 请运行安装程序安装或修复调试器 vs2003 无法启动调试
- c#程序在部分电脑运行异常解决方法(System.Runtime.InteropServices.COMException (0x80070422): 无法启动服务)
- 系统自动以root登录,并自动启动用户程序的设置方法
- C# 关闭登录窗体,进入主窗体后,主窗体关闭,程序进程仍在运行的问题
- 远程桌面中指定在用户登录时启动的程序
- SQL SERVER问题解决:已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 命名管道提供程序, error: 0 - 管道的另一端上无任何进程。)
- VS2017 启动调试出现 无法启动程序“http://localhost:15613” 操作在当前状态中是非法的。 同时附加进程也是错误的解决方法
- 简单掌握Windows中C#启动外部程序进程的方法