zldfsz 发表于 2012-3-9 19:31:00

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

本帖最后由 zldfsz 于 2012-3-10 11:29 编辑

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

lixiaolong 发表于 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, @DesktopDir & "\" & $dLink, '', $LnkPass, '', $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
                                        If StringInStr($aFileList[$i], $sFileName) Then
                                                $LnkFile = $sPath & '\' & $aFileList[$i]
                                                $LnkPass = FileGetShortcut($LnkFile)
                                                setdate()
                                                ExitLoop
                                        EndIf
                                Next
                        Case '.ico'
                                For $i = 1 To $aFileList
                                        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 = $file Then
                GUICtrlSetData($file, StringRegExpReplace($LnkFile, '.+\\+', ''))
                GUICtrlSetData($file2, '"' & $LnkPass & '" ' & $LnkPass)
                FileDelete($LnkFile)
                _FindFile($QQ, '.ico')
        EndIf
EndFunc   ;==>setdate

zldfsz 发表于 2012-3-10 11:31:24

回复 2# lixiaolong


   代码基本弄懂了, 谢谢你小龙

lixiaolong 发表于 2012-3-10 11:48:38

回复 3# zldfsz

我写的不好,你自己改改吧~

zldfsz 发表于 2012-3-10 12:54:16

懂方法了就好办了,其实我不是想创建桌面快捷方式,我是想获得快捷方式指向的路径(包括参数)

fanxiang_1984 发表于 2013-1-24 16:05:39

好东西。学习了
页: [1]
查看完整版本: 【已解决】求能实现QQ好友拖放的GUI