快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰官网7598522:Windows API调用外部程序



要在利用法度榜样中启动其他的利用法度榜样,有3个函数可以应用,下面澳门新葡亰官网7598522我逐一说说他们(我以打开D:\Program Files\zeecalls\目录下的zeecalls.exe利用法度榜样为例):

1、Winexec

这个函数最简单,只有两个参数,原型如下:

UINT WinExec(

LPCSTR lpCmdLine, // address of command line

UINT uCmdShow // window style for new application

);

应用措施如下:

WinExec(_T("D:\\Program Files\\zeecalls\\zeecalls.exe"),SW_SHOWMAXIMIZED);

这句话将会以最大年夜化的要领打开zeecalls.exe,必要留意的是,在VC中,‘/’必要以‘//’来写。

2、ShellExecute

shellExecute比WinExex机动一点,以是参数就要多一点,原型如下:

HINSTANCE ShellExecute(

HWND hwnd, //父窗口句柄

LPCTSTR lpOperation,//打开要领

LPCTSTR lpFile, //待打开的文件名

LPCTSTR lpParameters, LPCTSTR lpDirectory,//文件路径

INT nShowCmd );

同样,我们也可以经由过程这个函数来打开我们必要的文件:

ShellExecute(NULL,_T("open"),_T("zeecalls.exe"),NULL,_T("D:\\Program Files\\zeecalls\\"),SW_SHOWNORMAL);

这句话因此用正常的显示要领打开zeecalls.exe

3、CreateProcess

上面的几种要领都实现了我们在自己的利用法度榜样中打开其他的利用法度榜样的目的,然则,我们没有获得足够多的关于新的进程的信息,也没有应用过多的手段去节制新的进程的细节属性,以是,假如要达到这些目的,我们就必要应用CreateProcess函数了,首先看看这个函数的原型:

BOOL CreateProcess(

LPCTSTR lpApplicationName, //履行法度榜样名

LPTSTR lpCommandLine, // 参数行

//下面两个参数描述了所创建的进程和线程的安然属性,假如为NULL则应用默认的安然属性

LPSECURITY_ATTRIBUTES lpProcessAttributes, // process security attributes

LPSECURITY_ATTRIBUTES lpThreadAttributes, // thread security attributes

BOOL bInheritHandles, // 承袭标志

DWORD dwCreationFlags, // 创建标志

LPVOID lpEnvironment, // 情况变量

LPCTSTR lpCurrentDirectory, // 运行该进程的初始目录

LPSTARTUPINFO lpStartupInfo, // 用于在创建子进程时设置各类属性

LPPROCESS_INFORMATION lpProcessInformation //用于在进程创建后吸收相关信息

);

在上面的参数中,应用了两个对照紧张的数据布局:STARTUPINFO和PROCESS_INFORMATION。这两个布局的定义分手如下:

typedef struct _STARTUPINFO { // si

DWORD cb; //布局长度

LPTSTR lpReserved; //保留

LPTSTR lpDesktop; //保留

LPTSTR lpTitle; //假如为节制台进程则为显示的标题

DWORD dwX; //窗口横坐标

DWORD dwY; //窗口丛坐标

DWORD dwXSize; //窗口宽度

DWORD dwYSize; //窗口高度

DWORD dwXCountChars; //节制台窗口字符号宽度

DWORD dwYCountChars; //节制台窗口字符号高度

DWORD dwFillAttribute; //节制台窗口添补模式

DWORD dwFlags; //创建标记

WORD wShowWindow; //窗口显示标记,犹如ShowWindow中的标记

3、CreateProcess

上面的几种要领都实现了我们在自己的利用法度榜样中打开其他的利用法度榜样的目的,然则,我们没有获得足够多的关于新的进程的信息,也没有应用过多的手段去节制新的进程的细节属性,以是,假如要达到这些目的,我们就必要应用CreateProcess函数了,首先看看这个函数的原型:

BOOL CreateProcess(

LPCTSTR lpApplicationName, //履行法度榜样名

LPTSTR lpCommandLine, // 参数行

//下面两个参数描述了所创建的进程和线程的安然属性,假如为NULL则应用默认的安然属性

LPSECURITY_ATTRIBUTES lpProcessAttributes, // process security attributes

LPSECURITY_ATTRIBUTES lpThreadAttributes, // thread security attributes

BOOL bInheritHandles, // 承袭标志

DWORD dwCreationFlags, // 创建标志

LPVOID lpEnvironment, // 情况变量

LPCTSTR lpCurrentDirectory, // 运行该进程的初始目录

LPSTARTUPINFO lpStartupInfo, // 用于在创建子进程时设置各类属性

LPPROCESS_INFORMATION lpProcessInformation //用于在进程创建后吸收相关信息

);

在上面的参数中,应用了两个对照紧张的数据布局:STARTUPINFO和PROCESS_INFORMATION。这两个布局的定义分手如下:

typedef struct _STARTUPINFO { // si

DWORD cb; //布局长度

LPTSTR lpReserved; //保留

LPTSTR lpDesktop; //保留

LPTSTR lpTitle; //假如为节制台进程则为显示的标题

DWORD dwX; //窗口横坐标

DWORD dwY; //窗口丛坐标

DWORD dwXSiz澳门新葡亰官网7598522e; //窗口宽度

DWORD dwYSize; //窗口高度

DWORD dwXCountChars; //节制台窗口字符号宽度

DWORD dwYCountChars; //节制台窗口字符号高度澳门新葡亰官网7598522

DWORD dwFillAttribute; //节制台窗口添补模式

DWORD dwFlags; //创建标记

WORD wShowWindow; //窗口显示标记,犹如ShowWindow中的标记

WORD cbReserved2; //保留参数

LPBYTE lpReserved2; //保留参数

HANDLE hStdInput; //标准输入句柄

HANDLE hStdOutput; //标准输出句柄

HANDLE hStdError; //标准差错句柄

} STARTUPINFO, *LPSTARTUPINFO;

typede澳门新葡亰官网7598522f struct _PROCESS_INFORMATION { // pi

HANDLE hProcess; //进程句柄

HANDLE hThread; //进程的主线程句柄

DWORD dwProcessId; //进程的ID

DWORD dwThreadId; //进程的主线程ID

} PROCESS_INFORMATION;

作为例子,我们来看看若何应用CreateProcess来打开相同的文件:

PROCESS_INFORMATION pi;

STARTUPINFO si;

memset(&si,0,sizeof(si));

si.cb=sizeof(si);

si.wShowWindow=SW_SHOW;

si.dwFlags=STARTF_USESHOWWINDOW;

bool fRet=CreateProcess("D:\\Program Files\\zeecalls\\zeecalls.exe",NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi);

可以看出,经由过程上面的澳门新葡亰官网7598522几个不合的措施,都可以实现在利用法度榜样中打开其他利用法度榜样的目的,以上几种措施可能有些会麻烦一点,以是就必要我们根据不合的目的去选择最得当自己的措施去实现自己的目的!

您可能还会对下面的文章感兴趣: