8 个解决方案
#1
WinExec("test.exe",SW_HIDE);
#2
WinExec("test.exe",SW_HIDE);
#3
想后台运行必须用CreateProcess函数
#4
ShellExecute
#5
SHELL是调用了它运行一次 跟命令它在自己所在的地方运行不同
咕嘟老大能不能详细说明一下
咕嘟老大能不能详细说明一下
#6
STARTUPINFO sinfo; // 进程启动所需信息
sinfo.cb = sizeof(STARTUPINFO); // 结构体长度
memset(&sinfo, 0, sizeof(STARTUPINFO)); // 清除所有的域
sinfo.dwFlags = STARTF_FORCEOFFFEEDBACK; // 关闭回馈
sinfo.wShowWindow = SW_SHOWDEFAULT; // 使用缺省窗口
String AppName; // 应用名称
TListItem *Item = FItems->Item[CurIndex]; // 相应的列表项目
TStrings *SubItems = Item->SubItems; // 相应的子项目
AppName.printf("%s%s.exe", FAppPath.c_str(), SubItems->Strings[4].c_str());
// 组合出应用名称
if(CreateProcess(AppName.c_str(), Item->Caption.c_str(), NULL, NULL,
0, CREATE_NO_WINDOW, NULL, FAppPath.c_str(), &sinfo, &FProcessList[CurIndex]))
{
SubItems->Strings[1] = "启动"; // 设置进程的状态为启动
SubItems->Strings[2] = FormatDateTime("yyyy-mm-dd hh:mm:ss", Now());
// 填充进程启动时间
}
else FProcessList[CurIndex].hProcess = NULL; // 启动进程
sinfo.cb = sizeof(STARTUPINFO); // 结构体长度
memset(&sinfo, 0, sizeof(STARTUPINFO)); // 清除所有的域
sinfo.dwFlags = STARTF_FORCEOFFFEEDBACK; // 关闭回馈
sinfo.wShowWindow = SW_SHOWDEFAULT; // 使用缺省窗口
String AppName; // 应用名称
TListItem *Item = FItems->Item[CurIndex]; // 相应的列表项目
TStrings *SubItems = Item->SubItems; // 相应的子项目
AppName.printf("%s%s.exe", FAppPath.c_str(), SubItems->Strings[4].c_str());
// 组合出应用名称
if(CreateProcess(AppName.c_str(), Item->Caption.c_str(), NULL, NULL,
0, CREATE_NO_WINDOW, NULL, FAppPath.c_str(), &sinfo, &FProcessList[CurIndex]))
{
SubItems->Strings[1] = "启动"; // 设置进程的状态为启动
SubItems->Strings[2] = FormatDateTime("yyyy-mm-dd hh:mm:ss", Now());
// 填充进程启动时间
}
else FProcessList[CurIndex].hProcess = NULL; // 启动进程
#7
STARTUPINFO sinfo; // 进程启动所需信息
sinfo.cb = sizeof(STARTUPINFO); // 结构体长度
memset(&sinfo, 0, sizeof(STARTUPINFO)); // 清除所有的域
sinfo.dwFlags = STARTF_FORCEOFFFEEDBACK; // 关闭回馈
sinfo.wShowWindow = SW_SHOWDEFAULT; // 使用缺省窗口
PROCESS_INFORMATION pinfo;
if(CreateProcess("d:\\test\\test.exe", "test abc", NULL, NULL,
0, CREATE_NO_WINDOW, NULL, "d:\\test", &sinfo, &PInfo))
ShowMessage("启动成功");
else ShowMessage("启动失败");
sinfo.cb = sizeof(STARTUPINFO); // 结构体长度
memset(&sinfo, 0, sizeof(STARTUPINFO)); // 清除所有的域
sinfo.dwFlags = STARTF_FORCEOFFFEEDBACK; // 关闭回馈
sinfo.wShowWindow = SW_SHOWDEFAULT; // 使用缺省窗口
PROCESS_INFORMATION pinfo;
if(CreateProcess("d:\\test\\test.exe", "test abc", NULL, NULL,
0, CREATE_NO_WINDOW, NULL, "d:\\test", &sinfo, &PInfo))
ShowMessage("启动成功");
else ShowMessage("启动失败");
#8
前面的例子是项目中使用的,后面的例子更一般些,CREATE_NO_WINDOW表示没有窗口(后台运行)
#1
WinExec("test.exe",SW_HIDE);
#2
WinExec("test.exe",SW_HIDE);
#3
想后台运行必须用CreateProcess函数
#4
ShellExecute
#5
SHELL是调用了它运行一次 跟命令它在自己所在的地方运行不同
咕嘟老大能不能详细说明一下
咕嘟老大能不能详细说明一下
#6
STARTUPINFO sinfo; // 进程启动所需信息
sinfo.cb = sizeof(STARTUPINFO); // 结构体长度
memset(&sinfo, 0, sizeof(STARTUPINFO)); // 清除所有的域
sinfo.dwFlags = STARTF_FORCEOFFFEEDBACK; // 关闭回馈
sinfo.wShowWindow = SW_SHOWDEFAULT; // 使用缺省窗口
String AppName; // 应用名称
TListItem *Item = FItems->Item[CurIndex]; // 相应的列表项目
TStrings *SubItems = Item->SubItems; // 相应的子项目
AppName.printf("%s%s.exe", FAppPath.c_str(), SubItems->Strings[4].c_str());
// 组合出应用名称
if(CreateProcess(AppName.c_str(), Item->Caption.c_str(), NULL, NULL,
0, CREATE_NO_WINDOW, NULL, FAppPath.c_str(), &sinfo, &FProcessList[CurIndex]))
{
SubItems->Strings[1] = "启动"; // 设置进程的状态为启动
SubItems->Strings[2] = FormatDateTime("yyyy-mm-dd hh:mm:ss", Now());
// 填充进程启动时间
}
else FProcessList[CurIndex].hProcess = NULL; // 启动进程
sinfo.cb = sizeof(STARTUPINFO); // 结构体长度
memset(&sinfo, 0, sizeof(STARTUPINFO)); // 清除所有的域
sinfo.dwFlags = STARTF_FORCEOFFFEEDBACK; // 关闭回馈
sinfo.wShowWindow = SW_SHOWDEFAULT; // 使用缺省窗口
String AppName; // 应用名称
TListItem *Item = FItems->Item[CurIndex]; // 相应的列表项目
TStrings *SubItems = Item->SubItems; // 相应的子项目
AppName.printf("%s%s.exe", FAppPath.c_str(), SubItems->Strings[4].c_str());
// 组合出应用名称
if(CreateProcess(AppName.c_str(), Item->Caption.c_str(), NULL, NULL,
0, CREATE_NO_WINDOW, NULL, FAppPath.c_str(), &sinfo, &FProcessList[CurIndex]))
{
SubItems->Strings[1] = "启动"; // 设置进程的状态为启动
SubItems->Strings[2] = FormatDateTime("yyyy-mm-dd hh:mm:ss", Now());
// 填充进程启动时间
}
else FProcessList[CurIndex].hProcess = NULL; // 启动进程
#7
STARTUPINFO sinfo; // 进程启动所需信息
sinfo.cb = sizeof(STARTUPINFO); // 结构体长度
memset(&sinfo, 0, sizeof(STARTUPINFO)); // 清除所有的域
sinfo.dwFlags = STARTF_FORCEOFFFEEDBACK; // 关闭回馈
sinfo.wShowWindow = SW_SHOWDEFAULT; // 使用缺省窗口
PROCESS_INFORMATION pinfo;
if(CreateProcess("d:\\test\\test.exe", "test abc", NULL, NULL,
0, CREATE_NO_WINDOW, NULL, "d:\\test", &sinfo, &PInfo))
ShowMessage("启动成功");
else ShowMessage("启动失败");
sinfo.cb = sizeof(STARTUPINFO); // 结构体长度
memset(&sinfo, 0, sizeof(STARTUPINFO)); // 清除所有的域
sinfo.dwFlags = STARTF_FORCEOFFFEEDBACK; // 关闭回馈
sinfo.wShowWindow = SW_SHOWDEFAULT; // 使用缺省窗口
PROCESS_INFORMATION pinfo;
if(CreateProcess("d:\\test\\test.exe", "test abc", NULL, NULL,
0, CREATE_NO_WINDOW, NULL, "d:\\test", &sinfo, &PInfo))
ShowMessage("启动成功");
else ShowMessage("启动失败");
#8
前面的例子是项目中使用的,后面的例子更一般些,CREATE_NO_WINDOW表示没有窗口(后台运行)