ShellExecute函数打开exe可执行文件问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ShellExecute函数打开exe可执行文件问题相关的知识,希望对你有一定的参考价值。
VC++ 执行ShellExecute(NULL,"open","1.exe",NULL,"E:\\debug",SW_SHOWNORMAL);可打开1.exe可执行文件。但是ShellExecute(NULL,"open",filename.c_str(),NULL,filepath.c_str(),SW_SHOWNORMAL); 其中filename和filepath都是从配置文件中获取。执行此条语句却不能打开1.exe可执行文件。求高手解答!
不会,你先确定,filename.c_str()执行后能不能返回可执行文件名,还有后面的filepath.c_str()函数能不能获取文件路径,
如果上面两部确定可以的话,应该就可以正常打开了!追问
我调试跟踪了,filename和filepath的值和以上填入函数内的值是相同的。
还有一点就是我在函数之前赋值
filename="1.exe";
filepath="E:\\debug";
又可以执行。
为什么从配置文件中获取的变量就不行了?
在函数之前这赋值肯定是可以的!问题就在于你调用的函数有没有得到相应的路径
推荐方法:
1、可通过Messagebox函数,将filepath.c_str()函数得到的字符串打印出来,看看是否正确。
2、在函数内部定义一个字符数组,然后通过filepath.c_str()函数得到文件名,并保存在数组中,然后用数组作为参数传递给ShellExecute,看看怎么样!
希望能帮到你!望采纳!
Messagebox显示也一样。
用这2个字符数组传入也一样没结果。
char *str111= new char[filepath.length()+1];
char *str222= new char[filename.length()+1];
strcpy(str111,filepath.c_str());
strcpy(str222,filename.c_str());
就是不清楚为什么!
用Messagebox显示,能正常显示文件名和路径名吗??如果也不可以,那就说明是你的函数没有得到文件名和路径民!那你看看那个函数 是是不是有问题呢。。
追问messagebox显示的文件和路径名也一样,但是函数返回值表明就是文件名不对,这个问题有点匪夷所思。
追答是同一目录,不过还是谢谢你。问题已经解决了,读文件内容我换成fstream类读取就正确了。
用Python 打开程序的两中方法
1、ShellExecute函数
import win32api
win32api.ShellExecute(0, ‘open‘, ‘notepad.exe‘, ‘‘, ‘‘, 0) # 后台执行
win32api.ShellExecute(0, ‘open‘, ‘notepad.exe‘, ‘‘, ‘‘, 1) # 前台打开
win32api.ShellExecute(0, ‘open‘, ‘notepad.exe‘, ‘wmi.txt‘, ‘‘, 1) # 打开文件
win32api.ShellExecute(0, ‘open‘, ‘iexplore.exe‘, ‘https://www.baidu.com/‘, ‘‘, 1) # 用IE浏览器打开百度网址
win32api.ShellExecute(0, ‘open‘, ‘D:Program Files (x86)QQBinQQScLauncher.exe‘, ‘‘, ‘‘, 1) #打开QQ程序
2、CreateProcess
下面实例为打开,关闭,判断是否关闭
import win32process import time # 打开记事本,获得其句柄 handle = win32process.CreateProcess(r‘C:Windows otepad.exe‘, ‘‘, None, None, 0, win32process.CREATE_NO_WINDOW, None, None, win32process.STARTUPINFO()) time.sleep(2) print(handle) # 终止进程(程序柄句,0为关闭) win32process.TerminateProcess(handle[0], 0) import win32event
#等待进程结束 handle[0]为窗口的柄句,如果为-1,则一直等待. 如果该柄句程序关闭后 则输出为0 #可以判断程序是否关闭了 print(win32event.WaitForSingleObject(handle[0], -1))
以上是关于ShellExecute函数打开exe可执行文件问题的主要内容,如果未能解决你的问题,请参考以下文章