如何让一个程序在运行1分钟后自动关闭
想让一个xx.exe的软件,在每次点击运行后一定一时间比如1分钟后自动关闭该程序,应该怎么弄.最好是帮我写个批处理,简单些....
想让一个xx.exe的软件,在每次点击运行后一定一时间比如1分钟后自动关闭该程序,应该怎么弄.最好是帮我写个批处理,简单些.
展开
3个回答
展开全部
#include <windows.h>
#ifdef NOCONSOLE
#pragma comment(linker, "/SUBSYSTEM:windows")
#pragma comment(lib, "user32.lib")
#else
#pragma comment(linker, "/SUBSYSTEM:console")
#endif
#pragma comment(linker, "/ENTRY:entry /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcrtd.lib")
#pragma comment(lib, "kernel32.lib")
#undef RtlZeroMemory
#ifndef DEFINED_WAIT_TIME
#define DEFINED_WAIT_TIME 60000
#endif
void WINAPI RtlZeroMemory(LPVOID pMem, DWORD nLen);
int entry()
{
int nExitCode;
LPWSTR szCmd;
int nSzCmdStartIndex;
STARTUPINFOW si;
PROCESS_INFORMATION pi;
WCHAR errMsg[] = L"Can't create process.";
szCmd = GetCommandLineW();
nSzCmdStartIndex = 0;
if (*szCmd == L'"') {
nSzCmdStartIndex = 1;
while(szCmd[nSzCmdStartIndex] != L'"')
++nSzCmdStartIndex;
++nSzCmdStartIndex;
}
while(szCmd[nSzCmdStartIndex] != L' ' && szCmd[nSzCmdStartIndex] != 0)
++nSzCmdStartIndex;
if (szCmd[nSzCmdStartIndex] == 0)
return 1;
else {
while(szCmd[nSzCmdStartIndex] == L' ' && szCmd[nSzCmdStartIndex] != 0)
++nSzCmdStartIndex;
if (szCmd[nSzCmdStartIndex] == 0)
return 1;
}
RtlZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
if (CreateProcessW(NULL, &szCmd[nSzCmdStartIndex], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi) != FALSE)
{
CloseHandle(pi.hThread);
WaitForSingleObject(pi.hProcess, DEFINED_WAIT_TIME);
TerminateProcess(pi.hProcess, 1);
CloseHandle(pi.hProcess);
return 0;
}
else
{
DWORD nErrCode = GetLastError();
LPWSTR pszMsg;
#ifndef NOCONSOLE
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
#endif
int nErrMsg;
int nWritten;
if ((nErrMsg = FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ALLOCATE_BUFFER, NULL, nErrCode, LANG_SYSTEM_DEFAULT, (LPWSTR)&pszMsg, 0, NULL)) != 0)
#ifdef NOCONSOLE
MessageBoxW(NULL, pszMsg, L"Error!", MB_OK | MB_ICONERROR);
#else
WriteConsoleW(hStdout, pszMsg, nErrMsg, &nWritten, NULL);
#endif
else {
#ifdef NOCONSOLE
MessageBoxW(NULL, errMsg, L"Error!", MB_OK | MB_ICONERROR);
#else
nErrMsg = sizeof(errMsg) / sizeof(*errMsg);
WriteConsoleW(hStdout, errMsg, nErrMsg, &nWritten, NULL);
#endif
}
return 1;
}
}
批处理不会写这么高级的。就弄个C语言写的。
有控制台的版本和没有控制台的版本都有。
参数就是你要运行的程序的命令行
展开全部
需要编写一个程序,从系统那里得到正在运行的程序链表,逐一比较要操作的进程并找到后进行计时,到时间后向那个窗口发送结束运行的消息即可。这个程序因为会用到windows的一些系统资源,简单的批处理不容易办到,最好还是用c来写方便些。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
int main(){
printf("sleep 60 seconds\n");
sleep(60);
printf("ok\n");
return 0;
}
这个程序就是每次点击后一分钟就会关闭
int main(){
printf("sleep 60 seconds\n");
sleep(60);
printf("ok\n");
return 0;
}
这个程序就是每次点击后一分钟就会关闭
追问
你没明白我的意思.我是想找个批处理,比如让暴风影音每次运行一分钟后就自动关闭.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询