今天又瞎搞一天,搞啥?就是捣鼓那个shellexecuteinfo,这玩意儿一开始听着还挺唬人的,搞起来也就那么回事儿。今天我就来跟大家唠唠我这一天的“奋斗”历程。
我也不懂这是个就是装那个cab包的时候,它老是跳出来,烦得很。我就想,得,我得弄明白它。我就去翻翻那些个啥API文档,一看,SHELLEXECUTEINFO,原来是ShellExecuteEx的跟班,一个结构体,就是用来装参数的。
那咋用?
- 第一步,先整个变量。代码里头就是 static SHELLEXECUTEINFO ShExecInfo; 这样,我就有一个叫ShExecInfo的静态变量,专门用来存那些进程执行的破事儿。
- 第二步,清零。这玩意儿就像新买的手机,得先格式化一下,代码里就是用 memset 把ShExecInfo这块内存给清零,就像把房间打扫干净,准备入住。
- 第三步,填参数。这里头就有点门道,得根据你要干啥来填。我这里因为是要执行一个外部的程序,所以要设置一些参数,比如这个 shexec * size=size of(shell execute info); 就是告诉系统,这结构体有多大,还有那个 shexec * ask=see_mask_no close process; 也不知道是啥意思,反正先复制进去再说。
- 第四步,执行。这步最关键,直接调用 ShellExecuteEx(&ShExecInfo); 把咱前面准备好的那个结构体传进去,让系统去执行。
- 第五步,善后。要是执行成功,还得等等那个子进程结束,获取它的退出代码,看看有没有啥问题。
这一套流程下来,我也没完全搞懂每个参数是干啥的,但是不重要,能用就行!而且我发现这玩意儿还挺好用的,不光能打开计算器 ,还能打开记事本 ,甚至还能指定打开哪个文件,就像这样 ShellExecute(this->m_hWnd,"open","*","c://*","", SW_SHOW ); ,直接就打开我的日志文件,爽歪歪。
而且更厉害的是,这玩意儿还能和python脚本一起用。我试试用它调用一个python脚本,然后那个脚本执行完还能返回一个值,告诉我执行得咋样。就通过那个啥 *(0) ,成功就返回0,失败就返回其他的,这样我就知道脚本那边有没有出啥幺蛾子。
今天这一通折腾,虽然有点累,但也算有点收获。以后再遇到这种需要执行外部程序的情况,我就知道该咋办。我还发现,这些个技术上的东西,也没那么神秘,多试试,多看看,总能搞明白的。好,今天就唠到这儿,大家伙儿也早点休息!
免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。