Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
10 / 10 / 0
Регистрация: 28.05.2012
Сообщений: 69
1

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

26.07.2012, 00:43. Показов 3025. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, хотелось бы узнать как можно закинуть программу на панель быстрого запуска,
посоветуйте пожалуйста какое API тут использовать, заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.07.2012, 00:43
Ответы с готовыми решениями:

Панель быстрого запуска Windows 7
Подскажите пожалуйста,что можно сделать чтобы панель быстрого запуска постоянно не исчезала?Из за...

Панель быстрого запуска в Windows 7
Добрый день. до Win7 система позволяла добавлять ярлыки на панель задач. причем ярлыки не на...

Где в Windows 7 панель быстрого запуска?
всем привет Где в этой семёрке панель быстрого запуска в хр она есть я туда все ярлыки со стола...

Сделать из SideBar панель быстрого запуска
Хотелось бы, чтобы было так: работаешь в какой то приложеннии, надо запусть софтину, но не...

9
Эксперт WindowsАвтор FAQ
18008 / 7709 / 892
Регистрация: 25.12.2011
Сообщений: 11,483
Записей в блоге: 16
26.07.2012, 01:27 2
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Скопировать ее ярлык в папку "%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Quick Launch"
Но нужна еще команда на обновление, иначе появится на панеле только после перезагрузки.

А для создания и редактирования ярлыков вот недавно icu выкладывал
скрипт.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
'****************************************************************************
'* 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
Вложения
Тип файла: rar lnk.rar (2.8 Кб, 39 просмотров)
2
9 / 9 / 1
Регистрация: 18.05.2013
Сообщений: 47
30.11.2014, 21:12 3
Dragokas, какая команда нужна на обновление. У меня обратная ерунда. Не могу програмно удалить ярлык mail.ru , хотя все линки mail.ru на компе потер. Как обновить панель задач - не представляю, весь русскоязычный гугл пересмотрел (там где про VB6).
0
Эксперт WindowsАвтор FAQ
18008 / 7709 / 892
Регистрация: 25.12.2011
Сообщений: 11,483
Записей в блоге: 16
30.11.2014, 21:30 4
McConst, здравствйте !

Обрисуйте, пожалуйста, задачу в целом.
Вы удаляете файл, но не получается обновить панель задач, чтобы иконка от него пропала?

Полагаю, наиболее простым способом будет перезагрузка explorer:

Bash
1
2
taskkill /f /im explorer.exe
explorer.exe
Ой... простите, не на том языке написал -))

Добавлено через 7 минут
На VB6 это можно и более аккуратно сделать. Подтянутся спецы, подскажут.
В варианте выше, я бы просто завершил explorer.exe
и затем запустил командой
Visual Basic
shell "explorer.exe", 1
0
9 / 9 / 1
Регистрация: 18.05.2013
Сообщений: 47
30.11.2014, 21:57 5
Спасибо. То что надо. Отлично получилось. Как-то про перезагрузку Explorer в голову не пришло.
0
9 / 9 / 1
Регистрация: 18.05.2013
Сообщений: 47
30.11.2014, 22:50 6
Сначала протестил вручную перезагрузку эксплорера, показалось, что всё получилось. Но потом выяснилось, что пустой ярлык от mail.ru так и продолжает висеть, исчезло только изображение на ярлыке.
Миниатюры
Внести свою программу на панель быстрого запуска  
0
Модератор
9884 / 3791 / 876
Регистрация: 22.02.2013
Сообщений: 5,659
Записей в блоге: 78
02.12.2014, 18:13 7
Обновлять данные нужно через SHChangeNotify
Цитата Сообщение от McConst Посмотреть сообщение
Но потом выяснилось, что пустой ярлык от mail.ru так и продолжает висеть, исчезло только изображение на ярлыке.
Путь - C:\Users\Полльзователь\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned
0
9 / 9 / 1
Регистрация: 18.05.2013
Сообщений: 47
07.12.2014, 16:15 8
Dragokas, The trick, c SHChangeNotify попробовал, не получилось. Если я правильно понял, то эта функция просто обновляет папку C:\Users\Пользователь\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned . Более изящная команда чем просто перезагрузка Проводника. Но дело в том, что в папке иконки нет, а на панели задач хвост от нее остался, даже после перезагрузки.
Реализовал открепление ярлыка от панели задач Windows 7 следующим образом
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Function DeleteTaskbarIcon(ByVal FilePath As String, FileName As String) As Boolean
'Удаление иконки с панели быстрого запуска Windows 7
'FilePath для Windows 7 - C:\Users\ИмяПользователя\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
'FileName - имя открепляемого ярлыка. Например Mail.Ru.lnk
'Возвращает признак успешности открепления ярлыка
Dim objShell, objFolder, colVerbs, objVerb
Dim text As String
 
