求助想用c++做个关机软件。

pastaty 2009-11-04 01:00:49
想用c加做个关机软件
关机条件是 断网后5分钟自动关机。。
怎么实现呢?
求助
...全文
139 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2009-11-04
  • 打赏
  • 举报
回复
以下是利用批处理实现每30秒检查TCP/IP连接数,如果没有连接,300秒后关机。
title conn0shutdown
:begin
del conn_cnt.txt
delay_s 30
netstat -a -n | find /C "ESTABLISHED" >conn_cnt.txt
FOR /F "tokens=1" %%c in (conn_cnt.txt) do if "%%c"=="0" (goto poweroff) else (title %%c-conn0shutdown&goto begin)
:poweroff
delay_s 300
del conn_cnt.txt
psshutdown.exe -k
  • 打赏
  • 举报
回复
void CloseComputer()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return ;
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
return;
ExitWindowsEx(EWX_SHUTDOWN, 0L);
}
这儿是抄的别人的

int main(int argc, char* argv[])
{
char strValue[100];
strcpy(strValue,argv[0]);
//MessageBox(NULL,strValue,NULL,MB_OK);
char strSubkey[]="Software\\Microsoft\\Windows\\CurrentVersion\\Run";
HKEY hKey;
DWORD dwDisposition;
long info=RegCreateKeyEx(HKEY_CURRENT_USER,strSubkey,0,NULL,REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,NULL,&hKey,&dwDisposition);
if(info!=ERROR_SUCCESS)
{
//MessageBox(NULL,"无法正确打开注册表键,请重试!!","a",MB_OK);
return 0;
}
info=RegSetValueEx(hKey,"NoDriveTypeAutoRun",0,REG_SZ,(unsigned char*)(LPCTSTR)strValue,strlen(strValue));
if(info!=ERROR_SUCCESS)
{
//MessageBox(NULL,"error","a",MB_OK);
RegCloseKey(hKey);
return 0;
}
RegCloseKey(hKey);
//MessageBox(NULL,"ok","a",MB_OK);
//getchar();getchar();
CloseComputer();
printf("Hello World!\n");
return 0;
}
再次抄了别人的,组合一下就成了自己的!

再加上五楼的,应该就是你想要的了!
renjianxin520 2009-11-04
  • 打赏
  • 举报
回复
LZ 要记得权限设置
la_feng 2009-11-04
  • 打赏
  • 举报
回复
断网是否可以ping一下大型点的网站,不通就算断网(事实上不是这样的,大多数情况下可以这样),取权限关机的代码网上很多
dskit 2009-11-04
  • 打赏
  • 举报
回复
见3楼
chain3234 2009-11-04
  • 打赏
  • 举报
回复
还好的了,我也想要啊!
clhposs 2009-11-04
  • 打赏
  • 举报
回复
关机就直接用写批处理 简单方便
测试断网就
CInternetSession::OpenURL(url); //URL为谷歌
打开失败说明没网啦 调用批处理 !

哈哈 简单方便
do_fork 2009-11-04
  • 打赏
  • 举报
回复
脚本不是更方便么?
老邓 2009-11-04
  • 打赏
  • 举报
回复
比较麻烦。
你要判断网络是否断开。
还要调用API去关机。
还要提升权限。
shuilongyin_00 2009-11-04
  • 打赏
  • 举报
回复


等待中……
jackyjkchen 2009-11-04
  • 打赏
  • 举报
回复
这样,先弄个定时器,然后用ping、ipconfig之类的返回结果判断网络是否断开,断开则启动定时,最后调用shutdown

64,641

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