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

[系统综合] 注册表函数

  [复制链接]
发表于 2014-9-9 19:33:00 | 显示全部楼层 |阅读模式
本帖最后由 wangms 于 2014-9-10 09:12 编辑

这几天发现_WinAPI_AssocQueryString ( $sAssoc, $iType [, $iFlags = 0 [, $sExtra = '']] )函数很实用,根据文件扩展名如.au3,返回参数$iType 指定以下值之一的有关信息:
    $ASSOCSTR_COMMAND --- 与 Shell 动词相关联的命令字符串.
    $ASSOCSTR_EXECUTABLE --- Shell 动词命令的可执行文件字符串.
    $ASSOCSTR_FRIENDLYDOCNAME --- 文档类型名称.
    $ASSOCSTR_FRIENDLYAPPNAME --- 可执行文件名称.
    $ASSOCSTR_NOOPEN --- 忽略打开子键项相关的信息.
    $ASSOCSTR_SHELLNEWVALUE --- 新 Shell 的子键项.
    $ASSOCSTR_DDECOMMAND --- DDE 命令模板.
    $ASSOCSTR_DDEIFEXEC --- 用于创建进程的 DDE 命令.
    $ASSOCSTR_DDEAPPLICATION --- 传递 DDE 应用程序的名称.
    $ASSOCSTR_DDETOPIC --- 传递 DDE 的主题名称.
    $ASSOCSTR_INFOTIP --- 提示注册表值信息.
    $ASSOCSTR_QUICKTIP --- IE 6 或更高版本.快速提示注册表值.
    $ASSOCSTR_TILEINFO --- IE 6 或更高版本.并列显示注册表值.
    $ASSOCSTR_CONTENTTYPE --- IE 6 或更高版本. 描述 MIME 文件关联类型.
    $ASSOCSTR_DEFAULTICON --- IE 6 或更高版本. 返回图标资源路径.
    $ASSOCSTR_SHELLEXTENSION --- IE 6 或更高版本. Shell 对象关联的扩展.



如根据.au3扩展名可返回:

$ASSOCSTR_FRIENDLYDOCNAME  --->   AutoIt v3 Script                                    文档类型名称
$ASSOCSTR_COMMAND                --->    "d:\AutoIt3\AutoIt3.exe" "%1" %*     与 Shell 动词相关联的命令字符串
$ASSOCSTR_EXECUTABLE           --->   d:\AutoIt3\AutoIt3.exe                         Shell 动词命令的可执行文件字符串.
$ASSOCSTR_DEFAULTICON          --->   d:\AutoIt3\Icons\au3script_v10.ico       图标资源路径

咋样,很实用吧!如是写代码读注册那是很麻烦的,得按:扩展名-->标识主键-->shell  在注册表枚举去查找,很费事。
        
         但这个函数很奇怪,既然能直接返回shell下面的许多信息,为什么不多加一个返回Shell 动词名称的$iType 选项?
Shell 动词名称,是我暂定名字,就是注册表子键shell的默认值,如图圈圈里的玩意:
圈圈里的玩意就是决定双击AU3脚本,是运行、还是编辑的东东。
请高手老师们费神扩展一下这个函数,多加一个返回Shell 动词名称的$iType 选项。在此谢谢先!!

_WinAPI_AssocQueryString()函数如下:

Func _WinAPI_AssocQueryString($sAssoc, $iType, $iFlags = 0, $sExtra = '')
        Local $sTypeOfExtra = 'wstr'
        If Not StringStripWS($sExtra, $STR_STRIPLEADING + $STR_STRIPTRAILING) Then
                $sTypeOfExtra = 'ptr'
                $sExtra = 0
        EndIf

        Local $aRet = DllCall('shlwapi.dll', 'long', 'AssocQueryStringW', 'dword', $iFlags, 'dword', $iType, 'wstr', $sAssoc, _
                        $sTypeOfExtra, $sExtra, 'wstr', '', 'dword*', 4096)
        If @error Then Return SetError(@error, @extended, '')
        If $aRet[0] Then Return SetError(10, $aRet[0], '')

        Return $aRet[5]
EndFunc   ;==>_WinAPI_AssocQueryString

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +80 收起 理由
绿色风 + 80 提问还要收费,越来越高级的了.改回来吧.

查看全部评分

 楼主| 发表于 2014-9-9 19:41:03 | 显示全部楼层
自己先顶一顶...................................
发表于 2014-9-9 20:03:06 | 显示全部楼层
什么宝贝还要花钱买?
发表于 2014-9-9 20:08:37 | 显示全部楼层
好歹  也介绍下啊 卖钱的东西
 楼主| 发表于 2014-9-9 21:00:30 | 显示全部楼层
回复 4# header


    不好意思,本是悬赏,搞成了付费,哈哈
 楼主| 发表于 2014-9-9 21:04:53 | 显示全部楼层
本帖最后由 wangms 于 2014-9-9 21:10 编辑

绿清风老师,不好意思,本是悬赏的,刚还笑话这个帖子http://www.autoitx.com/thread-45218-1-1.html,自己立马就犯同样的错误,更是可笑。刚还在您帖子里掏了许多的宝贝,您的无私分享精神实在令人钦佩!!
发表于 2014-9-10 00:58:18 | 显示全部楼层
不懂…帮顶……
 楼主| 发表于 2014-9-10 23:26:30 | 显示全部楼层
快下沉啦自己顶一顶。。。。。。。。。。。。。。。。。。
 楼主| 发表于 2014-9-12 21:35:52 | 显示全部楼层
快下沉啦自己再顶一顶。。。。。。。。。。。。。。。。。。
发表于 2014-9-12 23:37:23 | 显示全部楼层
函数实用但是读的图标是16*16的,我那个去~  还是得我自己枚举~~
 楼主| 发表于 2014-9-16 22:12:26 | 显示全部楼层
没有哪位高手能出手吗?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 16:27 , Processed in 0.163879 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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