找回密码
 加入
搜索
查看: 2251|回复: 5

[GUI管理] 【已解决】求能实现QQ好友拖放的GUI

  [复制链接]
发表于 2012-3-9 19:31:00 | 显示全部楼层 |阅读模式
本帖最后由 zldfsz 于 2012-3-10 11:29 编辑

众所周知,将QQ好友往桌面或某个文件夹上一拖,就会得到该好友的快捷方式,那么怎么实现往GUI界面上拖后获得该快捷方式呢,在线等待

评分

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

查看全部评分

发表于 2012-3-10 01:33:34 | 显示全部楼层
回复 1# zldfsz

你用的是QQ2012吧?试试这个.
#include <File.au3>

If @OSVersion <> "WIN_7" Then Exit


; 这里有图像图标,临时快捷方式
Global $QQ = @AppDataDir & "\Tencent\QQ\Misc\Shortcuts"
Global $file, $btn, $msg = 0, $LnkFile, $LnkPass, $ico

FileDelete($QQ & '\*.*')

$gui = GUICreate("QQ2012获得快捷方式 by lixiaolong", 320, 100, -1, -1)
$file = GUICtrlCreateInput("把QQ好友拖放到这里", 10, 5, 300, 20)
$file2 = GUICtrlCreateInput("", 10, 30, 300, 20, 0x0800)

$btn = GUICtrlCreateButton("在桌面创建快捷方式", 10, 65, 150, 20)
GUISetState()

While $msg <> -3
        _FindFile($QQ, '.lnk')
        
        $msg = GUIGetMsg()
        Select
                Case $msg = $btn
                        $dLink = GUICtrlRead($file)
                        If $dLink Then
                                If FileCreateShortcut($LnkPass[0], @DesktopDir & "\" & $dLink, '', $LnkPass[2], '', $ico) Then
                                        MsgBox(0, '创建快捷方式', 'OK!')
                                EndIf
                                Run(@ComSpec & ' /c ping 127.0.0.1 -n 3&del /q "' & $QQ & '\*.ico"', '', 0)
                        EndIf
        EndSelect
WEnd

Func _FindFile($sPath, $sFileName)
        Local $aFileList = _FileListToArray($sPath)
        If Not @error Then
                Switch $sFileName
                        Case '.lnk'
                                For $i = 1 To $aFileList[0]
                                        If StringInStr($aFileList[$i], $sFileName) Then
                                                $LnkFile = $sPath & '\' & $aFileList[$i]
                                                $LnkPass = FileGetShortcut($LnkFile)
                                                setdate()
                                                ExitLoop
                                        EndIf
                                Next
                        Case '.ico'
                                For $i = 1 To $aFileList[0]
                                        If StringInStr($aFileList[$i], $sFileName) Then
                                                $ico = $sPath & '\' & $aFileList[$i]
                                                ExitLoop
                                        EndIf
                                Next
                EndSwitch
        EndIf
        Sleep(10)
EndFunc   ;==>_FindFile

Func setdate()
        Local $Cursor = GUIGetCursorInfo($gui)
        If $Cursor[4] = $file Then
                GUICtrlSetData($file, StringRegExpReplace($LnkFile, '.+\\+', ''))
                GUICtrlSetData($file2, '"' & $LnkPass[0] & '" ' & $LnkPass[2])
                FileDelete($LnkFile)
                _FindFile($QQ, '.ico')
        EndIf
EndFunc   ;==>setdate

评分

参与人数 1金钱 +31 贡献 +5 收起 理由
zldfsz + 31 + 5 很不错,正在消化

查看全部评分

 楼主| 发表于 2012-3-10 11:31:24 | 显示全部楼层
回复 2# lixiaolong


   代码基本弄懂了, 谢谢你小龙
发表于 2012-3-10 11:48:38 | 显示全部楼层
回复 3# zldfsz

我写的不好,你自己改改吧~
 楼主| 发表于 2012-3-10 12:54:16 | 显示全部楼层
懂方法了就好办了,其实我不是想创建桌面快捷方式,我是想获得快捷方式指向的路径(包括参数)
发表于 2013-1-24 16:05:39 | 显示全部楼层
好东西。学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-9 16:12 , Processed in 0.099027 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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