Внести свою программу на панель быстрого запуска - VB

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, хотелось бы узнать как можно закинуть программу на панель быстрого запуска, посоветуйте пожалуйста какое API тут использовать, заранее спасибо.

Решение задачи: «Внести свою программу на панель быстрого запуска»

textual
Листинг программы
  1. '****************************************************************************
  2. '* Script utility for managing shortcut files
  3. '* ver 1.07 2011.07.27
  4. '* Programmed by Polyakov A.N. mailto:xey@yandex.ru
  5. '****************************************************************************
  6. '
  7. ' Add Shortcut  - lnk.vbs /add   <shortcut> <target> [args] [work_dir] [icon] [win_style] [hot_key] [descr]
  8. ' Get Shortcut  - lnk.vbs /get   <shortcut>
  9. ' Get Script    - lnk.vbs /get!  <shortcut>
  10. '   or          - lnk.vbs /getscript <shortcut>
  11. ' Find Shortcut - lnk.vbs /find  <folder>   <target_to_find> [args_to_find]
  12.  
  13. ' <shortcut> : [sf:SpecialFolder\]Path\ShortcutFile[.lnk]
  14. ' <folder>   : [sf:SpecialFolder\]Path
  15. '
  16. ' SpecialFolder :
  17. '   Desktop           - Рабочий стол
  18. '   Favorites         - Избранное
  19. '   Fonts             - Шрифты
  20. '   MyDocuments       - Мои документы
  21. '   NetHood           - Сетевое окружение
  22. '   PrintHood         - Принтеры
  23. '   Programs          - подменю Программы из меню Пуск
  24. '   Recent            - подменю Документы из меню Пуск
  25. '   SendTo            - подменю Отправить из контекстного меню файлов
  26. '   StartMenu         - Главное меню
  27. '   Startup           - Автозагрузка из подменю Программы
  28. '   Templates         - Шаблоны
  29. ' Only WinNT/2000/XP/2003 :
  30. '   AllUsersDesktop   - Рабочий стол всех пользователей
  31. '   AllUsersStartMenu - Главное меню всех пользователей
  32. '   AllUsersPrograms  - подменю Программы из меню Пуск всех пользователей
  33. '   AllUsersStartup   - Автозагрузка из подменю Программы всех пользователей
  34.  
  35. ' [icon] : IconFileName,IconIndex
  36. '   Index 0 is first icon in the file
  37.  
  38. ' [win_style] : 3 - Maximize, 4 - Standard, 7 - Minimze
  39.  
  40. ' [hot_key] : ALT+SHIFT+<Chr>,  CTRL+ALT+<Chr>,
  41. '             CTRL+SHIFT+<Chr>, ALT+CTRL+SHIFT+<Chr>
  42.  
  43. ' <target_to_find> : target|rx:RegExped_Target
  44. ' [args_to_find]   : args|rx:RegExped_Args
  45.  
  46. ' [args]           special symbols : ^  -> "
  47. '                                    ^^ -> ^
  48.  
  49. rem BEGIN
  50.  
  51. ' ver 1.07 2011.07.27 - add alias "/getscript" for "/get!" key
  52. ' ver 1.06 2010.04.18 - add special symbols ^ for "
  53. ' ver 1.05 2009.09.01 - add return code (for %ERRORLEVEL% variable)
  54. ' ver 1.04 2008.10.30 - fix <shortcut> parsing; fix SpecialFolder order; create folders for /add
  55. ' ver 1.03 2008.08.27 - add /find key
  56. ' ver 1.02 2007.06.16 - support URL-links
  57. ' ver 1.01 2006.12.08 - check lnk-file existance; change output format
  58. ' ver 1.00 2006.01.21
  59.  
  60. on Error Resume Next
  61.  
  62. const forRead=1
  63. const forWrite=2
  64.  
  65. dim lnk_file, url, target, arg, path, shortcut_name, work_dir, icon, win_style
  66. dim shell, shortcut, parentFolder, fso, fo, rx, colFile, objFile, objFldr
  67. dim Q, ext, rx1, rx2
  68.  
  69. set shell = WScript.CreateObject("WScript.Shell")
  70. set fso = CreateObject("Scripting.FileSystemObject")
  71.  
  72. outCon=right(LCase(wScript.FullName),11)="cscript.exe"
  73.  
  74. nl = chr(13) & chr(10)
  75.  
  76. set pars = WScript.Arguments
  77. cnt=pars.count
  78.  
  79. if cnt<2 then
  80.    ShowHelp
  81. end if
  82.  
  83.  
  84. cmd=LCase(pars(0))
  85.  
  86. lnk_file=pars(1)
  87.  
  88. if LCase(left(lnk_file,3))="sf:" then
  89.    arr1=split(pars(1),"\")
  90.    arr2=split(arr1(LBound(arr1)),":")
  91.    lnk_file=replace(pars(1),arr1(LBound(arr1)),shell.SpecialFolders(arr2(LBound(arr2)+1)))
  92. end if
  93.  
  94.  
  95. if cmd="/getscript" then cmd="/get!"
  96.  
  97. if cmd="/find" then
  98.    if cnt<3 then ShowHelp
  99.  
  100.    folder=lnk_file
  101.  
  102.    target=LCase(trim(pars(2)))
  103.    rx1=left(target,3)="rx:"
  104.    if rx1 then target=right(target,len(target)-3)
  105.  
  106.    if cnt>3 then args=LCase(trim(pars(3))) else args=""
  107.    rx2=left(args,3)="rx:"
  108.    if rx2 then args=right(args,len(args)-3)
  109.  
  110.    if rx1 or rx2 then
  111.       set rx=new RegExp
  112.       rx.IgnoreCase=true
  113.    end if
  114.  
  115.    set colFile=fso.getFolder(folder).Files
  116.    for each objFile in colFile
  117.      lnk_file=objFile.Name
  118.      ext=LCase(right(lnk_file,3))
  119.      if (ext="lnk") or (ext="url") then
  120.         set shortcut = shell.CreateShortcut(folder & "\" & lnk_file)
  121.         Q=false
  122.         if rx1 then
  123.            rx.pattern=target
  124.            Q=rx.test(LCase(shortcut.TargetPath))
  125.         else
  126.            Q=LCase(shortcut.TargetPath)=target
  127.         end if
  128.         if len(args)>0 then
  129.            if rx2 then
  130.               rx.pattern=args
  131.               Q=Q and rx.test(LCase(shortcut.Arguments))
  132.            else
  133.               Q=Q and LCase(shortcut.Arguments)=args
  134.            end if
  135.         end if
  136.         if Q then WScript.echo folder & "\" & lnk_file
  137.      end if
  138.    next
  139.    WScript.quit
  140. end if
  141.  
  142. url=false
  143.  
  144. if cmd="/add" then
  145.    if cnt<3 then ShowHelp
  146.  
  147.    target=trim(pars(2))
  148.    url=Instr(target,"://")>0
  149.  
  150.    if not url then
  151.       if cnt>3 then args=repl2(trim(pars(3)),"^^","^","^",chr(34)) else args=""
  152.       if cnt>4 then work_dir=trim(pars(4)) else work_dir=""
  153.  
  154.       if len(work_dir)=0 then
  155.          set fso = CreateObject("Scripting.FileSystemObject")
  156.          set fo  = fso.getFile(target)
  157.          if (Err.Number<>0) then
  158.             Err.clear
  159.          else
  160.             if fo.type<>"" then
  161.                work_dir=fo.parentFolder
  162.             end if
  163.          end if
  164.       end if
  165.  
  166.       icon=""
  167.       if cnt>5 then
  168.          icon=trim(pars(5))
  169.       end if
  170.  
  171.       win_style=4
  172.       if cnt>6 then
  173.          win_style=trim(pars(6))
  174.       end if
  175.  
  176.       hot_key=""
  177.       if cnt>7 then
  178.          hot_key=UCase(trim(pars(7)))
  179.       end if
  180.  
  181.       descr=""
  182.       if cnt>8 then
  183.          descr=trim(pars(8))
  184.       end if
  185.    end if
  186. end if
  187.  
  188.  
  189. S=LCase(right(lnk_file,4))
  190. if (S<>".lnk") and (S<>".url") then
  191.    S=".lnk"
  192.    if url then
  193.       S=".url"
  194.    end if
  195.    lnk_file=lnk_file & S
  196. end if
  197.  
  198.  
  199. QRet=0
  200.  
  201. Q=fso.FileExists(lnk_file)
  202. set shortcut = shell.CreateShortcut(lnk_file)
  203.  
  204. select case cmd
  205.   case "/add"
  206.     set objFldr=fso.CreateFolder(fso.GetParentFolderName(lnk_file))
  207.     shortcut.TargetPath=target
  208.     shortcut.IconLocation=icon
  209.     if not url then
  210.        shortcut.Arguments=args
  211.        shortcut.WorkingDirectory=work_dir
  212.        shortcut.IconLocation=icon
  213.        shortcut.WindowStyle=win_style
  214.        shortcut.HotKey=hot_key
  215.        shortcut.Description=descr
  216.     end if
  217.     Err.clear
  218.     shortcut.save
  219.     QRet=Err.Number
  220.  
  221.   case "/get"
  222.     if Q then
  223.        target=shortcut.TargetPath
  224.        args=shortcut.Arguments
  225.        work_dir=shortcut.WorkingDirectory
  226.        icon=shortcut.IconLocation
  227.        win_style=shortcut.WindowStyle
  228.        hot_key=shortcut.Hotkey
  229.        descr=shortcut.Description
  230.        Error=""
  231.     else
  232.        Error=" ERROR: (FILE DON'T EXIST) "
  233.        QRet=1
  234.     end if
  235.  
  236.     wscript.echo "Shortcut File   =" & Error & lnk_file
  237.     wscript.echo "TargetPath      =" & target
  238.     wscript.echo "Arguments       =" & args
  239.     wscript.echo "WorkingDirectory=" & work_dir
  240.     wscript.echo "IconLocation    =" & icon
  241.     wscript.echo "WindowStyle     =" & win_style
  242.     wscript.echo "HotKey          =" & hot_key
  243.     wscript.echo "Description     =" & descr
  244.  
  245.   case "/get!"
  246.     if Q then
  247.        lnk_file=replace(sf(lnk_file),"%","%%")
  248.        target=replace(sf(shortcut.TargetPath),"%","%%")
  249.        args=shortcut.Arguments
  250.        work_dir=replace(sf(shortcut.WorkingDirectory),"%","%%")
  251.        icon=replace(sf(shortcut.IconLocation),"%","%%")
  252.        win_style=shortcut.WindowStyle
  253.        hot_key=shortcut.Hotkey
  254.        descr=shortcut.Description
  255.  
  256.        S="cscript.exe //NoLogo " & wScript.ScriptName & " /add "
  257.        S=S & qw(lnk_file) & " "
  258.        S=S & qw(target) & " "
  259.        S=S & qw(args) & " "
  260.        S=S & qw(work_dir) & " "
  261.        S=S & qw(icon) & " "
  262.        S=S & qw(win_style) & " "
  263.        S=S & qw(hot_key) & " "
  264.        S=S & qw(descr)
  265.     else
  266.        QRet=1
  267.     end if
  268.     wscript.echo S
  269. end select
  270.  
  271. wScript.quit(QRet)
  272.  
  273.  
  274. sub ShowHelp
  275.    set fso = CreateObject("Scripting.FileSystemObject")
  276.    set fo = fso.GetFile(wScript.ScriptFullName)
  277.  
  278.    set txt = fo.OpenAsTextStream(forRead)
  279.    S=""
  280.    Q=false
  281.    while not Q
  282.      T=trim(txt.ReadLine)
  283.      Q=(len(T)>0) and (left(T,1)<>"'")
  284.      if not Q then
  285.         if len(T)>0 then S=S & right(T,len(T)-1)
  286.         S=S & vbCrLf
  287.      end if
  288.    wend
  289.    txt.close
  290.    wScript.echo S
  291.    wScript.quit
  292. end sub
  293.  
  294.  
  295. function qw(T)
  296.   Ret=chr(34) & T & chr(34)
  297.   qw=Ret
  298. end function
  299.  
  300.  
  301. function repl2(SS,old1,new1,old2,new2)
  302.   Ret=""
  303.   if len(old1)<len(old2) then
  304.      C=old2
  305.      old2=old1
  306.      old1=C
  307.      C=new2
  308.      new2=new1
  309.      new1=C
  310.   end if
  311.  
  312.   arr=split(SS,old1)
  313.  
  314.   for J=0 to UBound(arr)
  315.     if J>0 then
  316.        Ret=Ret & new1
  317.     end if
  318.     Ret=Ret & replace(arr(J),old2,new2)
  319.   next
  320.  
  321.   repl2=Ret
  322. end function
  323.  
  324.  
  325. function sf(path)
  326.   dim f(16)
  327.  
  328.   Ret=path
  329.  
  330.   f(1)= "AllUsersStartup"
  331.   f(2)= "AllUsersPrograms"
  332.   f(3)= "AllUsersStartMenu"
  333.   f(4)= "AllUsersDesktop"
  334.   f(5)= "Startup"
  335.   f(6)= "Programs"
  336.   f(7)= "StartMenu"
  337.   f(8)= "Desktop"
  338.   f(9)= "Favorites"
  339.   f(10)="Fonts"
  340.   f(11)="MyDocuments"
  341.   f(12)="NetHood"
  342.   f(13)="PrintHood"
  343.   f(14)="Recent"
  344.   f(15)="SendTo"
  345.   f(16)="Templates"
  346.  
  347.   S0=LCase(path)
  348.   set sh=wScript.createObject("wScript.Shell")
  349.  
  350.   for I=1 to 16
  351.     S1=LCase(sh.SpecialFolders(f(I)))
  352.     if instr(S0,S1)=1 then
  353.        Ret="sf:" & f(I) & right(path,len(S0)-len(S1))
  354.        exit for
  355.     end if
  356.   next
  357.   sf=Ret
  358. end function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы