英创ARM9系列板卡应用程序的自己加载方法是在运行模式下采用由系统读取由用户编写的文本文件userinfo.txt,进而启动用户应用程序,这种方法在相关的“使用必读”文档中均有介绍。在userinfo.txt文件中只能填入一个应用程序的参数,也就是说只能启动一个应用程序。对于需要同时启动两个或多个应用程序的情况,该如何来实现呢?在本文中将介绍一种自动启动多个应用程序的方法。
采取的方法就是通过创建一个专用程序实现同时启动多个应用进程,而在userinfo.txt文件中编辑执行该专用程序,从而达到自动启动多个应用程序的目的。下面举例说明:
StarMain.exe为启动两个进程的专用程序,代码如下:
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow )
{
BOOL b;
PROCESS_INFORMATION procInfo;
// 创建APP1.exe 进程
b = CreateProcess
(
_T('\\NandFlash\\App1.exe'), // LPCWSTR lpszImageName,
lpCmdLine, // LPCWSTR lpszCmdLine,
NULL, // LPSECURITY_ATTRIBUTES lpsaProcess,
NULL, // LPSECURITY_ATTRIBUTES lpsaThread,
FALSE, // BOOL fInheritHandles,
0, // DWORD fdwCreate,
NULL, // LPVOID lpvEnvironment,
NULL, // LPWSTR lpszCurDir,
NULL, // LPSTARTUPINFOW lpsiStartInfo,
&procInfo // LPPROCESS_INFORMATION lppiProcInfo
);
CloseHandle(procInfo.hProcess);
CloseHandle(procInfo.hThread);
// 创建APP2.exe 进程
b = CreateProcess
(
_T('\\NandFlash\\App2.exe'), // LPCWSTR lpszImageName,
NULL, // LPCWSTR lpszCmdLine,
NULL, // LPSECURITY_ATTRIBUTES lpsaProcess,
NULL, // LPSECURITY_ATTRIBUTES lpsaThread,
FALSE, // BOOL fInheritHandles,
0, // DWORD fdwCreate,
NULL, // LPVOID lpvEnvironment,
NULL, // LPWSTR lpszCurDir,
NULL, // LPSTARTUPINFOW lpsiStartInfo,
&procInfo // LPPROCESS_INFORMATION lppiProcInfo
);
CloseHandle(procInfo.hProcess);
CloseHandle(procInfo.hThread);
return 0;
}