[已解决]au3 判定程序自身路径并设置另外程序的快捷图标兼容性
本帖最后由 hwp789 于 2010-8-12 09:58 编辑我的批处理是已经可以正常工作如下:
==========Set_Win98.cmd==============
@echo off
setlocal EnableDelayedExpansion
' 这句啥意思我也不懂只是照抄
set "cd_=%cd%"
' 设置变量为当前批处理所在路径
echo 正在设置程序兼容 Windows 98 模式......
' 提示一一下下
echo 路径是:%cd_%
' 显示一一下下批处理完整路径
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%cd_%\Autosa1.exe" /t reg_sz /d "WIN98" /f
' 这句最重要根据前面获取的批处理所在路径 设置 Autosa1.exe 在注册表的兼容win98
echo 兼容 Windows 98 模式设置成功!
' 这句只是个提示只是摆个样子如果设置失败也会提示这句,等以后慢慢往高深了研究吧
==========Set_Win98.cmd==============
其实我的批处理已经很好的解决我要的功能了
但是运行时弹出黑窗口很不好看
能帮我转换成au3的代码吗?
这个程序有两个要求
1、判断当前文件自身路径【这个路径是任意的】
2、根据路径向注册表修改指定程序的兼容性
谢谢:)
【2010.08.10】——更具体的补充:
我有几个小软件是比较老的99年的,发现这些程序在xp下运行不太稳定需要设置兼容 Windows 98,想自己打包做了一个自动安装包发给朋友用,我那些朋友多半电脑水平一般,要求他们设置兼容性这些稍微会有点难度,所以想作成安装后自动根据安装好程序的路径来设置桌面图标&程序图标的兼容性 Windows 98。
要做的程序暂时叫 [设置兼容性.exe](最好是窗体的我可以加几句说明)
与属于同一级目录
在桌面、开始菜单里已经分别有两个快捷图标了名称是[小程序abc],是要设定的快捷图标兼容性。 方便的话做成弹出个窗体,几句说明,一个按钮【设置兼容性】 #include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("设置兼容性", 195, 53, 198, 124)
$Button1 = GUICtrlCreateButton("打开", 16, 16, 41, 25)
$Button2 = GUICtrlCreateButton("设置兼容性", 64, 16, 113, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$var = FileOpenDialog ("请选择需要设置兼容性的文件",@DesktopDir,"所有文件(*.*)")
If @error Then MsgBox(4096,"","没有选择文件!")
Case $Button2
$add = RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers",$var,"REG_SZ","WIN98")
If $add = 0 Then
MsgBox(0,"错误","添加出错,错误代码为:"&@error)
Else
MsgBox(0,"成功","兼容 Windows 98 模式设置成功!")
EndIf
EndSwitch
WEnd
不知道是不是我变笨了,越来越看不懂问题了....
点击"打开"按钮选择一个文件
点击"设置兼容性"按钮,会把该文件设置为win98兼容模式 本帖最后由 hwp789 于 2010-8-10 22:56 编辑
回复 3# Ziya
谢谢,终于遇到高手了,我的意图没表明所以你没明白,您这样还是比较麻烦。还得选是哪个快捷图标,我又把问题好好补充了,包括环境要求,在最上面,
辛苦,费了您不少脑细胞吧:) RegWrite('HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', @ScriptFullPath, 'REG_SZ', 'WIN98')
FileCreateShortcut(@ScriptFullPath, @DesktopDir & '\' & StringRegExpReplace(@ScriptFullPath, '.+\\(.+)\.[^\.]+$', '$1') & '.lnk') 你的批处理关键字和数值是不是反了? 回复 5# afan
你这个是把设置兼容性的程序本身加了个兼容windows98了,我的意思是把【设置兼容性程序.exe】同级目录的程序的桌面图标加上兼容windows98
不过你给我启发了,谢谢把你们俩的结合一下估计就好了:) 你的批处理关键字和数值是不是反了?
xsjtxy 发表于 2010-8-10 17:49 http://www.autoitx.com/images/common/back.gif
我测试了能正常工作应该没反 #include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("设置兼容性", 195, 53, 198, 124)
$Button1 = GUICtrlCreateButton("打开", 16, 16, 41, 25)
$Button2 = GUICtrlCreateButton("设置兼容性", 64, 16, 113, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
$var = @ScriptFullPath\Autosa1.exe
Case $Button2
$add = RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers",$var,"REG_SZ","WIN98")
If $add = 0 Then
MsgBox(0,"错误","设置出错,错误代码为:"&@error)
Else
MsgBox(0,"成功","兼容 Windows 98 模式设置成功!")
EndIf
EndSwitch
WEnd
根据 ziya 的修改了以后有点问题,获取Autosa1.exe 的路径不对
$var = @ScriptFullPath\Autosa1.exe 应该咋改呢? GUICreate('设置兼容性', 195, 50)
$Button2 = GUICtrlCreateButton('设置兼容性', 50, 16, 100, 25)
GUISetState()
$var = @ScriptDir & '\Autosa1.exe'
While 1
Switch GUIGetMsg()
Case -3
Exit
Case $Button2
$add = RegWrite('HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', $var, 'REG_SZ', 'WIN98')
If $add = 0 Then ContinueLoop MsgBox(48, '错误', '设置出错,错误代码为:' & @error)
MsgBox(64, '成功', '"' & $var & '" 兼容 Windows 98 模式设置成功!')
EndSwitch
WEnd 回复 10# afan
非常感谢 afan :)
页:
[1]