EXE启动外部程序

合集下载

winexec 用法

winexec 用法

winexec 用法WinExec 是一种在 Windows 操作系统上执行应用程序的函数。

它的原型如下:```c++UINT WINAPI WinExec(LPCSTR lpCmdLine, // 程序或命令行UINT uCmdShow // 显示方式);```其中,lpCmdLine 参数是要执行的程序或命令行,uCmdShow 参数是程序显示的方式。

在本文中,我们将介绍 WinExec 的用法,以及如何使用它来执行外部应用程序。

WinExec 函数的使用流程如下:1. 调用 WinExec 函数,并传入程序或命令行以及显示方式。

2. WinExec 函数执行程序,返回程序的退出代码。

```c++#include <windows.h>#include <stdio.h>在这个例子中,我们传入了 "notepad.exe" 和 SW_SHOW 两个参数。

其中"notepad.exe" 表示要执行记事本这个程序,而 SW_SHOW 则表示程序显示方式为“显示窗口”(常数值为1)。

在程序执行过程中,使用 WinExec 执行外部程序,会导致当前程序进入等待状态,直到外部程序执行完成。

在本例中,我们使用 printf 输出了 WinExec 返回的程序退出值,以便查看程序是否执行成功。

在实际应用中,使用 WinExec 函数可以方便地执行外部应用程序,比如启动计算器、打开浏览器等等。

下面是一些常见的用法。

1. 启动外部应用程序运行外部应用程序最常见的用法,例如:```c++WinExec("calc.exe", SW_SHOW);```这个例子会启动计算器程序。

某些应用程序需要传入参数才能运行,例如:这个例子会启动记事本程序,并打开 test.txt 文件。

3. 执行命令行WinExec 函数可以直接执行命令行:这个例子会执行 ping 命令,但不会显示命令行窗口(因为显示方式为 SW_HIDE)。

powerbuilder中shellexecute用法 -回复

powerbuilder中shellexecute用法 -回复

powerbuilder中shellexecute用法-回复"PowerBuilder中ShellExecute用法"在PowerBuilder中,ShellExecute函数用于执行外部程序,并且它可以接受多个参数来指定要执行的程序、执行方式以及传递给程序的参数。

本文将逐步介绍使用ShellExecute函数的方法和注意事项。

一、ShellExecute函数的基本介绍ShellExecute函数是Windows API中的一个函数,它可以启动其他应用程序或打开文件。

在PowerBuilder中,可以使用这个函数来启动外部程序、打开文件、访问网页等等。

ShellExecute函数的基本格式如下:long ShellExecute(long hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, long nShowCmd)其中,各参数的含义如下:hwnd:父窗口的句柄,一般为当前应用程序的窗口句柄,用于指定新程序的父窗口。

lpOperation:要执行的操作,如"open"表示打开文件,默认值为"open"。

lpFile:要执行的程序或文件路径。

lpParameters:传递给程序的参数,可以为空。

lpDirectory:新程序的初始工作目录。

nShowCmd:新程序窗口的显示方式。

二、使用ShellExecute函数打开文件下面以打开一个文本文件为例,介绍如何使用ShellExecute函数。

1. 创建一个CommandButton控件,并在其Click事件中添加以下代码:long ll_returnstring ls_file, ls_operation, ls_param, ls_dirll_return = ShellExecute(0, "open", "c:\test.txt", "", "", 1)如果该文件存在,点击Button后将会打开文本文件,如果不存在则没有任何反应。

QT下执行Shell或启动外部程序

QT下执行Shell或启动外部程序

See also pid(), started(), and waitForStarted().
2、使用QProcess::execute(), 不过使用此方法时程序会最阻塞直到此方法执行的程序结束后返回,这时候可使用QProcess和QThread这两个类结合使用的方法来处理,以防止在主 线程中调用而导致阻塞的情况
QT下执行Shell 或启动外部程序
方案一:
调用linux C函数库中的int system(const char * string);应该能够实现你需要的功能
system( command )
特定指令被执行并且如果它返回一个1的退出值,那么这个作用域中的设置将会被处理。例如:
system( ls /bin ) {
先从QThread继承一个类,重新实现run()函数:
Quote:
class MyThread : public QThread
{
public:
void run();
};
void MyThread::run()
{
QProcess::execute("notepad.exe");
QStringList str;
str << "";
process->start("./WinMerge/WinMergeU.exe",str);
如果程序里面不输入参数,就会直接到软件直接运行时的界面。
加参数后弹出的界面是工具栏第一列中的第一个需要输入的界面(这个是我猜测的,不确定,但确实能弹出)。
如果要弹出的话,用fork或system
ifห้องสมุดไป่ตู้ (fork () == 0) {

js调用exe程序的方法

js调用exe程序的方法

js调用exe程序的方法如何使用JavaScript调用外部的可执行程序?在开发Web应用程序时,有时候我们需要在JavaScript中调用外部的可执行程序,以实现一些特定的功能或操作。

本文将介绍如何使用JavaScript调用外部的可执行程序。

1. 使用Shell对象在Windows操作系统中,可以使用WScript.Shell对象来执行外部的可执行程序。

该对象提供了一个run方法,可以调用外部的可执行程序并执行相应的操作。

```javascriptvar shell = new ActiveXObject("WScript.Shell");shell.Run("path/to/your/program.exe");```其中,"path/to/your/program.exe"是你要调用的可执行程序的路径。

通过调用run方法,程序会在后台运行,并执行相应的操作。

2. 使用Node.js的Child Process模块如果你在使用Node.js开发Web应用程序,可以使用Child Process模块来调用外部的可执行程序。

该模块提供了一系列方法,可以方便地执行外部命令。

需要引入Child Process模块:```javascriptconst { exec } = require('child_process');```然后,使用exec方法调用外部的可执行程序:```javascriptexec('path/to/your/program.exe', (error, stdout, stderr) => { if (error) {console.error(`执行错误:${error}`);return;}console.log(`执行结果:${stdout}`);});```其中,"path/to/your/program.exe"是你要调用的可执行程序的路径。

VFP中调用其他应用程序的方法

VFP中调用其他应用程序的方法

VFP中调用其他应用程序的方法在VFP (Visual FoxPro) 中,要调用其他应用程序,可以通过以下几种方法实现:1. 使用 Shell 函数调用外部可执行文件:Shell 函数用于在 Windows 中启动一个新的进程,并执行指定的可执行文件。

可以使用 Shell 函数调用其他应用程序,然后传递需要的参数。

例如,要启动记事本程序(notepad.exe),可以使用以下代码:```foxShell("notepad.exe")```要在调用外部应用程序时传递参数,可以将参数作为字符串拼接到可执行文件路径的后面。

例如,要启动记事本程序并打开一个指定的文本文件,可以使用以下代码:```foxShell("notepad.exe C:\path\to\file.txt")```2. 使用 CreateObject 函数创建并操作外部应用程序的 COM 对象:CreateObject 函数用于创建和操作 COM 对象。

可以使用CreateObject 函数创建其他应用程序的 COM 对象,然后调用其方法和属性。

要使用该方法,需要知道外部应用程序的 ProgID 或 ClassID,来创建对应的 COM 对象。

例如,要创建并操作 Microsoft Excel 应用程序的COM 对象,可以使用以下代码:```foxoExcel = CreateObject("Excel.Application")oExcel.Visible = .T.```在通过COM对象调用其他应用程序时,可以使用COM对象的方法和属性来实现所需的功能。

3. 使用 ShellExecute 函数调用外部应用程序:ShellExecute 函数用于在 Windows 中执行一个外部应用程序,类似于 Shell 函数。

不同之处在于,ShellExecute 函数支持更多的参数选项,包括打开方式、工作目录、参数等。

EXE和DLL文件结构

EXE和DLL文件结构

EXE和DLL文件结构EXE(Execution)和DLL(Dynamic Link Library)是Windows操作系统中常见的可执行文件格式。

本文将从结构、功能和使用方面对EXE和DLL文件进行详细的介绍。

1.EXE文件结构:EXE文件是一种可执行文件,用于存储和执行程序代码。

其结构如下:1.1 DOS头部(DOS Header):存储DOS可执行文件的信息,包括魔数、代码段长度等。

1.2 PE头部(PE Header):存储Windows可执行文件的信息,包括文件类型、节表的偏移量等。

1.3 节表(Section Table):用于记录程序代码和数据的物理位置及大小,包括.text(代码段)、data(数据段)等。

1.4 导入表(Import Table):存储程序引用的外部函数和DLL文件。

1.5 导出表(Export Table):存储程序对外提供的函数和数据。

1.6 资源表(Resource Table):存储程序所需的资源,如图标、位图、字符串等。

1.7 异常表(Exception Table):用于处理程序中的异常,如访问越界、除零等。

1.8 其他表格:包括重定位表(Relocation Table)、调试表(Debug Table)等。

2.DLL文件结构:DLL文件是一种动态链接库文件,用于在不同的程序间共用函数和数据。

其结构如下:2.1 DOS头部(DOS Header):与EXE文件的DOS头部相同。

2.2 PE头部(PE Header):与EXE文件的PE头部相同。

2.3 节表(Section Table):与EXE文件的节表相同。

2.4 导入表(Import Table):记录DLL文件中引用的外部函数和其他DLL文件。

2.5 导出表(Export Table):记录DLL文件对外提供的函数和数据。

2.6 资源表(Resource Table):与EXE文件的资源表相同。

如何运行EXE文件Ubuntu的

如何运行EXE文件Ubuntu的
运行。随着WineHQ EXE文件
第1步
从你的Ubuntu命令行键入“$葡萄酒application.exe”,其中“应用”是由您的。EXE文件的名称取代。此 方法仅适用如果您的文件路径中的位置所在。 WineHQ使这些例子:路径=的“C:窗口;三: windowssystem;电子:; é:测试,女:。”
第3步 在下面一节你会发现你需要连接到公寓线类型:字段的资源。有三个版本的Ubuntu取决于您正在运行不同 的代码。
第4步 接下来,您需要下载“斯科特里奇关键”(见资源)。在Ubuntu中,右键单击该链接,然后选择“身份验 证”选项卡,然后点击“导入密钥文件。”一旦该文件下载和安装,在“关闭”选项,单击,然后选择选 项重新加载的包信息时要求做了计划,以便。现在您可以使用您的葡萄酒和安装。EXE文件。
一旦该文件下载和安装在关闭选项单击然后选择选项重新加载的包信息时要求和浏览到下载的部分。在这部分中,您会看到几个不同版本的Linux选择。我们的目的 在“Ubuntu的”选项点击,这将引导您完成操作。您还可以按照第2步。
第2步 “系统”在Ubuntu的选项点击,然后转到“管理”,其次是“软件源”的选择。在软件来源,“第三方软 件”,然后点击点击“添加”。
第2步 键入“$葡萄酒?:\ myapps \ application.exe”运行从外部文件的路径。这将启动在Ubuntu的使用你的 程序。
第3步 提供完整的路径在运行Windows格式可执行文件不使用Unix的命令行。
第4步 成立后的。EXE文件,如果你正在访问的其他信息要求的步骤程序。 。exe文件,然后将启动并投入使用。

exe原理

exe原理

exe原理EXE是一种Windows可执行文件格式,它包含了程序的二进制码、数据、资源和元数据等信息。

在Windows系统中,EXE文件是最常见的可执行程序,它们被用于运行程序、安装软件、启动系统服务等。

在本文中,我们将讨论EXE文件的原理及其如何工作。

基本原理EXE文件是由Windows操作系统来解释和执行的二进制文件。

当用户双击EXE文件时,Windows会根据文件头部信息来判断该文件是否为可执行文件,如果是的话,它会加载并执行该程序。

EXE文件也是一种独立可执行文件,它在运行时不需要任何外部依赖。

在Windows系统中,EXE文件是由PE(Portable Executable)格式组成。

PE格式是一种通用的可执行文件格式,它包含了许多标准机器代码,可用于运行Windows操作系统上的应用程序。

当EXE文件被加载到内存中时,Windows系统会读取PE头部信息,并通过解析将程序加载到适当的内存地址。

此外,PE格式还包含了可执行文件的资源、DLL数据、EXE文件的版本信息等元数据。

EXE文件的结构PE格式文件包括DOS头、NT头和节区表等部分。

DOS头DOS头包含了16位MS-DOS程序的可执行文件头。

它是EXE文件的开始部分,并告诉Windows操作系统如何读取该文件。

NT头NT头是PE格式的核心部分,包含了PE头、可选头和节区表。

PE头描述了可执行文件的属性。

可选头包含了可执行文件的运行所需信息,如代码和数据段的大小、入口点地址、堆栈大小等。

节区表是PE格式的最后一部分,描述了可执行文件中每个节区的起始位置、大小、属性等信息。

节区表节区表是PE格式的最后一部分,包含了可执行文件中每个节区的起始位置、大小、属性等信息。

每个节区都有一个唯一的标识符,通常是一个英文字符串。

例如,常见的节区包括.text节区(代码节区)、.data节区(数据节区)和.rsrc节区(资源节区)等。

实际工作原理当用户双击EXE文件时,系统首先读取DOS头部,判断该文件是否为可执行文件。

exeoutput for php的使用手册

exeoutput for php的使用手册

exeoutput for php的使用手册一、引言exeoutput for php是一个功能强大的PHP扩展,它为开发人员提供了在PHP应用程序中执行外部命令和脚本的能力。

使用exeoutput for php,您可以在PHP脚本中轻松地调用外部程序,并将输出结果进行处理和显示。

本使用手册将指导您如何安装、配置和使用exeoutput for php扩展,以便在您的PHP应用程序中实现自动化和集成外部工具。

二、安装与配置1. 安装exeoutput for php扩展要使用exeoutput for php扩展,您需要先将其安装到您的PHP环境中。

您可以从官方网站或GitHub仓库下载最新的exeoutput for php 扩展版本,并根据您的操作系统和PHP版本进行适当的安装。

2. 配置PHP环境安装完成后,您需要在您的PHP配置文件(php.ini)中启用exeoutput for php扩展。

找到以下行并取消注释(去掉前面的分号):```makefileextension=exeoutput.so```保存并关闭php.ini文件后,重新启动您的Web服务器以使更改生效。

三、使用exeoutput for php执行外部命令1. 创建执行计划在您的PHP代码中,您需要创建一个执行计划对象,用于定义要执行的外部命令和相关参数。

使用exeoutput for php提供的API函数,您可以轻松地创建执行计划。

以下是一个简单的示例:```php$executor = new \ExeOutput\Executor();$command = 'ls -l'; // 要执行的命令$executor->setCommand($command);```2. 执行命令并获取输出结果一旦创建了执行计划对象,您可以使用`execute()`方法来执行命令并获取输出结果。

以下是一个完整的示例:```php$executor = new \ExeOutput\Executor();$command = 'ls -l'; // 要执行的命令$executor->setCommand($command);$output = $executor->execute(); // 执行命令并获取输出结果```在上述示例中,`$output`变量将包含命令的输出结果。

Windows CMD命令调用外部程序的使用方法

Windows CMD命令调用外部程序的使用方法

Windows CMD命令调用外部程序的使用方法Windows CMD命令是Windows操作系统中的一个命令行工具,它可以通过调用外部程序来完成一些特定的任务。

在本文中,我将介绍一些常用的CMD命令以及如何使用它们来调用外部程序。

一、CMD命令的基本使用方法CMD命令是通过在命令提示符下输入特定的命令来执行的。

下面是一些常用的CMD命令:1. dir:用于列出当前目录下的文件和文件夹。

2. cd:用于切换当前目录。

3. md:用于创建新的文件夹。

4. rd:用于删除指定的文件夹。

5. copy:用于复制文件。

6. del:用于删除文件。

7. move:用于移动文件。

8. ren:用于重命名文件。

通过使用这些基本的CMD命令,我们可以在命令行中完成一些简单的文件和文件夹的操作。

二、调用外部程序的方法除了使用基本的CMD命令,我们还可以通过调用外部程序来完成一些更复杂的任务。

