VC中调用其他程序的方法(函数)

VC++程序读取和修改其它进程的变量,调用其它进程的函数 0x0061FE74是本进程的地址 阅读详情

WinExec,ShellExecute ,CreateProcess

可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。
     WinExec 两个参数,前一个指定路径,后一个指定显示方式。
     ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。
     CreateProcess 一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等。如果我们要得到足够多的关于新的进程的信息,控制新的进程的细节属性,若要达到这些目的,我们就需要使用CreateProcess函数了。

三个SDK函数( WinExec、ShellExec、CrateProcess )的语法:


WinExec

这个函数最简单,只有两个参数,原型如下:


       UINT WinExec(

       LPCSTR lpCmdLine,    // 命令路径

       UINT uCmdShow       // 显示方式;



使用方法如下:

WinExec("Notepad.exe", SW_SHOW);   // 打开记事本
WinExec("D://Program Files//Test//Test.exe",SW_SHOWMAXIMIZED); // 以最大化的方式打开Test.exe
需要注意的是若用 SW_SHOWMAXMIZED 方式去加载一个无最大化按钮的程序,譬如Neterm,Calc 等等,就不会出现正常的 窗体,但是已经被加到任务列表里了。


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", "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


*********本人测试在EVC下的参数形式是下面的形式**************
原型如下:

       BOOL CreateProcess(

       LPCTSTR lpApplicationName, //执行程序名

       LPTSTR lpCommandLine,   // 参数行

       //下面两个参数描述了所创建的进程和线程的安全属性,如果为NULL则使用默认的安全属性

       LPSECURITY_ATTRIBUTES lpProcessAttributes,   // process security attributes

       LPSECURITY_ATTRIBUTES lpThreadAttributes,    // thread security attributes

       BOOL bInheritHandles,   // 继承标志

       DWORD dwCreationFlags, // 创建标志

       LPVOID lpEnvironment,   // 环境变量

       LPCTSTR lpCurrentDirectory,    // 运行该进程的初始目录

       LPSTARTUPINFO lpStartupInfo,   // 用于在创建子进程时设置各种属性

       LPPROCESS_INFORMATION lpProcessInformation //用于在进程创建后接受相关信息 

使用方法如下:
              PROCESS_INFORMATION pi;
                        STARTUPINFO si;
                        memset(&si,0,sizeof(si));
                        si.cb=sizeof(si);
                       si.wShowWindow=SW_SHOW;
                        si.dwFlags=STARTF_USESHOWWINDOW;
                        bool fRet=CreateProcess("D://putty.exe",NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi);


可以看出,通过上面的几个不同的方法,都可以实现在应用程序中打开其他应用程序的目的,其中有些方法可能会麻烦一点,所以就需要我们根据不同的目的去选择最适合自己的方法去实现自己的目的!





关于三个SDK函数: WinExec, ShellExecute,CreateProcess 的其他注意事项:

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

WinExec("D://Program Files//Test//Test.exe",SW_SHOWMAXIMIZED);

ShellExecute(NULL,"open","C://Test.txt",NULL,NULL,SW_SHOWNORMAL);
bool fRet=CreateProcess("D://putty.exe",NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi);

Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1484984

VC++将应用程序已运行的实例调至前台 摘要:VC/C++源码,界面编程,应用程序   VC++将应用程序已运行的实例调至前台,源码运行截图如上所示。 立即下载

相关推荐

STM32在六轴机械臂实时控制中的选型与分层架构设计

嵌入式实时控制系统中,微控制器的选型直接决定运动控制精度与系统可靠性。其核心在于匹配确定性中断响应、低延迟外设协同与工业协议栈支持等硬性指标。STM32凭借Cortex-M内核的NVIC调度能力、成熟HAL库及CAN FD/高级定时器等专用外设,在机电一体化场景中成为伺服控制中枢的首选。相比ESP32等通用MCU,STM32在硬实时性、EMC认证生态和工业总线兼容性上具备不可替代优势。本文围绕GTB六轴机械臂项目,详解基于STM32F407的硬件抽象层配置、FreeRTOS任务调度、事件队列解耦及闭环控制数

jupi8的博客 755

vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess

目前知道三种方式:WinExec,ShellExecute ,CreateProcess,别人已经总结的很好了《vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess》,我全文转载一下,另外后面加点自己的总结(黑体部分,除了标题)。 三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程

人工智能 6945

手把手教你用Simulink搭建PMSM FOC控制模型(附完整仿真文件下载)

本文手把手教你使用Simulink搭建完整的永磁同步电机(PMSM)磁场定向控制(FOC)仿真模型。内容涵盖从电机与逆变器建模、核心的坐标变换(Clark/Park变换)实现、电流环与速度环PID整定,到SVPWM调制与系统集成调试的全过程,并提供关键参数设置与实用调试技巧,帮助工程师快速掌握FOC的工程实现。

silver的专栏 863

进程间通信_共享内存类_C++实现

头文件: [cpp:nogutter] view plaincopyprint? /******************************************************************++  File Name :   FFMClass.h ++  Description: 共享內存類 ------------------------

chinabinlang的专栏 3466

ILI9488 TFT屏驱动与触摸协同开发指南

TFT-LCD显示模块是嵌入式人机交互系统的核心外设,其工作原理依赖于专用显示控制器(如ILI9488)对GRAM显存的精确读写,并通过SPI等串行总线接收指令与图像数据。理解RGB接口时序、寄存器初始化流程及DC/CS信号控制逻辑,是实现稳定显示的基础技术前提;而四线电阻式触摸功能则需配合XPT2046类ADC控制器,通过独立SPI或模拟时序完成坐标采集。该方案兼顾低功耗、高集成与工程可移植性,广泛应用于工业HMI、仪器仪表及STM32F407等MCU平台的教学与产品开发。本文围绕3.5英寸320×480

weixin_33814090的博客 149

03 Aras Innovator二次开发-服务端方法(二)

Aras Innovator二次开发-服务端方法书写

企业信息化(PLM,ERP.MES) 2017

VC中调用其他应用程序的方法(函数) WinExec,ShellExecute ,CreateProcess

VC中调用其他应用程序的方法(函数) screen.width/2)this.style.width=screen.width/2;" border="0" alt="" />三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最

sanshao27的专栏 2689

别再硬啃理论了!用Simulink双脉冲实验,5分钟搞懂MOSFET二极管反向恢复

本文通过Simulink双脉冲实验仿真,帮助电力电子学习者快速理解MOSFET二极管反向恢复特性。文章详细介绍了实验搭建步骤、关键参数配置及波形解析,将抽象理论转化为可视波形,大幅提升学习效率。特别适合需要直观理解反向恢复过程的工程师和学生。

weixin_30918633的博客 955
上一篇: 在DLL中使用资源
下一篇: 乔布斯:影响我一生的三个故事
jiangdf
博客等级 码龄19年 86粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值