找回密码
 加入
搜索
查看: 2314|回复: 7

[AU3基础] EXE读取变量

  [复制链接]
发表于 2012-6-13 22:22:57 | 显示全部楼层 |阅读模式
本帖最后由 wingking84 于 2012-6-14 09:23 编辑

a.exe 要启用其它程序,分发给其它PC使用,每个PC上的程序路径不一样。
目前有2种思路:
1  在a.au3中#include "ini.au3"
ini.au3中直接定义变量$dir = "c:\a\b"
编译后,读取不到ini.au3中重新设置的变量值。

2.读取ini.
ini中设置dir = c:\a\b
但ini中有多个变量,如
dir1 = aa
dir2 = bb
dir3 = cc
len1 = 10
len2 = 20
IniReadSection (var[$i][0] =key , var[$i][1] = value) + IF 可实现,但编码有点复杂,不灵活。
想用eval($var[$i][0]) = $var[$i][1])却实现不了。

求各位指点。或者其它思路。
发表于 2012-6-13 22:49:37 | 显示全部楼层
你第一种方法我第一次见到!有创意!
发表于 2012-6-13 23:14:58 | 显示全部楼层
要启动的程序有注册表信息没?有就直接读取路径。没有就手动指定一次,保存到注册表或Ini。
发表于 2012-6-14 08:52:59 | 显示全部楼层
没事做: 可以进行全盘搜索该执行程序的.
有事做:  也可以这样:
#include <array.au3>
Local $dirs[5] = ['c:\1', 'd:\2', 'e:\3', 'c:\4', 'd:\33']
Local $sequence = Number(StringRegExpReplace(@ComputerName, '\D', ''))
If $sequence < UBound($dirs) Then
        MsgBox(0, '第 ' & $sequence & ' 台机器', '路径: ' & @TAB & $dirs[$sequence])
Else
        MsgBox(16, '第 ' & $sequence & ' 台机器', '此机器未设置好程序路径! ')
EndIf
 楼主| 发表于 2012-6-14 09:21:03 | 显示全部楼层
回复 3# afan

有的程序有注册表,有的没有。
a.exe每次启动要读取这些变量值,关键还是读取后给一个变量赋值。
 楼主| 发表于 2012-6-14 09:27:27 | 显示全部楼层
回复 4# user3000

关键是程序要和变量在不同文件。
发表于 2012-6-14 09:35:45 | 显示全部楼层
回复 5# wingking84


    如果你的 PC 名有序号,可以研究下 user3000 的代码。
也可以如下,可应对非规律 PC 名,如“abc、kkk、sd2”
x.ini 文件大致如下
[dd]
abc = xx\xx
kkk = xx\xxx
sd2 = x\x
...

$sDir = IniRead('x.ini', 'dd', @ComputerName, '')
发表于 2012-6-14 11:06:59 | 显示全部楼层
笨人有笨办法.就是在ini里面修改
[机器名1]
run=程序路径
[机器名2]
run=程序路径

然后程序里只要写 IniRead('x.ini',  @ComputerName, "run")
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-27 11:54 , Processed in 0.089823 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表