下面是一些调用外部程序的方法:1. 使用绝对路径:可以通过输入外部程序的绝对路径来调用它。

例如,如果你想调用C:\Program Files\Internet Explorer\iexplore.exe这个程序,你可以在CMD命令行中输入该路径来启动Internet Explorer浏览器。

2. 使用环境变量:Windows操作系统提供了一些预定义的环境变量,可以用来表示一些常用的目录和程序路径。

通过使用这些环境变量,我们可以更方便地调用外部程序。

例如,%SystemRoot%表示Windows系统目录,%ProgramFiles%表示程序文件目录。

通过在CMD命令行中输入这些环境变量,我们可以启动系统中的一些常用程序。

3. 添加程序路径到系统环境变量:如果你经常需要调用某个特定的外部程序,你可以将该程序的路径添加到系统的环境变量中。

这样,你就可以在任何位置直接调用该程序了。

要添加程序路径到系统环境变量,你可以按下Win + Pause键打开系统属性对话框,然后点击"高级系统设置",在"高级"选项卡中点击"环境变量"按钮,然后在"系统变量"部分找到"Path"变量,点击"编辑"按钮,然后在变量值中添加程序路径。

C#启动和关闭外部进程的方法

C#启动和关闭外部进程的方法

C#启动和关闭外部进程的方法许多用户在程序开发过程中需要使用C#启动一个外部程序(进程),在使用完毕该外部程序后,又希望能将其关闭。

我们特在此对C#启动和关闭外部进程的方法进行一个简单的介绍。

C#启动外部程序(进程)有两种方法:一种是直接使用C#提供的Process类,利用类的函数操作来直接启动外部程序;另一种方法是使用传统的Win32 API函数CreateProcess 来实现外部进程的启动。

使用C#提供的Process类来启动外部程序方法比较简单,例举代码如下:using System.Diagnostics; // 包含了Process类的定义int myprocessID; // 进程ID// 方法一:直接使用.Net提供的Process类来实现外部程序的启动private void openButton_Click(object sender, EventArgs e){Process myProcess = Process.Start('\\NandFlash\\SerialTST.exe', ''); // 启动外部进程myprocessID = myProcess.Id; // 获得该外部进程ID}使用传统的Win32 API函数的方法相对复杂,代码如下:using System.Runtime.InteropServices; // 使用外部Win32 API#region Win32 API CreateProcess函数声明做函数申明。

[DllImport('coredll.Dll', EntryPoint = 'CreateProcess', SetLastError = true)]extern static int CreateProcess(string strImageName, string strCmdLine,IntPtr pProcessAttributes, IntPtr pThreadAttributes,int bInheritsHandle, int dwCreationFlags,IntPtr pEnvironment, IntPtr pCurrentDir,IntPtr bArray, ProcessInfo oProc);public class ProcessInfo{public int hProcess;public int hThread;public int ProcessID;public int ThreadID;}#endregion// 方法二:使用Win32 API来实现外部程序的启动private void openButton_Click(object sender, EventArgs e){ProcessInfo pi = new ProcessInfo();CreateProcess('\\NandFlash\\SerialTST.exe', '', IntPtr.Zero, IntPtr.Zero,0, 0, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, pi);myprocessID = pi.ProcessID; // 得到该程序的ID}关闭外部进程的方法就是直接通过获得的该外部进程的ID来关闭它。

vb6.o直接调用外部exe文件的一种方法

vb6.o直接调用外部exe文件的一种方法

vb6.o直接调用外部exe文件的一种方法VB6是一种用于Windows平台的编程语言,它是一种非常适合初学者的编程语言,同时也非常容易上手。

在VB6中,我们可以很方便地调用外部的exe程序,这样能够让我们的应用程序更加灵活多变,同时也方便了我们的编程工作。

下面将介绍一种VB6直接调用外部exe文件的方法。

一、创建一个新的VB6应用程序首先我们需要创建一个新的VB6应用程序,这里我们可以选择在Visual Basic 6.0中新建一个标准EXE应用程序。

在新建的窗体中,我们可以添加一些控件,比如按钮等等。

二、添加代码在我们的VB6应用程序中,我们需要添加一些代码,这里我们需要在代码窗体中添加代码。

我们需要在代码窗体中添加以下代码:Option ExplicitPrivate Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile AsString, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub Command1_Click()Dim RetVal as Long Dim strPath as String'这里插入你要调用的外部exe程序的路径 strPath = "C:\test.exe"RetVal = ShellExecute(Me.hwnd, vbNullString, strPath, vbNullString, vbNullString, 1)End Sub上述代码中,我们首先需要声明一个函数,这个函数的名称是ShellExecute,它是由shell32.dll库提供的。

e语言调用createprocess函数

e语言调用createprocess函数

在E语言中,可以使用系统调用函数来执行外部程序。

其中,createprocess函数是用于创建并启动新进程的函数之一。

下面是一个简单的示例,演示如何使用E语言调用createprocess 函数来执行外部程序:```c#include <stdio.h>#include <windows.h>int main() {STARTUPINFO startupInfo = { 0 };PROCESS_INFORMATION processInfo = { 0 };const char* programPath = "notepad.exe"; // 外部程序的路径const char* commandLine = programPath; // 传递给外部程序的命令行参数// 初始化startupInfo结构体startupInfo.cb = sizeof(startupInfo);startupInfo.lpReserved = NULL;startupInfo.lpDesktop = NULL;startupInfo.lpTitle = NULL;startupInfo.dwFlags = STARTF_USESTDHANDLES;// 创建并启动新进程if (!CreateProcess(NULL, // 指向应用程序名称的指针commandLine, // 指向命令行的指针NULL, // 安全属性,通常为NULLNULL, // 指向线程环境的指针,通常为NULLFALSE, // 不继承句柄标志0, // 进程映像标志,通常为0NULL, // 指向环境变量的指针,通常为NULLNULL, // 指向当前目录的指针&startupInfo, // STARTUPINFO结构体指针,用于获取进程句柄等信息&processInfo)) // 进程信息结构体指针{printf("CreateProcess failed with error: %d\n", GetLastError());return 1;}// 等待进程结束并获取退出代码WaitForSingleObject(processInfo.hProcess, INFINITE);GetExitCodeProcess(processInfo.hProcess, &exitCode);CloseHandle(processInfo.hProcess);CloseHandle(processInfo.hThread);printf("Program exited with code: %d\n", exitCode);return 0;}```上述代码使用CreateProcess函数创建了一个新进程,执行了notepad.exe程序,并等待进程结束并获取退出代码。

shellexecutew 使用方法

shellexecutew 使用方法

shellexecutew 使用方法**一、概述**shellexecutew 是一个用于在 Windows 操作系统中执行外部程序的命令行工具,它通过在当前进程的上下文中执行外部程序,提供了更加灵活的执行方式。

使用 shellexecutew,您可以方便地执行外部程序,并传递参数和环境变量等选项。

**二、使用方法**1. 打开命令提示符(Command Prompt)或 PowerShell。

2. 输入 `shellexecutew` 命令,并跟随相应的参数和选项。

3. 传递要执行的外部程序的路径作为第一个参数,传递要传递给外部程序的参数和环境变量等选项。

下面是一个示例:`shellexecutew "C:\path\to\executable.exe" arg1 arg2 envvar1=value1 envvar2=value2`这个命令将在当前进程的上下文中执行 "C:\path\to\executable.exe",并将 arg1、arg2、envvar1 的值设置为 value1 和 envvar2 的值设置为 value2。

**三、选项和参数**除了上述示例中的基本用法外,shellexecutew 还提供了其他选项和参数,以进一步扩展其功能。

以下是一些常用的选项和参数:* `/noelevate`:不使用管理员权限启动外部程序。

默认情况下,shellexecutew 会使用管理员权限启动外部程序。

使用此选项可以避免自动以管理员权限运行程序。

* `/wait`:等待外部程序执行完成后再返回命令提示符。

默认情况下,shellexecutew 会立即返回并继续执行后续命令。

使用此选项可以避免程序在执行过程中被打断。

* `/silent`:静默执行外部程序,不显示任何输出或错误信息。

这对于需要执行保密或隐秘操作的场景非常有用。

* `/f`:强制执行外部程序,即使程序不存在或无法找到。

C++程序启动外部程序的方法总结

C++程序启动外部程序的方法总结

也可以考虑 C 函数:1 system()2 spawn() 函数系列3 exec() 函数系列c++ 启动exe(外部程序)收藏关于三个SDK函数: WinExec, ShellExecute,CreateProcess 的其他注意事项:【1】定义头文件必须定义以下两个头文件:#include <> .\\File nameWinExec("D:\\Program Files\\Test\\",SW_SHOWMAXIMIZED);ShellExecute(NULL,"open","C:\\",NULL,NULL,SW_SHOWNORMAL);1、调用API: int system( const char *command );你可以传入一命令,启动某个程序。

如"ping ", "YourExe"等等不过这里有几点要值得注意:(1)、他不会立即返回,直到你启动的程序执行完成。

(2)、如果你启动是windows程序,它仍然会启动一个控制台,这就给人感觉太差劲了,但如果本身是控制台的,而且又需要等待它的完成,那这将是比较好的选择。

(3)、它的返回值代表是否执行成功以及程序的退出码。

(4)、不能运行*.txt文件或""2、调用API:UINT WinExec(LPCSTR lpCmdLine, xt文件或""3、调用:HINSTANCE ShellExecute(HWND hwnd,LPCTSTR lpVerb,LPCTSTR lpFile,LPCTSTR lpParameters,LPCTSTR lpDirectory,INT nShowCmd);它也有WinExec同样的缺点。

它虽然传回一个HINSTANCE,但他并不是真正的句柄,我们仅能拿它来做一些错误值检查。

C++程序启动外部程序的方法总结

C++程序启动外部程序的方法总结

使用WinExec命令⑴函数原型:UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow);⑵参数:lpCmdLine:指向一个空结束的字符串,串中包含将要执行的应用程序的命令行(文件名加上可选参数)。

uCmdShow:定义Windows应用程序的窗口如何显示,并为CreateProcess函数提供STARTUPINFO参数的wShowWindow成员的值。

⑶返回值:若函数调用成功,则返回值大于31。

若函数调用失败,则返回值为下列之一:①0:系统内存或资源已耗尽。

②ERROR_BAD_FORMAT:EXE文件无效(非Win32.EXE或.EXE影像错误)。

③ERROR_FILE_NOT_FOUND:指定的文件未找到。

④ERROR_PATH_NOT_FOUND:指定的路径未找到。

虽然Microsoft认为WinExec已过时,但是在许多时候,简单的WinExec函数仍是运行新程序的最好方式。

简单地传送作为第一个参数的命令行,还需要决定如何显示程序(该程序也许会忽视它)的第二个参数。

通常,将其设置为SW_SHOW,也可尝试SW_MINIMIZED 或SW_MAXIMIZED。

WinExec不允许用CreateProcess获得的所有选项,而它的确简单。

使用ShellExecute命令⑴函数原型:HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpF ile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd);⑵参数:hwnd:指向父窗口的窗口句柄。

此窗口接收应用程序产生的任何信息框。

lpOperation:一个空结束的字符串地址,此字符串指定要执行的操作。

下面的操作字符串是有效的:"open " 此函数打开由参数lpFile指定的文件,此文件可以是一个可执行文件或文档文件,也可是一个文件夹。

C#启动外部程序的几种方法

C#启动外部程序的几种方法

C#启动外部程序的⼏种⽅法C# 启动外部程序的⼏种⽅法:1. 启动外部程序,不等待其退出。

2. 启动外部程序,等待其退出。

3. 启动外部程序,⽆限等待其退出。

4. 启动外部程序,通过事件监视其退出。

// using System.Diagnostics;private string appName = "calc.exe";///<summary>/// 1. 启动外部程序,不等待其退出///</summary>private void button1_Click(object sender, EventArgs e){Process.Start(appName);MessageBox.Show(String.Format("外部程序 {0} 启动完成!", this.appName), this.Text,MessageBoxButtons.OK, rmation);}///<summary>/// 2. 启动外部程序,等待其退出///</summary>private void button2_Click(object sender, EventArgs e){try{Process proc = Process.Start(appName);if (proc != null){proc.WaitForExit(3000);if (proc.HasExited)MessageBox.Show(String.Format("外部程序 {0} 已经退出!", this.appName), this.Text, MessageBoxButtons.OK, rmation);else{// 如果外部程序没有结束运⾏则强⾏终⽌之。

proc.Kill();MessageBox.Show(String.Format("外部程序 {0} 被强⾏终⽌!", this.appName), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);}}}catch (ArgumentException ex){MessageBox.Show(ex.Message, this.Text,MessageBoxButtons.OK, MessageBoxIcon.Error);}}///<summary>/// 3. 启动外部程序,⽆限等待其退出///</summary>private void button3_Click(object sender, EventArgs e){try{Process proc = Process.Start(appName);if (proc != null){proc.WaitForExit();MessageBox.Show(String.Format("外部程序 {0} 已经退出!", this.appName), this.Text,MessageBoxButtons.OK, rmation);}}catch (ArgumentException ex){MessageBox.Show(ex.Message, this.Text,MessageBoxButtons.OK, MessageBoxIcon.Error);}}///<summary>/// 4. 启动外部程序,通过事件监视其退出///</summary>private void button4_Click(object sender, EventArgs e){try{// 启动外部程序Process proc = Process.Start(appName);if (proc != null){// 监视进程退出proc.EnableRaisingEvents = true;// 指定退出事件⽅法proc.Exited += new EventHandler(proc_Exited);}}catch (ArgumentException ex){MessageBox.Show(ex.Message, this.Text,MessageBoxButtons.OK, MessageBoxIcon.Error);}}///<summary>///外部程序退出事件///</summary>void proc_Exited(object sender, EventArgs e){MessageBox.Show(String.Format("外部程序 {0} 已经退出!", this.appName), this.Text, MessageBoxButtons.OK, rmation);}。

执行Runtime.exec()需要注意的陷阱

执行Runtime.exec()需要注意的陷阱

执⾏Runtime.exec()需要注意的陷阱作为Java语⾔的⼀部分。

ng包被隐藏的导⼊到每⼀个Java程序。

这个包的表⾯陷阱,经常影响到⼤多数程序员。

这个⽉,我将讨论运⾏时exec()⽅法时的潜伏陷阱。

陷阱4:当运⾏exec()时不会执⾏命令ng.Runtime类,突出了静态⽅法calledgetRuntime(),,它会检索当前的Java运⾏时环境。

这是唯⼀的⽅法来获取Runtime对象的引⽤。

获取该引⽤,您通过可以调⽤Runtime类的exec()⽅法运⾏外部程序。

开发⼈员经常调⽤这个⽅法来启动浏览器显⽰⼀个HTML帮助页⾯。

exec()有四个重载:1public Process exec(String command);2public Process exec(String [] cmdArray);3public Process exec(String command, String [] envp);4public Process exec(String [] cmdArray, String [] envp);对于每个这样的⽅法,都会产⽣⼀个命令,并可能携带⼀组参数——被传递给⼀个特定操作系统的函数调⽤。

这随后创建⼀个特定操作系统的进程(⼀个运⾏着的程序),procss类将持有该程序返回Java VM的引⽤。

这个procss类是⼀个抽象类,具体⼦类的实现依赖于不同的底层操作系统。

你可以通过三种可能的输⼊参数到这些⽅法:1、⼀个字符串,表⽰程序执⾏和程序的任何参数。

2、⼀个字符串数组,通过参数来区分出程序的实现功能。

3、⼀个环境变量的数组传递环境变量是,使⽤格式化的⽅式:名称=值。

如果你使⽤单个字符串和它的参数的⽅式调⽤exec()的重载,,注意字符串是通过StringTokenizer类被解析,使⽤空格作为分隔符。

陷⼊ IllegalThreadStateException运⾏exec()的第⼀个陷阱,是theIllegalThreadStateException。

qprocess的用法

qprocess的用法

qprocess的用法QProcess是一个在Qt中用于启动外部程序的类。

通过使用QProcess,我们可以启动一个可执行文件,并在该进程中运行它。

在Qt中,使用QProcess的方式非常灵活,可以根据不同的需要来启动进程并获取结果。

下面我们将详细介绍QProcess的用法。

1. 启动进程使用QProcess启动进程非常简单,只需要调用start方法即可。

```cppQProcess process;process.start("myapp.exe"); // 启动一个名为myapp.exe的可执行文件```2. 获取进程输出有些时候我们需要获取进程的输出,可以使用QProcess::readAllStandardOutput()方法来获取进程输出。

在这个例子中,我们等待进程执行完成,然后使用readAllStandardOutput()函数将进程的所有输出读取到一个QString中,并输出到控制台上。

3. 发送命令给进程有些时候我们需要在启动进程之后,向进程发送一些命令,让进程执行一些操作。

可以使用QProcess::write()方法将命令发送给进程,如下所示:在这个例子中,我们启动了一个名为myapp.exe的可执行文件,并向该进程发送了一个字符串"hello\r\n"。

然后等待进程执行完成,读取进程输出并输出到控制台。

4. 设置进程环境变量有些时候我们需要在启动进程之前,为进程设置一些环境变量。

可以使用QProcessEnvironment类和QProcess::setProcessEnvironment()方法来设置环境变量。

5. 设置进程工作目录总结1. 启动进程要确保进程的可执行文件存在。

2. 如果需要获取进程输出,必须在进程执行完成后才能读取。

4. 在设置进程环境变量和工作目录时,要确保路径和变量名称的正确性。

5. 当一个进程的输出比较多时,建议使用QProcess的readyRead()信号来读取输出,以免在读取输出时出现阻塞的情况。

shellexecute exe句柄

shellexecute exe句柄

`ShellExecute` 是一个 Windows API 函数,用于执行外部程序。

这个函数在 `shell32.dll` 库中定义。

通过 `ShellExecute`,你可以打开文件、目录或程序,以及运行一些特定的命令。

`exe` 是该函数的一个参数,表示要执行的程序或文件的名称。

关于句柄 (handle),在 Windows 编程中,句柄是一个特殊的值,用于标识系统中的对象,如文件、窗口、设备等。

句柄是一个非负整数,通常用于系统内部引用资源。

当你使用 `ShellExecute` 函数时,它返回一个句柄,这个句柄可以用于进一步操作或查询与执行程序相关的信息。

例如,如果你想等待该程序完成,你可以使用这个句柄。

这是一个简单的 `ShellExecute` 的使用示例:```c#include <windows.h>#include <shellapi.h>int main() {HINSTANCE hResult = ShellExecute(NULL, "open", "notepad.exe", NULL, NULL, SW_SHOWNORMAL);if ((int)hResult <= 32) {// 执行失败} else {// 获取的句柄可用于等待或进一步的操作}return 0;}```在上面的例子中,我们使用 `ShellExecute` 打开 Notepad 程序,并获取其返回的句柄 `hResult`。

然后我们可以使用这个句柄来进一步操作或查询。

请注意,上述代码仅作示例用途,可能需要根据你的具体需求进行修改和扩展。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//上面的动词可传可不传,但如果"ReadMe.txt"为"ReadMe.bat"那就得指定,否则将会当命令执行,而不是打开它。
//可打开目录
::ShellExecute(this->GetSafeHwnd(), "open", "c:", NULL, NULL, SW_SHOWNORMAL);
c++ 启动exe(外部程序)(2011-01-25 10:39:50)
标签: 启动参数进程句柄txt文件子程序启动exe杂谈
c++ 启动exe(外部程序) 收藏
关于三个SDK函数: WinExec, ShellExecute,CreateProcess 的其他注意事项:
【1】定义头文件
printf("Please press Enter go on\n");
getchar();
WinExec("mspaint.exe",SW_SHOWNOACTIVATE);
printf("Function <ShellExecute>:\nIt can run a cmd command to open file or web\n\n");
getchar();
printf("文件属性\n");
ShellExecute(handle,"properties","C:\\test.txt",NULL,NULL,SW_MINIMIZE);
(3)、它的返回值代表是否执行成功以及程序的退出码。
(4)、不能运行*.txt文件或""
2、调用API:
UINT WinExec(
LPCSTR lpCmdLine, // command line
UINT uCmdShow // window style
//查看一个文件或目录的属性
//使用ShellExecuteEx,实现请见所附源码对应部分
如果没有特殊的控制要求,它己能为我们做很了,但当我们一定要能控件这个启动的进程时,那我们就得使用第4点了。
4:调用API:
BOOL CreateProcess(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
你可以传入一命令,启动某个程序。如"ping ", "YourExe"等等
不过这里有几点要值得注意:
(1)、他不会立即返回,直到你启动的程序执行完成。
(2)、如果你启动是windows程序,它仍然会启动一个控制台,这就给人感觉太差劲了,但如果本身是控制台的,而且又需要等待它的完成,那这将是比较好的选择。
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
1、2中如果传入“”,将不能成功执行,而ShellExecute却能很好地执行,它将启动一个默认浏览器来打开这个网站。
参数讲解:
参数1 hwnd:一窗体句柄,将作为启动的程序的父窗体。
参数2 lpVerb:你想执行的操作(edit 、explore、find、open、print、properties),你也可以传入NULL值,它将执行默认操作(win2000以前与以后处理略有差别,请见MSDN)。
//可打开网页
::ShellExecute(this->GetSafeHwnd(), "open", "", NULL, NULL, SW_SHOWNORMAL);
//浏览一个目录
ShellExecute(handle, "explore", "c:"NULL, NULL, SW_SHOWNORMAL);
参数3 lpFile:一文件名或操作的对象。
参数4 lpParameters:如果lpFile是一可执行文件,这个将作为它的参数。它的格式由执行的操作决定。而且当lpFile为一document文件时,此参数需为NULL。
参数5 lpDirectory:指定它的工作目录。
参数6 nShowCmd:窗体显示的控制。
它也有WinExec同样的缺点。
它虽然传回一个HINSTANCE,但他并不是真正的句柄,我们仅能拿它来做一些错误值检查。
但它的功能比前两者更强大,它执行系统的Shell命令。
1、2中如果传入“XX.txt”,它们将不能成功执行,ShellExecute却能很好地执行,它将启动一个默认的文字处理程序来打开它。
getchar() file\n");
ShellExecute(NULL,"open","C:\\test.txt",NULL,NULL,SW_MINIMIZE);
getchar();
printf("Open a web\n");
必须定义以下两个头文件:
#include <shlobj.h> // 可替换为 windows.h
#include <shellapi.h>
如果定义了头文件 #include <windows.h>的话就不必定义 #include <shlobj.h>了。
【2】定义路径
C++中所表示的路径要用 " \\ "而不是平常所用的" \ ",所以以上三个函数表示路径都为:disk:\\Directory\\...\\File name
NULL, //使用默认线程安全属性
FALSE, //句柄不继承
NORMAL_PRIORITY_CLASS, //使用正常优先级
NULL, //使用父进程的环境变量
NULL, //指定工作目录
&StartInfo, //子进程主窗口如何显示
&pinfo); //用于存放新进程的返回信息
WinExec("D:\\Program Files\\Test\\Test.exe",SW_SHOWMAXIMIZED);
ShellExecute(NULL,"open","C:\\Test.txt",NULL,NULL,SW_SHOWNORMAL);
1、调用API: int system( const char *command );
ShellExecute(NULL,NULL,"",NULL,NULL,SW_SHOWNA);
getchar();
printf("Run a cmd command:ping \n");
ShellExecute(NULL, NULL, "ping", "", NULL, SW_SHOWNORMAL);
这样在创建成功这后我们就可以从pinfo中找到它的:进程句柄,线程句柄,进程ID,线程ID
在附件源码中演示了进程序的启动,停止。
实际上我们可以通过很多方式如内存共享、父进程窗体句体传入仍后从消息中获得子进程窗体句柄等,来实现更多的控制。
想很好地掌握CreateProcess,可参见人民邮电出版社出版的<< Windows系统编程 >>,它的“进程”部份作了很详尽的说明。
);
这个API与API:system同样的使用简单,同用是使用命令行型式。
不过它与API:system相比,有几个优点:
(1)、它将启动了一个新进程,并且立即返回,因此你的程序无需等待。
(2)、它的多了一个参数:uCmdShow,通过它你可以一定程度上控件窗体的显示,比如让它后台运行而不显示出来。
(3)、它无论启动控制台程序还是windows程序都只做你想要做的事。
它的不足之处:
(1)、它完全与本进程脱离,无法对做些必要的控制
(2)、无法得知启动的程序是否退出。
(3)、得不到启动的程序的退出码。
(4)、不能运行*.txt文件或""
getchar();
printf("打开目录\n");
ShellExecute(NULL, "open", "c:", NULL, NULL, SW_SHOWNORMAL);
getchar();
printf("浏览目录\n");
ShellExecute(NULL, "explore", "c:", NULL, NULL, SW_SHOWNORMAL);
例程:
#include<windows.h>
#include<shellapi.h>
相关文档
最新文档