1.WinExec(
lpCmdLine: LPCSTR; {文件名和參數; 如沒指定路徑會按以下順序查找: 程序目錄/當前目錄/System32/Windows/PATH環境變量}
uCmdShow: UINT {啟動選項}
): UINT;
WinExec("D:\\Program Files\\Test\\Test.exe", SW_SHOWMAXIMIZED);
2.ShellExecute函數原型及參數含義如下:
ShellExecute(
HWND hwnd, //父窗口句柄 (如:NULL,Handle等)
LPCSTR lpOperation, //操作類型 (如:"open")*要加英文雙引號
LPCSTR lpFile, //要進行操作的文件或路徑
LPCSTR lpParameters, //當lpOperation為“explore”時指定要傳遞的參數,通常設為NULL
LPCSTR lpDirectory, //指定默認目錄,通常設為NULL
INT nShowCmd //文件打開的方式,以通常方式還是最大化或最小化顯示,一般為SW_SHOWNORMAL
)
參數說明:
●hWnd:用於指定父窗口句柄。當函數調用過程出現錯誤時,它將作為Windows消息窗口的父窗口。例如,可以將其設置為應用程序主窗口句柄,即Application.Handle,也可以將其設置為桌面窗口句柄(用GetDesktopWindow函數獲得)。
●Operation:用於指定要進行的操作。其中“open”操作表示執行由FileName參數指定的程序,或打開由FileName參數指定的文件或文件夾;“print”操作表示打印由FileName參數指定的文件;“explore”操作表示瀏覽由FileName參數指定的文件夾。當參數設為nil時,表示執行默認操作“open”。
●FileName:用於指定要打開的文件名、要執行的程序文件名或要瀏覽的文件夾名。
●Parameters:若FileName參數是一個可執行程序,則此參數指定命令行參數,否則此參數應為nil或PChar(0)。
●Directory:用於指定默認目錄。
●ShowCmd:若FileName參數是一個可執行程序,則此參數指定程序窗口的初始顯示方式,否則此參數應設置為0。
若ShellExecute函數調用成功,則返回值為被執行程序的實例句柄。若返回值小於32,則表示出現錯誤。
ShellExecute(NULL,NULL,"E:/udpserver.exe", NULL, NULL, SW_SHOWNORMAL);
3.ShellExecuteEx:
SHELLEXECUTEINFO ShExecInfo; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = NULL; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = NULL; ShExecInfo.lpFile = ("E:/udpserver.exe"); // 執行的程序名 ShExecInfo.lpParameters = NULL; ShExecInfo.lpDirectory = NULL; ShExecInfo.nShow = SW_MAXIMIZE; // 全屏顯示這個程序 ShExecInfo.hInstApp = NULL; ShellExecuteEx(&ShExecInfo);
4.函數原型:BOOL CreateProcess
(
LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes。
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); if (!CreateProcess(NULL, // No module name (use command line) "notepad.exe", // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi) // Pointer to PROCESS_INFORMATION structure ) { printf("CreateProcess failed (%d).\n", GetLastError()); cout << "ertror" << endl; }
結束進程:
std::string temp = std::string("TASKKILL /F /IM ") +exe_name; system(temp.c_str());