CreateProcess 打开Notepad.exe

sunyang500 2013-09-03 02:11:32
函数执行成功了,但是notepad.exe 却没有执行,也没有打开我指定的txt文件。
不知道是否有人遇到过这个问题,发出来求助一下。代码如下:
			if(!CreateProcess(L"C:\\windows\\system32\\notepad.exe",L" c:\\123.txt",NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS|CREATE_SHARED_WOW_VDM |CREATE_NEW_CONSOLE | CREATE_UNICODE_ENVIRONMENT,NULL,CurrentDir,&Sinfo,&Pinfo))
{
printf("Fail to create process ,error %d \n",GetLastError());
}
else
{
printf("Success to create Porcess ,error %d \n",GetLastError());
}

参数currentdir当前的程序路径。
...全文
1253 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunyang500 2013-09-29
  • 打赏
  • 举报
回复
引用 7 楼 u012181671 的回复:
// ********** 你的代码缺少这段**********************// STARTUPINFO Sinfo; PROCESS_INFORMATION Pinfo; ZeroMemory( &Sinfo, sizeof(Sinfo) ); Sinfo.cb = sizeof(Sinfo); ZeroMemory( &Pinfo, sizeof(Pinfo) ); // **********************************************// char szCurrentDir[MAX_PATH]; GetCurrentDirectory(MAX_PATH,szCurrentDir); if(!CreateProcess("C:\\windows\\system32\\notepad.exe"," D:\\123.txt", NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS|CREATE_SHARED_WOW_VDM | CREATE_UNICODE_ENVIRONMENT,NULL,szCurrentDir,&Sinfo,&Pinfo)) { UINT nErrCode = GetLastError(); TRACE0("Fail to create process ,error %d \n",GetLastError()); } else { printf("Success to create Porcess ,error %d \n",GetLastError()); CloseHandle(Pinfo.hProcess); CloseHandle(Pinfo.hThread); }
多谢。。。
骄傲的天使 2013-09-19
  • 打赏
  • 举报
回复
// ********** 你的代码缺少这段**********************// STARTUPINFO Sinfo; PROCESS_INFORMATION Pinfo; ZeroMemory( &Sinfo, sizeof(Sinfo) ); Sinfo.cb = sizeof(Sinfo); ZeroMemory( &Pinfo, sizeof(Pinfo) ); // **********************************************// char szCurrentDir[MAX_PATH]; GetCurrentDirectory(MAX_PATH,szCurrentDir); if(!CreateProcess("C:\\windows\\system32\\notepad.exe"," D:\\123.txt", NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS|CREATE_SHARED_WOW_VDM | CREATE_UNICODE_ENVIRONMENT,NULL,szCurrentDir,&Sinfo,&Pinfo)) { UINT nErrCode = GetLastError(); TRACE0("Fail to create process ,error %d \n",GetLastError()); } else { printf("Success to create Porcess ,error %d \n",GetLastError()); CloseHandle(Pinfo.hProcess); CloseHandle(Pinfo.hThread); }
fishion 2013-09-04
  • 打赏
  • 举报
回复
STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );
    TCHAR szPath[MAX_PATH] = {};
    GetModuleFileName(NULL, szPath, MAX_PATH);
    TCHAR *pPos = _tcsrchr(szPath, '\\');
    *pPos = 0;

    if(!CreateProcess(L"C:\\windows\\system32\\notepad.exe",L" c:\\123.txt",\
        NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS|CREATE_SHARED_WOW_VDM |CREATE_NEW_CONSOLE | CREATE_UNICODE_ENVIRONMENT,NULL,szPath,&si,&pi))
    {
        //printf("Fail to create process ,error %d \n",GetLastError());
    }
    else
    {
       // printf("Success to create Porcess ,error %d \n",GetLastError());
    }
}
我这样使用没问题
hdg3707 2013-09-04
  • 打赏
  • 举报
回复
把notepad.exe放在currentdir路径下
Eleven 2013-09-04
  • 打赏
  • 举报
回复
STARTUPINFO si = {sizeof(si)};
	PROCESS_INFORMATION pi = {0};
	TCHAR szCmd[MAX_PATH] = _T(" c:\\123.txt");
	if(!CreateProcess(_T("C:\\windows\\system32\\notepad.exe"), szCmd,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS|CREATE_SHARED_WOW_VDM |CREATE_NEW_CONSOLE | CREATE_UNICODE_ENVIRONMENT,NULL,NULL, &si, &pi))
	{
		CloseHandle(pi.hThread);
		CloseHandle(pi.hProcess);
	}
fishion 2013-09-04
  • 打赏
  • 举报
回复
引用 3 楼 sunyang500 的回复:
这段程序我是在图形化的MFC里面写的,吧这段代码拿出来放到控制台下的程序就没有问题了,可以打开c:\123.txt 现在的问题是我createprocess这个函数返回成功了,没有报错,但是notepad没有打开。 二楼提供的想法我之前也做了,但是仍然无效的。 你们有试过在MFC的界面程序里面实现这段代码么? 请帮吗试试看有没有跟我一样的现象。
我就是在VS08 MFC下测试的
sunyang500 2013-09-04
  • 打赏
  • 举报
回复
引用 1 楼 hdg3707 的回复:
把notepad.exe放在currentdir路径下
试过,不行。 我是在MFC程序里点击一个Button,打开文件。控制台下我也是可以打开的,就是MFC界面程序里面不行。
sunyang500 2013-09-04
  • 打赏
  • 举报
回复
这段程序我是在图形化的MFC里面写的,吧这段代码拿出来放到控制台下的程序就没有问题了,可以打开c:\123.txt 现在的问题是我createprocess这个函数返回成功了,没有报错,但是notepad没有打开。 二楼提供的想法我之前也做了,但是仍然无效的。 你们有试过在MFC的界面程序里面实现这段代码么? 请帮吗试试看有没有跟我一样的现象。

15,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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