createprocess(C语言中的createprocess()函数参数是什么)
本文目录
- C语言中的createprocess()函数参数是什么
- createprocess失败 代码2 怎么解决
- 运行文件createprocess失败,显示错误码,该如何解决
- 用createprocess函数创建进程的意义是什么
- 怎样用createprocess运行另外一个程序
C语言中的createprocess()函数参数是什么
#include 《windows.h》
BOOL CreateProcess
(
LPCTSTRlpApplicationName,
LPTSTRlpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes。
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
详见百度百科
createprocess失败 代码2 怎么解决
使用CFileDialog选择文件了以后,会在其内部调用“SetCurrentDirectory“设置被选择文件的目录为当前路径。
因此如果文件和程序不在同一路径,那么CreateProcess使用内部调用的相对路径就可能找不到对应程序,所以导致createprocess出现错误代码2的情况。解决办法是CreateProcess使用可执行文件的绝对路径便可以解决文件和程序不在同一路径的问题。
扩展资料:
CreateProcess部分参数含义
1、lpApplicationName
指向一个NULL结尾的、用来指定可执行模块的字符串。
这个字符串可以是可执行模块的绝对路径,也可以是相对路径,在后一种情况下,函数使用当前驱动器和目录建立可执行模块的路径。
这个参数可以被设为NULL,在这种情况下,可执行模块的名字必须处于 lpCommandLine 参数最前面并由空格符与后面的字符分开。
2、lpCommandLine
指向一个以NULL结尾的字符串,该字符串指定要执行的命令行。这个参数可以为空,那么函数将使用lpApplicationName参数指定的字符串当做要运行的程序的命令行。
如果lpApplicationName和lpCommandLine参数都不为空,那么lpApplicationName参数指定将要被运行的模块,lpCommandLine参数指定将被运行的模块的命令行。
新运行的进程可以使用GetCommandLine函数获得整个命令行。C语言程序可以使用argc和argv参数。
3、lpProcessAttributes
指向一个SECURITY_ATTRIBUTES结构体,这个结构体决定是否返回的句柄可以被子进程继承。如果lpProcessAttributes参数为空(NULL),那么句柄不能被继承。
在Windows NT中:SECURITY_ATTRIBUTES结构的lpSecurityDescriptor成员指定了新进程的安全描述符,如果参数为空,新进程使用默认的安全描述符。
4、lpThreadAttributes
同lpProcessAttribute,不过这个参数决定的是线程是否被继承,通常置为NULL。
运行文件createprocess失败,显示错误码,该如何解决
重新下载看看, 你肯定安装的指定系统有了问题。
方法:
1、开始-运行-输入“regedit”并回车。
2、打开HKEY_LOCAL_MACHINE\SOFTWARE发现有2项OpenVPN项,如下示:
3、删除不正确的项OpenVPN-GUI。
4、关闭注册表窗口后再次打开应用程序已能正常访问。
用createprocess函数创建进程的意义是什么
是windows调用的createprocess函数,并不是没有用createprocess函数。
《windows程序设计》摘抄:
操作系统事实上并不是真的调用main函数,而是去调用C/C++运行期启动函数,此函数初始化C/C++运行期库。因此,在应用程序中可以调用malloc和free之类的函数。它也会保证在用户的代码执行之前所有的全局的或静态的C++对象能够被正确的创建,即执行这些对象构造函数中的代码。
组成Win32进程的两个部分:
(1)进程内核对象。操作系统使用此内核对象来管理进程,也是操作系统存放进程统计信息的地方。
(2)私有的虚拟地址空间。此地址空间包含了所有可执行的或者是DLL模块的代码和数据,它也是程序动态申请内存的地方,比如说线程堆栈和进程堆。
在控制台应用程序中,C/C++运行期启动函数会调用程序入口函数main,所以如果程序中没有main函数的实现代码的话,连接器将返回“unresolved external symbol”错误。Win32应用程序的启动过程就是进程的创建过程,操作系统是通过调用CreateProcess函数来创建新的进程的。当一个线程调用CreateProcess函数的时候,系统会创建一个进程内核对象,其使用计数初始化为1.此进程内核对象不是进程本身,仅仅是一个系统用来管理这个进程的一个小的数据结构(PCB,Process Control Block)。系统然后会为新的进程创建一个虚拟地址空间,加载应用程序运行时所需的代码和数据。
系统接着会为新进程创建一个主线程,这个主线程通过执行C/C++运行期启动代码开始运行,C/C++运行期启动代码又会调用main函数。如果系统能够成功创建新的进程和进程的主线程,CreateProcess函数返回TRUE,否则返回FALSE。
怎样用createprocess运行另外一个程序
我们可以利用CreateProcess API函数来创建相应的进程,该函数的原型如下:
CreateProcess(
LPCWSTR lpszImageName, //指向可执行的模块的指针
LPCWSTR lpszCmdLine, //指向可执行命令行字符串的指针
LPSECURITY_ATTRIBUTES lpsaProcess, //CE 不支持
LPSECURITY_ATTRIBUTES lpsaThread, //CE 不支持
BOOL fInheritHandles, //CE 不支持
DWORD fdwCreate, //创建标志
LPVOID lpvEnvironment, //CE 不支持
LPWSTR lpszCurDir, //CE 不支持
LPSTARTUPINFOW lpsiStartInfo, //CE 不支持
LPPROCESS_INFORMATION lppiProcInfo //指向进程信息结构体的指针
);
该函数最重要的两个参数是lpszImageName和lpszCmdLine,下面的几个应用也主要是通过设置这两个参数来达到目的。(以下的程序在Pocket PC 2003 SE上通过测试)
1、打开指定的URL
TCHAR szAppName[_MAX_PATH] = TEXT(“iexplore.exe“);//IE浏览器程序
TCHAR szCmdLine[_MAX_PATH] = TEXT(“
更多文章:
联想乐pad a1 07(联想乐pada107刷机包精简下载)
2024年7月8日 19:26
3000元笔记本电脑推荐(3000元笔记本电脑推荐2023)
2024年7月14日 19:06
三星平板电脑p7510(三星平板电脑p7510能升级到多大版本)
2024年7月23日 18:19