DeleteTaskbarIcon = False ' Возвращаем False, если ярлык не закреплен на панели задач или команды на открепление в меню нет
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(FilePath & "\")
Set colVerbs = objFolder.ParseName(FileName).verbs
 
For Each objVerb In colVerbs
    text = LCase(Replace(objVerb.Name, "&", ""))
    'Команда на открепление иконки, взятая из контекстного меню чувствительна к языку операционной системы Windows
    If (InStr(text, "unpin") > 0) Or (InStr(text, "изъять") > 0) Or (InStr(text, "открепить") > 0) Then
        objVerb.DoIt 'Выполняем открепление
        DeleteTaskbarIcon = True 'Функция открепила иконку
    End If
Next
 
End Function
Правда данный код чувствителен к языку Windows 7. Здесь работает для английского и русского языка. Универсально было бы через API, но с API не получилось.
0
Эксперт WindowsАвтор FAQ
18008 / 7709 / 892
Регистрация: 25.12.2011
Сообщений: 11,483
Записей в блоге: 16
07.12.2014, 17:09 9
McConst, Вы можете заранее сохранить состояния параметров реестра:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband\\F avorites
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband\\F avoritesResolve
чтобы затем их восстановить после установки репака.
0
Модератор
9884 / 3791 / 876
Регистрация: 22.02.2013
Сообщений: 5,659
Записей в блоге: 78
07.12.2014, 21:19 10
Цитата Сообщение от McConst Посмотреть сообщение
Dragokas, The trick, c SHChangeNotify попробовал, не получилось.
Как пробовал?
Цитата Сообщение от McConst Посмотреть сообщение
Правда данный код чувствителен к языку Windows 7. Здесь работает для английского и русского языка. Универсально было бы через API, но с API не получилось.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Option Explicit
 
Private Declare Sub CLSIDFromString Lib "ole32" (ByVal lpsz As Long, pclsid As Any)
Private Declare Function SHGetKnownFolderPath Lib "shell32.dll" (rfid As Any, ByVal dwFlags As Long, ByVal hToken As Long, ppszPath As Any) As Long
 
Private Const FOLDERID_UserPinned   As String = "{9E3995AB-1F9C-4F13-B827-48B24B6C7174}"
 
Private Sub Form_Load()
    Dim uuid(15) As Byte
    Dim path     As String
    
    path = Space(260)
    CLSIDFromString StrPtr(FOLDERID_UserPinned), uuid(0)
    SHGetKnownFolderPath uuid(0), 0, 0, ByVal VarPtr(path)
    path = Left$(path, InStr(1, path, vbNullChar) - 1)
    
    MsgBox path
    
End Sub
1
07.12.2014, 21:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2014, 21:19
Помогаю со студенческими работами здесь

Панель быстрого запуска сползает вправо
Создана Панель быстрого запуска, как она была в Виндовс ХР, но она не хочет размещаться на своем...

Как добавить прогу в панель быстрого запуска?
как добавить прогу в панель быстрого запуска?

Скрыть панель быстрого запуска через AutoExec
Делаю через метод Load стартовой формы DoCmd.ShowToolbar &quot;Ribbon&quot;,acToolbarNo А можно прописать...

Как сделать панель быстрого запуска аля winXP?
Здрасте. Вот в винXP я мог взять иконку &quot;мой компьютер&quot; например перетазить вверх экрана (ха экран...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru