news 2026/10/31 1:01:00

vc入门宝典十二(调用其它程序)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vc入门宝典十二(调用其它程序)

调用其它程序

WinExec
原型:
UINT WinExec(
LPCSTR lpCmdLine, // address of command line
UINT uCmdShow // window style for new application
);
用于十六位操作系统及兼容系统.
例如:
WinExec("notepad.exe f://调用程序.txt",SW_SHOW);
WinExec("notepad.exe ",SW_SHOW);
不同的参数用空格分开,故路径中不能有空格,而大部分程序默认是安装在".../Program Files/...",如word,这极大的限制了WinExec的应用范围.
以上可不带路径:
1,程序所在目录.
2,当前路径.
3,系统目录,可以用GetSystemDirectory得到.
4,Windows 目录. 可以用TheGetWindowsDirectory得到.
5,在环境变量中设置的目录.

ShellExecute
原型:
HINSTANCE ShellExecute(
HWND hwnd, //父窗口句柄
LPCTSTR lpOperation, //操作,"open","print","explore"
LPCTSTR lpFile, //文件名,前面可加路径
LPCTSTR lpParameters, //参数
LPCTSTR lpDirectory, //默认文件夹
INT nShowCmd //显示方式
);

打开一个应用程序
ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );
或
ShellExecute(this->m_hWnd,"open","notepad.exe","c:/MyLog.log","",SW_SHOW );

打开一个同系统程序相关连的文档
ShellExecute(this->m_hWnd,"open","c:/abc.txt","","",SW_SHOW );

激活相关程序,发送EMAIL
ShellExecute(this->m_hWnd,"open","mailto:nishinapp@yahoo.com","","", SW_SHOW );

用系统打印机打印文档
ShellExecute(this->m_hWnd,"print","c:/abc.txt","","", SW_HIDE);

lpParameters的用法示例:
一,建立一个可以接受参数的程序call.exe,添加如下代码:
BOOL CCallApp::InitInstance()
{
int n = __argc;
for(int i = 1 ; i < n ; i++)
AfxMessageBox(__targv[i]);
//__targv[0]存储的是程序的文件名
...
}
二,Alt + F7的进行Project setting, Debug -> program argurments ->"1 2 3 4 5".
如果有多个参数,用空格分开.
三,运行.
四,执行ShellExecute(NULL,NULL,"f://call.exe","1 2 3 4 5",NULL,SW_SHOW);

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 startupInfo;
memset(&startupInfo,0,sizeof(STARTUPINFO));
startupInfo.cb = sizeof(STARTUPINFO);

示例:
//程序最启动时最大化
startupInfo.dwFlags |= STARTF_USESHOWWINDOW;
startupInfo.wShowWindow = SW_SHOWMAXIMIZED;

//运行....exe
PROCESS_INFORMATION ProcessInfo;
BOOL bCreate = ::CreateProcess
(
"f://call.exe",// 1 2 3 4",
NULL,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&startupInfo,
&ProcessInfo);

//等到call.exe执行完毕
WaitForSingleObject(ProcessInfo.hProcess,1000000);
MessageBox("调用程序结束!");

计算几何为骨,排样优化为魂
作品一亲士套料工具箱https://qinshi.blog.csdn.net/article/details/167222655作品二亲士CAD工具箱https://qinshi.blog.csdn.net//article/details/156510081经典文章推荐:二维排样https://qinshi.blog.csdn.net/article/details/164169163万物皆数学https://qinshi.blog.csdn.net/article/details/143057305查阅鄙人的博文,请点击博文下载学院导航https://qinshi.blog.csdn.net/article/details/163717324
活到老,学到老。明朝中后期,大约50%的进士能当上堂官(副部及更高);能当上堂官的举人只有十余人。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/30 23:57:58

Multi-Agent还是单Agent+Skill?架构选型决策框架

前两天有位朋友去面一个 AI 应用岗&#xff0c;回来跟我吐槽&#xff1a;“面试官问我&#xff0c;什么时候该用 Multi-Agent&#xff0c;什么时候一个 Agent Skill 就够了&#xff1f;我讲了一堆 Multi-Agent 多好多好&#xff0c;结果对方反问一句&#xff0c;那你怎么不在所…

作者头像 李华
网站建设 2026/10/30 22:36:32

Agentic Coding:从生成代码到交付结果的AI编程范式

简介&#xff1a;一份由北大青鸟人工智能研究院等团队出品的《Agentic Coding&#xff1a;从Vibe Coding到超级个体的进化之路》内部研讨讲稿&#xff0c;面向无编程经验的产品经理、教师、技术创业者&#xff0c;也适合开发者、CTO及架构师建立AI编程的系统认知。内容系统梳理…

作者头像 李华
网站建设 2026/10/30 22:16:28

可执行文件分发前的防逆向清单:半小时能过一遍

可执行文件分发前的防逆向清单&#xff1a;半小时能过一遍 【免费下载链接】bla &#x1f6e1;️ BLA (Blind LLM Agents) — Adversarial defense shield that protects binaries, Electron apps, JS bundles, Python, and WebAssembly against AI reverse-engineering agents…

作者头像 李华