找回密码
 加入
搜索
查看: 5077|回复: 16

[AU3基础] 如何查找QQ.exe再我电脑哪个盘符,然后再进行调用呢?谢谢

 火.. [复制链接]
发表于 2011-12-15 12:56:33 | 显示全部楼层 |阅读模式
只能从注册表判断吗?能不能对盘符搜索呢。谢谢啦。
发表于 2011-12-15 13:22:01 | 显示全部楼层
不知道呢……
发表于 2011-12-15 13:36:41 | 显示全部楼层
对盘符搜索太耗时间了
发表于 2011-12-15 13:53:20 | 显示全部楼层
在注册表中存在相关信息是运行QQ.exe的基本条件。既然如此,为何不读取注册表呢?
发表于 2011-12-15 13:53:29 | 显示全部楼层
先查找C:\Documents and Settings\Administrator\「开始」菜单\程序\腾讯软件\QQ2011里QQ的快捷方式,再根据快捷方式判断在那个位置
 楼主| 发表于 2011-12-15 14:22:41 | 显示全部楼层
若是从注册表读取的话,是不是也很慢呢,谢谢了。  zldfsz  若是按你的那种办法,这咋写呢?
发表于 2011-12-15 14:31:05 | 显示全部楼层
MsgBox(0, '', StringRegExpReplace(RegRead('HKEY_CLASSES_ROOT\Tencent\DefaultIcon', ''), '[^\\]+$', '') & 'QQ.exe')
发表于 2011-12-15 15:30:11 | 显示全部楼层
本帖最后由 zldfsz 于 2011-12-15 15:49 编辑

回复 6# xiaosan000


    其实推荐用A版的那个,比较简洁,我的这个也可以参考一下
$lnk=@ProgramsDir & "\腾讯软件\QQ2011\腾讯QQ2011.lnk";快捷方式路径,根据QQ版本不同会有变化
        Local $details = FileGetShortcut($lnk);获取该快捷方式的各种属性
If @error Then;如果错误,提示找不到
        MsgBox(0, "QQ路径", "未找到该路径")
Else;否则返回快捷方式的目标路径
        MsgBox(0, "QQ路径:", $details[0])
EndIf
发表于 2011-12-15 15:59:39 | 显示全部楼层
送给你,绿色版QQ也可以找到,改了软件名那就没法了。全盘找,你累不
#include <File.au3>
$var = DriveGetDrive( "all" );所有盘符名称
If NOT @error Then
        For $i = 1 to $var[0]
                _Filefind($var[$i]);针对每个盘符进行搜索
        Next
EndIf


Func _Filefind($_Path)
        $folder = _FileListToArray($_Path, "*", 2);找文件夹
        If Not IsArray($folder) Then Return 0
        For $i = 1 To $folder[0]
                        $newPath = $_Path & "\" & $folder[$i]
                        $file = _FileListToArray($newPath, "QQ.EXE", 1);找QQ.EXE
                        If @error = 0 Then
                                MsgBox(0,0,$newPath) ;满足条件的文件的路径
                                ShellExecute($newPath&"\QQ.EXE",0);打开此文件
                        Else
                                _Filefind($newPath);当前目录下找不到再继续其它路径找
                        EndIf
                Next
EndFunc
发表于 2011-12-15 16:32:32 | 显示全部楼层
$pid=ProcessExists("QQ.exe")
MsgBox(0, '', _ProcessGetLocation($pid))

Func _ProcessGetLocation($iPID)
    Local $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $iPID)
    If $aProc[0] = 0 Then Return SetError(1, 0, '')
    Local $vStruct = DllStructCreate('int[1024]')
    DllCall('psapi.dll', 'int', 'EnumProcessModules', 'hwnd', $aProc[0], 'ptr', DllStructGetPtr($vStruct), 'int', DllStructGetSize($vStruct), 'int_ptr', 0)
    Local $aReturn = DllCall('psapi.dll', 'int', 'GetModuleFileNameEx', 'hwnd', $aProc[0], 'int', DllStructGetData($vStruct, 1), 'str', '', 'int', 2048)
    If StringLen($aReturn[3]) = 0 Then Return SetError(2, 0, '')
    Return $aReturn[3]
EndFunc

给你这段代码?它能自动把QQ的运行路径梳出来。
发表于 2011-12-15 16:41:49 | 显示全部楼层
回复 9# qqgghh1


    这是什么呀,运行后除了没有报错,其它的什么就都没有了
发表于 2011-12-15 16:45:44 | 显示全部楼层
回复 11# 流浪628


    你不是要全盘找QQ.EXE吗
发表于 2011-12-15 16:45:49 | 显示全部楼层
回复 11# 流浪628


    你不是要全盘找QQ.EXE吗
发表于 2011-12-15 16:46:27 | 显示全部楼层
回复 8# zldfsz


    你这个不好用,我QQ在运行呢,这个图标是上面代码运行的结果,都什么都没有。

本帖子中包含更多资源

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

×
发表于 2011-12-15 16:48:21 | 显示全部楼层
回复 7# afan


    这段代码是好用的,我验正过了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-20 09:57 , Processed in 0.085084 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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