我必须在一些驱动程序中使用exe,如何使用c ++ ??
执行此操作我这样做
#include <stdio.h>
#include <conio.h>
#include <windows.h>
void main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
if(!CreateProcess(L"c:\\DOTNET.exe",NULL,NULL, NULL,FALSE, 0,NULL,NULL,&si,&pi ) )
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
}
else
{
printf("Prcess Creation Success");
}
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
getch();
}
但每次显示进程创建失败时出现错误代码2(即找不到指定的路径),但我只将DOTNET.exe放在c:\ DOTNET.exe。
上面的代码有什么问题。任何人都建议我......
非常感谢任何帮助..
Thabks提前。
答案 0 :(得分:1)
我刚刚测试了您的代码,它正在使用:
if(!CreateProcess(L"C:\\Program Files\\Mozilla Firefox\\firefox.exe",NULL,NULL, NULL,FALSE, 0,NULL,NULL,&si,&pi ) )
C / Win32代码的C ++ / Win32解决方案:)
void ExecuteAndWait (wstring toto)
{
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
vector<TCHAR> V( toto.length() + 1);
for (int i=0;i< (int) toto.length();i++)
V[i] = toto[i];
CreateProcess(NULL, &V[0],0, 0, FALSE, 0, 0, 0, &si, &pi);
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
答案 1 :(得分:0)
您是否正在构建Unicode可执行文件?请尝试_T(“C:\\ DOTNET.exe”)。
或者您的DOTNET.exe是否有一些未找到的依赖DLL?
答案 2 :(得分:0)
我认为您需要以不同方式调用CreateProcess()。
试试这个;
if (!CreateProcess( NULL, L"C:\\DOTNET.exe", NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi))