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

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

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

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

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

textual
Листинг программы
'****************************************************************************
'* Script utility for managing shortcut files
'* ver 1.07 2011.07.27
'* Programmed by Polyakov A.N. mailto:xey@yandex.ru
'****************************************************************************
'
' Add Shortcut  - lnk.vbs /add   <shortcut> <target> [args] [work_dir] [icon] [win_style] [hot_key] [descr]
' Get Shortcut  - lnk.vbs /get   <shortcut>
' Get Script    - lnk.vbs /get!  <shortcut>
'   or          - lnk.vbs /getscript <shortcut>
' Find Shortcut - lnk.vbs /find  <folder>   <target_to_find> [args_to_find]
 
' <shortcut> : [sf:SpecialFolder\]Path\ShortcutFile[.lnk]
' <folder>   : [sf:SpecialFolder\]Path
'
' SpecialFolder :
'   Desktop           - Рабочий стол
'   Favorites         - Избранное
'   Fonts             - Шрифты
'   MyDocuments       - Мои документы
'   NetHood           - Сетевое окружение
'   PrintHood         - Принтеры
'   Programs          - подменю Программы из меню Пуск
'   Recent            - подменю Документы из меню Пуск
'   SendTo            - подменю Отправить из контекстного меню файлов
'   StartMenu         - Главное меню
'   Startup           - Автозагрузка из подменю Программы
'   Templates         - Шаблоны
' Only WinNT/2000/XP/2003 :
'   AllUsersDesktop   - Рабочий стол всех пользователей
'   AllUsersStartMenu - Главное меню всех пользователей
'   AllUsersPrograms  - подменю Программы из меню Пуск всех пользователей
'   AllUsersStartup   - Автозагрузка из подменю Программы всех пользователей
 
' [icon] : IconFileName,IconIndex
'   Index 0 is first icon in the file
 
' [win_style] : 3 - Maximize, 4 - Standard, 7 - Minimze
 
' [hot_key] : ALT+SHIFT+<Chr>,  CTRL+ALT+<Chr>,
'             CTRL+SHIFT+<Chr>, ALT+CTRL+SHIFT+<Chr>
 
' <target_to_find> : target|rx:RegExped_Target
' [args_to_find]   : args|rx:RegExped_Args
 
' [args]           special symbols : ^  -> "
'                                    ^^ -> ^
 
rem BEGIN
 
' ver 1.07 2011.07.27 - add alias "/getscript" for "/get!" key
' ver 1.06 2010.04.18 - add special symbols ^ for "
' ver 1.05 2009.09.01 - add return code (for %ERRORLEVEL% variable)
' ver 1.04 2008.10.30 - fix <shortcut> parsing; fix SpecialFolder order; create folders for /add
' ver 1.03 2008.08.27 - add /find key
' ver 1.02 2007.06.16 - support URL-links
' ver 1.01 2006.12.08 - check lnk-file existance; change output format
' ver 1.00 2006.01.21
 
on Error Resume Next
 
const forRead=1
const forWrite=2
 
dim lnk_file, url, target, arg, path, shortcut_name, work_dir, icon, win_style
dim shell, shortcut, parentFolder, fso, fo, rx, colFile, objFile, objFldr
dim Q, ext, rx1, rx2
 
set shell = WScript.CreateObject("WScript.Shell")
set fso = CreateObject("Scripting.FileSystemObject")
 
outCon=right(LCase(wScript.FullName),11)="cscript.exe"
 
nl = chr(13) & chr(10)
 
set pars = WScript.Arguments
cnt=pars.count
 
if cnt<2 then
   ShowHelp
end if
 
 
cmd=LCase(pars(0))
 
lnk_file=pars(1)
 
if LCase(left(lnk_file,3))="sf:" then
   arr1=split(pars(1),"\")
   arr2=split(arr1(LBound(arr1)),":")
   lnk_file=replace(pars(1),arr1(LBound(arr1)),shell.SpecialFolders(arr2(LBound(arr2)+1)))
end if
 
 
if cmd="/getscript" then cmd="/get!"
 
if cmd="/find" then
   if cnt<3 then ShowHelp
 
   folder=lnk_file
 
   target=LCase(trim(pars(2)))
   rx1=left(target,3)="rx:"
   if rx1 then target=right(target,len(target)-3)
 
   if cnt>3 then args=LCase(trim(pars(3))) else args=""
   rx2=left(args,3)="rx:"
   if rx2 then args=right(args,len(args)-3)
 
   if rx1 or rx2 then
      set rx=new RegExp
      rx.IgnoreCase=true
   end if
 
   set colFile=fso.getFolder(folder).Files
   for each objFile in colFile
     lnk_file=objFile.Name
     ext=LCase(right(lnk_file,3))
     if (ext="lnk") or (ext="url") then
        set shortcut = shell.CreateShortcut(folder & "\" & lnk_file)
        Q=false
        if rx1 then
           rx.pattern=target
           Q=rx.test(LCase(shortcut.TargetPath))
        else
           Q=LCase(shortcut.TargetPath)=target
        end if
        if len(args)>0 then
           if rx2 then
              rx.pattern=args
              Q=Q and rx.test(LCase(shortcut.Arguments))
           else
              Q=Q and LCase(shortcut.Arguments)=args
           end if
        end if
        if Q then WScript.echo folder & "\" & lnk_file
     end if
   next
   WScript.quit
end if
 
url=false
 
if cmd="/add" then
   if cnt<3 then ShowHelp
 
   target=trim(pars(2))
   url=Instr(target,"://")>0
 
   if not url then
      if cnt>3 then args=repl2(trim(pars(3)),"^^","^","^",chr(34)) else args=""
      if cnt>4 then work_dir=trim(pars(4)) else work_dir=""
 
      if len(work_dir)=0 then
         set fso = CreateObject("Scripting.FileSystemObject")
         set fo  = fso.getFile(target)
         if (Err.Number<>0) then
            Err.clear
         else
            if fo.type<>"" then
               work_dir=fo.parentFolder
            end if
         end if
      end if
 
      icon=""
      if cnt>5 then
         icon=trim(pars(5))
      end if
 
      win_style=4
      if cnt>6 then
         win_style=trim(pars(6))
      end if
 
      hot_key=""
      if cnt>7 then
         hot_key=UCase(trim(pars(7)))
      end if
 
      descr=""
      if cnt>8 then
         descr=trim(pars(8))
      end if
   end if
end if
 
 
S=LCase(right(lnk_file,4))
if (S<>".lnk") and (S<>".url") then
   S=".lnk"
   if url then
      S=".url"
   end if
   lnk_file=lnk_file & S
end if
 
 
QRet=0
 
Q=fso.FileExists(lnk_file)
set shortcut = shell.CreateShortcut(lnk_file)
 
select case cmd
  case "/add"
    set objFldr=fso.CreateFolder(fso.GetParentFolderName(lnk_file))
    shortcut.TargetPath=target
    shortcut.IconLocation=icon
    if not url then
       shortcut.Arguments=args
       shortcut.WorkingDirectory=work_dir
       shortcut.IconLocation=icon
       shortcut.WindowStyle=win_style
       shortcut.HotKey=hot_key
       shortcut.Description=descr
    end if
    Err.clear
    shortcut.save
    QRet=Err.Number
 
  case "/get"
    if Q then
       target=shortcut.TargetPath
       args=shortcut.Arguments
       work_dir=shortcut.WorkingDirectory
       icon=shortcut.IconLocation
       win_style=shortcut.WindowStyle
       hot_key=shortcut.Hotkey
       descr=shortcut.Description
       Error=""
    else
       Error=" ERROR: (FILE DON'T EXIST) "
       QRet=1
    end if
 
    wscript.echo "Shortcut File   =" & Error & lnk_file
    wscript.echo "TargetPath      =" & target
    wscript.echo "Arguments       =" & args
    wscript.echo "WorkingDirectory=" & work_dir
    wscript.echo "IconLocation    =" & icon
    wscript.echo "WindowStyle     =" & win_style
    wscript.echo "HotKey          =" & hot_key
    wscript.echo "Description     =" & descr
 
  case "/get!"
    if Q then
       lnk_file=replace(sf(lnk_file),"%","%%")
       target=replace(sf(shortcut.TargetPath),"%","%%")
       args=shortcut.Arguments
       work_dir=replace(sf(shortcut.WorkingDirectory),"%","%%")
       icon=replace(sf(shortcut.IconLocation),"%","%%")
       win_style=shortcut.WindowStyle
       hot_key=shortcut.Hotkey
       descr=shortcut.Description
 
       S="cscript.exe //NoLogo " & wScript.ScriptName & " /add "
       S=S & qw(lnk_file) & " "
       S=S & qw(target) & " "
       S=S & qw(args) & " "
       S=S & qw(work_dir) & " "
       S=S & qw(icon) & " "
       S=S & qw(win_style) & " "
       S=S & qw(hot_key) & " "
       S=S & qw(descr)
    else
       QRet=1
    end if
    wscript.echo S
end select
 
wScript.quit(QRet)
 
 
sub ShowHelp
   set fso = CreateObject("Scripting.FileSystemObject")
   set fo = fso.GetFile(wScript.ScriptFullName)
 
   set txt = fo.OpenAsTextStream(forRead)
   S=""
   Q=false
   while not Q
     T=trim(txt.ReadLine)
     Q=(len(T)>0) and (left(T,1)<>"'")
     if not Q then
        if len(T)>0 then S=S & right(T,len(T)-1)
        S=S & vbCrLf
     end if
   wend
   txt.close
   wScript.echo S
   wScript.quit
end sub
 
 
function qw(T)
  Ret=chr(34) & T & chr(34)
  qw=Ret
end function
 
 
function repl2(SS,old1,new1,old2,new2)
  Ret=""
  if len(old1)<len(old2) then
     C=old2
     old2=old1
     old1=C
     C=new2
     new2=new1
     new1=C
  end if
 
  arr=split(SS,old1)
 
  for J=0 to UBound(arr)
    if J>0 then
       Ret=Ret & new1
    end if
    Ret=Ret & replace(arr(J),old2,new2)
  next
 
  repl2=Ret
end function
 
 
function sf(path)
  dim f(16)
 
  Ret=path
 
  f(1)= "AllUsersStartup"
  f(2)= "AllUsersPrograms"
  f(3)= "AllUsersStartMenu"
  f(4)= "AllUsersDesktop"
  f(5)= "Startup"
  f(6)= "Programs"
  f(7)= "StartMenu"
  f(8)= "Desktop"
  f(9)= "Favorites"
  f(10)="Fonts"
  f(11)="MyDocuments"
  f(12)="NetHood"
  f(13)="PrintHood"
  f(14)="Recent"
  f(15)="SendTo"
  f(16)="Templates"
 
  S0=LCase(path)
  set sh=wScript.createObject("wScript.Shell")
 
  for I=1 to 16
    S1=LCase(sh.SpecialFolders(f(I)))
    if instr(S0,S1)=1 then
       Ret="sf:" & f(I) & right(path,len(S0)-len(S1))
       exit for
    end if
  next
  sf=Ret
end function

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


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

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

15   голосов , оценка 3.733 из 5
Похожие ответы