Project1

标题: 如何在脚本里调用外部的批处理文件(.cmd) [打印本页]

作者: wubugui    时间: 2010-7-17 10:44
标题: 如何在脚本里调用外部的批处理文件(.cmd)
如何在脚本里调用外部的批处理文件(.cmd)
或者怎样调用外部文件
例如
游戏打开的同时需要打开外部的另一个文件(否则游戏无法进行)
在关闭游戏时需要同时关闭刚才打开的文件


我想用批处理来实现
思想是
用批处理打开先最小化打开游戏运行所必需的文件
然后让批处理打开游戏
在关闭时让脚本调用外部批处理
批处理同时关掉那个文件和游戏。

作者: zhixin1997    时间: 2010-7-17 11:35
我也求解~~
作者: 小宝宝    时间: 2010-7-17 11:57
沙发被抢了
作者: 紫苏    时间: 2010-7-17 12:09
ShellExecute = Win32API.new("shell32", "ShellExecute",'lppppl', 'l')
ShellExecute.call(0,"","test.cmd","","",1)
作者: wubugui    时间: 2010-7-17 13:18
回复 紫苏 的帖子


    你仔细讲讲,都有些什么参数?
作者: darkdrium    时间: 2010-7-17 13:23
回复 wubugui 的帖子
不推荐楼主这么做

第一:一个程序自动调用另一个程序是病毒的一种特征,难保一些杀软会报警
第二:用户体验非常差,试想,如果你打开仙剑奇侠传,边上出来个cmd的窗口(OOXXSOSJ)


   
作者: DeathKing    时间: 2010-7-17 14:02
同diyrpg那里的回答: Kernel模块的system方法,system方法是执行系统命令,参数是命令构成的字符串。
作者: 紫苏    时间: 2010-7-17 15:07
回复 wubugui 的帖子

什么参数,ShellExecute 的参数?按左右顺序依次是拥有者窗口句柄、执行动作(一个动词字符串,如果传递 NULL 则认为是 open)、文件路径(这里是一个可执行文件,执行前一个参数指定的动作)、参数(如果前一个参数指定的可执行文件,则这里是传递给该程序的参数)、目录(可执行程序所在目录,如果是 NULL 使用当前工作目录)、显示标志(决定如何显示该程序,这里 1 表示显示控制台窗口)
具体可参阅:http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx

其实有关执行外部程序的有以下几途径:

ShellExecute,Windows API 函数,对某个文件进行某种操作,调用后直接返回不等待,可选择是否显示窗口;
system,Kernel 中的方法,在 Shell 中(支持子 Shell 机制的系统上则是在子 Shell 中)执行 Shell 命令,等待,有窗口则显示窗口;
exec,Kernel 中的方法,执行 Shell 命令并使用创建的进程强制替换当前进程;
`  (<-- 反引号),Kernel 中的方法,执行 Shell 命令并返回其标准输出,等待,有窗口则显示窗口;
%x{命令},Ruby 的内建分隔输入,用来表示各种字面值,x 是用于 Shell 命令,大括号可以使其它任意可匹配的符号,执行效果同上面的 ` 反引号;
CreateProcess 配合可选的 WaitForSingleObject,Windows API 函数,创建进程,可选择是否等待结束,可选择是否显示窗口(自由度最高的途径),这里有一个隐藏调用外部程序的方法:http://szsu.spaces.live.com/blog/cns!D57D0E50BE1820CF!175.entry
作者: Allguard    时间: 2010-7-21 16:39
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1