使用vs2010写一个应用程序,用来调用另一个程序。

需求是这样的:

1.制作一个向导,安装一个应用程序(Control.exe),这个程序调用另一个程序(Sam.exe)的同时,传递一个参数进去(new_1.Vip)。

2.制作向导的脚本会向Control.exe传递一个参数,如果参数和Control.exe中的参数相同,那么就可以调用Sam.exe,

(现在不用管参数怎么传,参数是什么,如何比较等,后面会讲解)。

 

一,使用HM NIS Edit生成一个向导,文件->新建脚本:向导,然后一直下一步也行,但要注意两点:

(1)5/9页,应用程序文件,在建立自己的应用程序时要删除掉两个模板自带的两个文件,选中,点击 “×” 那个按钮即可。

(2)6/9页,下部的快捷方式,就是字面上的意思,他们是一 一对应的,比如桌面的快捷方式对应 $INSTDIR\Sam.exe。可以双击,选择修改。

下面是一个指令:ExecShell。

这是说明和例子,来源于NSIS Reference。

action command [parameters] [SW_SHOWDEFAULT | SW_SHOWNORMAL | SW_SHOWMAXIMIZED | SW_SHOWMINIMIZED | SW_HIDE]
ExecShell "open" "http://nsis.sf.net/"
ExecShell "open" "$INSTDIR\readme.txt"
ExecShell "print" "$INSTDIR\readme.txt"

ExecShell  "  "   "$INSTDIR\Control.exe"   "ShellCmd "  SW_HIDN                  ;ShellCmd 只是一个字符串,无其他特殊意思

ExecShell :指令;

"  "  :  这个是可以为空的,具体有哪些参数上文档看;

 "$INSTDIR\Control.exe"  :指令执行的应用程序名称;

"ShellCmd "  : 传入的参数(怎么得到的后面说明),可以是多个参数,如: ' "aaa" "bbb" "aa bb cc" ' ,,每一个 " "  括起来的算是一个字符(空格也是一个字符,不是分隔符)。所以上面有三个参数:"aaa"   "bbb"  和 " aa bb cc"。

SW_HIDN  :这个位置的参数可以有几种。具体的就不这儿说明了。

 

vs部分:这部分已经假定读者对Unicode字符集和LPSTR,LPWSTR,LPCWSTR,LPCSTR,以及TCHAR有一定了解,

了解window API,后面会使用到WritePrivateProfileString,和GetPrivateProfileString以及ShellExecute。

建项目部分直接过:

int APIENTRY_tWinMain(

                                         HINSTANCE hInstance,   

                                         HINSTANCE hPrevInstance,

                                         LPTSTR        lpCmdLine,//得到ExecShell传入和参数:ShellCmd ,

                                         int                   nCmdshow

                                          )

          {

                   //do something;

          }

lpCmdLine中的数据使用这种方式提取出来:

int nArgs;

LPWSTR *szArglist = CommanLineToArgvW(GetCommandLineW(),&nArgs);//GetCommandLineW()作用搜一下就有了。

for(int i=1;i<nArgs;i++)

{

     if(_wcsicmp( L"_Yes",szArglist[i] ) ==0)//_wcsicmp是比较两个字符串是否相等,相等则返回 0 .

    {

     //do something;

    }

}

先到这儿了。

------------------------------------------------------------------------- 后面还没写好-------------------------------------------------------------------

对ini文件的操作:WritePrivateProfileString,和GetPrivateProfileString

参数详细说明看文档或者搜一下。

说明一下:

ini文件结构是这样的:

[节名]

键名  =  键值

WritePrivateProfileString:执行写入ini文件某个键的键值的操作,

_T(" "):可以根据环境选择是Unicode合适Anis(可以了解一下Unicode)。

WritePrivateProfileString(_T("StudentInfo"),_T("Name"),_T("strName"),_T("c:\\asd.ini"));

说明:StudentInfo :ini文件节名

           Name  :欲修改的键名

          strName  :欲修改的键名的键值

          c:\\asd.ini:修改操作的ini文件路径

GetPrivateProfileString:读取ini文件中某个键 的键值的操作。

GetPrivateProfileString("NETWORK","ServerIP","", ip,sizeof(ip), "Server.ini");

说明:NETWORK:ini文件节名

           ServerIP:欲修改的键名

          strName  :欲修改的键名的键值

          c:\\asd.ini:修改操作的ini文件路径

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值