windows 如何从 Visual C++ 应用程序执行另一个程序
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6861254/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to execute another program from a Visual C++ Application
提问by Cin Sb Sangpi
I am doing a software project with Visual Studio Professional 2010.
我正在使用 Visual Studio Professional 2010 做一个软件项目。
In the form that I am making, I would like to put a link to open Microsoft Paint. How can I execute another application (MSPaint) from mine?
在我制作的表格中,我想放一个链接来打开 Microsoft Paint。如何从我的应用程序中执行另一个应用程序 (MSPaint)?
回答by David Heffernan
Call ShellExecute()
passing open
as the verb and mspaint.exe
as the filename.
调用ShellExecute()
传递open
作为动词和mspaint.exe
文件名。
ShellExecute(
MainFormWindowHandle,
"open",
"mspaint.exe",
NULL,
NULL,
SW_SHOW
);
回答by Carlos Rafael Ramirez
My contribution a complete example:
我的贡献一个完整的例子:
Go to Visual Studio, create a new Win32 C++ Project (not console), and paste the following code in the source file will appear:
进入Visual Studio,新建一个Win32 C++ Project(不是console),在源文件中粘贴如下代码会出现:
// Win32Project1.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "Win32Project1.h"
#include "shellapi.h"
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine,
_In_ int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
ShellExecuteA ( NULL, "open",
"your.exe",
"your params",
"working dir", SW_SHOW);
return TRUE;
}
回答by Jaya madhu
Myself I contribute the following code which can be used in Windows
我自己贡献了以下可以在 Windows 中使用的代码
#include <iostream>
#include<Windows.h>
using namespace std;
int main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
DWORD dwProcessId = 0;
DWORD dwThreadId = 0;
ZeroMemory(&si, sizeof(si));
ZeroMemory(&pi, sizeof(pi));
bool bCreateProcess = NULL;
bCreateProcess = CreateProcess((Location of Paint path),0,0,0,0,0,0,0,&si, pi);
//Instead of 0 NULL can also be used
if (bCreateProcess == FALSE)
cout << " Creation Process Failed ";
else
cout << " Process Executedd ";
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}