三个WINDOWS SDK函数: WinExec,ShellExecute ,CreateProcess,可以实现调用其他程序的要求。
WinExec
这个函数最简单,只有两个参数,原型如下:
UINT WinExec(
LPCSTR lpCmdLine, // 命令路径
UINT uCmdShow // 显示方式
;
使用方法如下:
WinExec("Notepad.exe", SW_SHOW); // 打开记事本
WinExec("D:""Program Files""Test""Test.exe",SW_SHOWMAXIMIZED); // 以最大化的方式打开Test.exe
注意:MS不建议使用这个API了。Below words is from MSDN:
Note This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function. if you must use WinExec for legacy reasons, make sure the application name is enclosed in quotation marks as shown in the example below.
WinExec("""C:""Program Files""MyApp.exe"" -L -S", ...)
ShellExecute
原型如下:
HINSTANCE ShellExecute(
HWND hwnd, //父窗口句柄
LPCTSTR lpOperation, //操作, 打开方式 "edit","explore","open","find","print","NULL"
LPCTSTR lpFile, //文件名,前面可加路径
LPCTSTR lpParameters, //参数
LPCTSTR lpDirectory, //默认文件夹
INT nShowCmd //显示方式
);
使用方法如下:
ShellExecute(NULL,"open","C:""Test.txt",NULL,NULL,SW_SHOWNORMAL); // 打开C:"Test.txt 文件
ShellExecute(NULL, "open", "::URL::http://www.google.com",/ NULL, NULL, SW_SHOWNORMAL); // 打开网页www.google.com
ShellExecute(NULL,"explore", "D:""C++",NULL,NULL,SW_SHOWNORMAL); // 打开目录D:"C++
ShellExecute(NULL,"print","C:""Test.txt",NULL,NULL, SW_HIDE); // 打印文件C:"Test.txt
ShellExecute不支持定向输出。
CreateProcess
Use below function directly:
///////////////////////////////////////////////////////////////////////////////
//
// ExecApp()
//
// Purpose: Runs the specified application (replacement for WinExec)
//
// Parameters: lpszCommandLine - [in] command line (including exe filepath)
// that is passed to CreateProcess()
// wShowCmd - [in] Specifies how app window is to be shown.
// See ShowWindow() in MSDN for possible values.
//
// Returns: BOOL - TRUE = CreateProcess() succeeded
//
BOOL ExecApp(LPCTSTR lpszCommandLine, WORD wShowCmd /*= SW_SHOWNORMAL*/)
{
BOOL rc = FALSE;
if (lpszCommandLine && (lpszCommandLine[0] != _T('"0')))
{
STARTUPINFO si = { 0 };
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = wShowCmd;
PROCESS_INFORMATION pi = { 0 };
rc = ::CreateProcess(NULL, (LPTSTR)lpszCommandLine, NULL, NULL, FALSE,
NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
TRACE(_T("CreateProcess returned %d for <%s>"n"), rc, lpszCommandLine);
// close process and thread handles now (app will continue to run)
if (pi.hProcess)
::CloseHandle(pi.hProcess);
if (pi.hThread)
::CloseHandle(pi.hThread);
}
return rc;
}
使用这三个函数也有一些注意事项:
1、定义头文件
在头文件stdafx.h中必须定义以下两个头文件:
#include <shlobj.h> // 可替换为 windows.h
#include <shellapi.h>
如果定义了头文件 #include <windows.h>的话就不必定义 #include <shlobj.h>了,"windows.h" 不光是包含了"shellapi.h",它还定义了许多数据类型,如果没有这些数据类型,shellapi.h本身会出错。
2、定义路径
C++中所表示的路径要用 " "" "而不是平常所用的" " ",所以以上三个函数表示路径都为:
Disk:""Directory""...""File name
相关推荐
总结,VC++中调用其他应用程序主要有WinExec、ShellExecute和CreateProcess三种方法,每种方法都有其适用场景和优缺点。在C#编程中,我们可以利用`Process`类来更方便地控制进程。理解这些函数和类的工作原理,对于...
通过本文介绍的方法,开发者可以在Borland C++ Builder 6.0环境中轻松实现对其他可执行程序的调用,并能够灵活地处理参数传递问题。这些技术对于创建复杂的应用程序、实现模块化编程或与其他系统进行交互非常重要。...
在VC++编程中,有时我们需要调用其他应用程序来实现特定的功能,如打开文件、运行程序或者发送邮件。本文将详细介绍三种常用的SDK函数:WinExec、ShellExecute和CreateProcess,它们都是用于在VC++中启动新进程的...
本文介绍了三种在程序中启动其他应用程序的方法:`WinExec`、`ShellExecute` 和 `CreateProcess`。其中,`WinExec` 最为简单但功能有限;`ShellExecute` 提供了更多的控制选项;而 `CreateProcess` 则是最强大和灵活...
本文将详细介绍如何在VC++中调用C#或其他应用程序,主要涉及三个SDK函数:`WinExec`、`ShellExecute`和`CreateProcess`。 首先,`WinExec`是最简单的函数,它接受两个参数:一个是要执行的命令路径(LPCSTR类型),...
在C++编程中,隐藏CMD命令行窗口是一个常见的需求,特别是在开发系统服务或者后台应用程序时。CMD窗口的出现可能会打扰用户的界面体验,因此通过编写特定的代码可以使程序在运行时保持不可见。本资源提供了隐藏CMD...
在VC++编程中,有时我们需要调用其他应用程序来完成特定任务。这里有三种主要的方法:`WinExec`,`ShellExecute`,以及`CreateProcess`。它们都是Windows API提供的函数,用于启动新的进程。 1. `WinExec`是最简单...
WinExec命令和ShellExecute命令都是C++程序启动外部程序的常用方法,但它们有不同的特点和应用场景。WinExec命令简单易用,但不允许使用CreateProcess函数的所有选项;ShellExecute命令更加灵活,可以用来打开或搜索...
C++程序启动外部程序的方法总结 C++程序启动外部程序的方法总结可以分为两种,即使用WinExec函数和使用...WinExec函数和ShellExecute函数都是C++程序中启动外部程序的常用方法,但它们有不同的使用场景和返回值含义。
在VC环境中,有三种常用的方法来调用外部程序:`WinExec`、`ShellExecute` 和 `CreateProcess`。下面将详细介绍这三个函数的使用方法及其相关参数。 #### WinExec 函数 **函数原型**: ```c++ UINT WinExec(LPCSTR...
C++中运行外部程序是指在C++程序中调用外部应用程序或执行系统命令,从而实现与外部世界的交互。在C++中有多种方式可以实现这个功能,本文将介绍三种常用的方法:WinExec、ShellExecute和CreateProcess。 一、...
在 C++ 程序中,启动外部程序有多种方法,本文总结了两种常用的方法:使用 WinExec 命令和使用 ShellExecute 命令。 使用 WinExec 命令 WinExec 函数原型为:UINT WinExec(LPCSTR lpCmdLine, UINT uCmdShow); 其中...
本文总结了C++程序启动外部程序的两种方法:WinExec函数和ShellExecute函数。这些函数都是Windows操作系统提供的API,用于启动外部程序或打开文件。 一、WinExec函数 WinExec函数是Windows操作系统提供的一种启动...
C++ 中有多种方式可以运行外部程序,包括使用 WinExec、ShellExecute 和 CreateProcess 等 SDK 函数。这些函数可以满足不同的需求,但也存在一些注意事项和限制。 首先,需要定义相关的头文件,包括 `<windows.h>` ...
首先,让我们讨论一下在C++中实现程序重启的两种基本方法: 1. **使用操作系统API**: 在Windows操作系统中,可以使用`ExitProcess()`或`CreateProcess()`等API函数来实现程序的退出和重启。`ExitProcess()`函数...
本文将深入探讨在VC中启动另一个应用程序的几种方法,包括`WinExec`、`ShellExecute`和`CreateProcess`。 #### 一、`ShellExecute` `ShellExecute`是Windows Shell API中的一个函数,用于启动与文件关联的应用程序...
本文将详细介绍VC程序中运行其他程序的三种主要方法:`WinExec`、`ShellExecute`以及`CreateProcess`。 #### 一、`WinExec` 函数 `WinExec` 是一个简单的函数,用来执行指定的程序。此函数特别适合那些不需要复杂...
本篇将详细讲解几个关键知识点,包括获取应用程序实例句柄、主窗口指针、获取其他程序图标、结束应用程序以及加载其他应用程序。 1. **获取应用程序实例句柄**: 应用程序的实例句柄通常存储在`CWinApp::m_...
⑵ 参数: lpCmdLine:指向一个空结束的字符串,串中包含将要执行的应用程序的命令行(文件名加上可选参数)。 uCmdShow:定义Windows应用程序的窗口如何显示,并为CreateProcess函数提供STARTUPINFO参数的...