关于可执行程序的调用
就是文件自动升级时主程序调用升级程序,如何处理? 问题点数:20、回复次数:10Top
1 楼chlin_tin(空中漫步)回复于 2006-03-04 09:33:24 得分 0
自个顶一个Top
2 楼lurel(城市陌生人)回复于 2006-03-04 09:42:39 得分 10
用ShellExecute;
例如打开记事本
ShellExecute(NULL,"open","notepad.exe",NULL,"%SystemRoot%\\system32\\",SW_SHOW);Top
3 楼chlin_tin(空中漫步)回复于 2006-03-04 11:23:19 得分 0
还有一个问题,如果我从A程序调用B程序来升级A程序,那么A程序如何关闭,当B程序完成后,如何再打开A程序?Top
4 楼WaveYang(波光·弦影)回复于 2006-03-04 11:33:19 得分 6
ShellExecute(NULL,"open","B.exe",NULL,"%SystemRoot%\\system32\\",SW_SHOW);
Application->Terminate(); //关闭A程序
B程序打开A程序的方法同上。Top
5 楼lurel(城市陌生人)回复于 2006-03-04 11:36:03 得分 0
1,
这个很容易,在升级时,可以B调用FindWindow查找A程序的句柄,然后发送WM_CLOSE消息,就可以关闭A了
例如:在
HWND hWndMain;
hWndMain=FindWindow(NULL,"A的标题名");
if(hWndMain!=NULL)
{
PostMessage(hWndMain,WM_CLOSE,0,0);
}
2.在B关闭前,调用ShellExecute启动A;
Top
6 楼lother(阿艺)回复于 2006-03-05 09:55:56 得分 1
很好的方法!
学习Top
7 楼chlin_tin(空中漫步)回复于 2006-03-06 08:47:11 得分 0
hWndMain=FindWindow(NULL,"A的标题名");
这句不是很明白,A的标题名是指From中的Caption吗?Top
8 楼cjianwen(空前)回复于 2006-03-06 08:51:16 得分 3
嗯,也可以用类名的~!Top
9 楼chlin_tin(空中漫步)回复于 2006-03-06 09:53:10 得分 0
用类名?可不可以举个例Top
10 楼chlin_tin(空中漫步)回复于 2006-03-06 10:32:43 得分 0
问题已经解决了,谢谢!Top




