找回密码
 加入
搜索
查看: 4900|回复: 10

[系统综合] [已解决]au3 判定程序自身路径并设置另外程序的快捷图标兼容性

  [复制链接]
发表于 2010-8-9 21:44:39 | 显示全部楼层 |阅读模式
本帖最后由 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](最好是窗体的我可以加几句说明)
与[Autosa1.exe]属于同一级目录
[Autosa1.exe]在桌面、开始菜单里已经分别有两个快捷图标了名称是[小程序abc],是要设定[Autosa1.exe]的快捷图标兼容性。

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

 楼主| 发表于 2010-8-9 21:49:08 | 显示全部楼层
方便的话做成弹出个窗体,几句说明,一个按钮【设置兼容性】
发表于 2010-8-10 11:14:05 | 显示全部楼层
#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兼容模式

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-8-10 16:50:01 | 显示全部楼层
本帖最后由 hwp789 于 2010-8-10 22:56 编辑

回复 3# Ziya

谢谢,终于遇到高手了,我的意图没表明所以你没明白,您这样还是比较麻烦。还得选是哪个快捷图标,我又把问题好好补充了,包括环境要求,在最上面,
辛苦,费了您不少脑细胞吧:)
发表于 2010-8-10 17:28:56 | 显示全部楼层
RegWrite('HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', @ScriptFullPath, 'REG_SZ', 'WIN98')
FileCreateShortcut(@ScriptFullPath, @DesktopDir & '\' & StringRegExpReplace(@ScriptFullPath, '.+\\(.+)\.[^\.]+$', '$1') & '.lnk')
发表于 2010-8-10 17:49:10 | 显示全部楼层
你的批处理关键字和数值是不是反了?
 楼主| 发表于 2010-8-10 21:46:50 | 显示全部楼层
回复 5# afan


你这个是把设置兼容性的程序本身加了个兼容windows98了,我的意思是把【设置兼容性程序.exe】同级目录的程序的桌面图标加上兼容windows98

不过你给我启发了,谢谢把你们俩的结合一下估计就好了:)
 楼主| 发表于 2010-8-10 21:47:53 | 显示全部楼层
你的批处理关键字和数值是不是反了?
xsjtxy 发表于 2010-8-10 17:49



     我测试了能正常工作应该没反
 楼主| 发表于 2010-8-12 00:23:30 | 显示全部楼层
#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 应该咋改呢?
发表于 2010-8-12 00:45:51 | 显示全部楼层
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

评分

参与人数 1金钱 +10 收起 理由
hwp789 + 10 谢谢

查看全部评分

 楼主| 发表于 2010-8-12 09:59:34 | 显示全部楼层
回复 10# afan


   非常感谢 afan :)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-5 11:03 , Processed in 0.088667 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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