目前有个功能,需要在mfc中调用python编写的pyw文件,每次MFC程序运行时,自动启动pyw文件。从网上搜索到如下的两个运行命令:
ShellExecute(0,"open","aaa.exe","",".\\",SW_SHOWMINIMIZED);
WinExec("cmd.exe /c pythonw.exe .\\bbb.pyw",SW_SHOWMINIMIZED);
ShellExecute函数只能执行exe文件的自动运行,而pyw文件只能使用命令行的方式运行,所以只能使用WinExec函数。
在win10测试环境下以上WinExec语句运行正常,但是放到生产环境win7下,语句死活执行不成功,包括idle.pyw的方式都试了就不行。但是奇怪的地方是如果双击pyw文件,是可以自动运行的,一定是命令行的哪个地方存在问题。
一度进入死胡同后,在任务管理器中看到有两个进程pythonw和pyw,将执行语句改成
WinExec("cmd.exe /c pyw.exe .\\bbbb.pyw",SW_SHOWMINIMIZED);
再次测试,居然运行成功了!
目前存在一个小问题是pyw程序起来后一直有个命令黑框消失不了,但是不影响使用,先不管了。