|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
В общем пока особо не искал, не думал. Надо создать ярлык к запуску проги ...Program Files\Proga\Proga.exe на рабочий стол для "любого пользователя" (уже существующего, будующего, любого). Полагаю лежать должен в ...\Users\Public\Desktop (именно там лежат все общие, есть еще ...\Users\Default\Desktop, но она пустая и полагаю не пойдет). За меня всю жизнь это успешно делал инсталлятор (с удалением после деинсталляции), но в силу специфики задачи надо уметь "самому". 1) создать ярлык 2) удалить ярлык. Здесь еще вот чего б хотелось. Допустим юзер переименовал название ярлыка, сделал егойную копию, ну пусть на рабочем столе. Желательно чтоб удалялись все ярлыки ведущие к Proga\Proga.exe (хотя б на рабочем столе) независимо от имени файла .lnk. Вот тыркнулся поиском по форуму. Средства для работы с ярлыками (под спойлером) Сюда копать или куда еще? В .Net прямого инструмента так полагаю нет. А классические API (без Interface-ов) есть на эту тему? CreateObject("WScript.Shell" еще как из того же топика следует, но не люблю такой "простоты", и боюсь он второй задачи с грамотным удалением не решит. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 20:21 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Для создания и размещения ярлыков в любом месте (рабочий стол, папки пользователя, главное меню и т.д.) в WinAPI есть все нужные функции. Удаление файла .lnk в заранее известном месте также не вызывает проблем. Если пользователь создал и разместил неизвестно где копию ярлыка, то после удаления источника (к примеру, файла .exe), этот ярлык становится нерабочим. Искать его - дурное дело. Пусть пользователь сам удаляет свой мусор. На основе функций WinAPI я делал свои инсталляторы/деинсталляторы (на С++). Особых проблем там нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 21:25 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
d7iДля создания и размещения ярлыков в любом месте (рабочий стол, папки пользователя, главное меню и т.д.) в WinAPI есть все нужные функции. Какие? Я так понял, COM это единственный способ. Creating and Modifying Shortcuts но это 2003г. (Речь идет о Win7 и выше) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 22:34 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 23:02 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Если хотите пример, то вот на Power++ Код: plaintext 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.
Главное - последовательность действий и вызываемые функции. Можно переделать под любой другой язык. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 23:09 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Проверено на всех Windows от XP до 10. Кстати, чтобы иконка ярлыка красиво отображалась в любом виде, она должна быть комбинированной и содержать все размеры: 16х16,32х32,48х48,64х64,128х128,256х256. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 23:22 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
И вдогонку. Чтобы программно определить нужную системную папку можно сделать функцию: Код: plaintext 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.
Пример использования: GetSpecialFolderLocation(this,CSIDL_DESKTOP,desktopFolder); // рабочий стол GetSpecialFolderLocation(this,CSIDL_PROGRAMS,menuFolder); // меню "Пуск" И т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 23:35 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Это работа установщика, а не программы. Сделайте пакет установки, там этот функционал как правило уже есть и его нужно просто включить или определить. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 01:39 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
d7i, Ну я понял Ваши ответы, но это как бы не совсем "классические" API, которые в .Net/VB6 декларируются функциями и структурами (чего я люблю). Т.е. кухня как не крути сводится к интерфейсам IShellLink и IPersistFile. Ну осилим, я думаю. Выпишу на всяк. случай полезные ссылки в столбик: Creating and Modifying Shortcuts (vbaccelerator.com, проект C#) Using IShellLink Interface to resolve a shortcut which has changed their drive letter (VB.Net) How to create and resolve a shortcut Средства для работы с ярлыками (на нашем форуме, под спойлером, C#) Пошел ваять свой вариант. Сделаю, отчитаюсь. === d7iКстати, чтобы иконка ярлыка красиво отображалась в любом виде, она должна быть комбинированной и содержать все размеры: 16х16,32х32,48х48,64х64,128х128,256х256.Ну, ясно дело, что если в exe, на кот. указывает ярлык и откуда иконка берется она именно такая, то она таковой и будет. Я ж не собираюсь ее рисовать сам своим кодом. Roman MejtesЭто работа установщика, а не программы. Сделайте пакет установки, там этот функционал как правило уже есть и его нужно просто включить или определить. Роман, я ж уточнил в первом же посте За меня всю жизнь это успешно делал инсталлятор (с удалением после деинсталляции), но в силу специфики задачи надо уметь "самому". Специфика такая: У меня Program Files\Proga\Proga.exe == Program Files\Windows Mail\WinMail.exe При обновлении как минимум Win10 1703->1709->1803 винды не только "рушат компоненты" Winmail но в частности маньячно удаляют все ярлыки со ссылкой на этот путь (во всяком случае с рабочего стола и неважно какое имя у .lnk). Задачей моей утилиты (уже установленной) в частности восстановить этот ярлык. Да и обратная задача "маньячного удаления ярлыков" не лишняя, ибо утилита должна уметь не только восстанавливать, но и откатывать обратно к неработоспособному оригинальному состоянию (неработоспособный ярлык на рабочем столе это лишнее). Инсталлятор утилиты с этими задачами нормально не справится, он только может установить ярлык один раз (при install), и удалить (при uninstall). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 09:37 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Roman MejtesЭто работа установщика, а не программы. Сделайте пакет установки, там этот функционал как правило уже есть и его нужно просто включить или определить. Не по адресу такие сообщения Как делать нужно и правильно -- это ответы-аутсайдеры. Им в этих топиках не место. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 16:23 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Дмитрий77Инсталлятор утилиты с этими задачами нормально не справится, он только может установить ярлык один раз (при install), и удалить (при uninstall).ты че такой дремучий? Не видел окно Удаление или ИЗМЕНЕНИЕ программы в винде? Там кнопка есть - восстановить. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 16:45 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Petro123Дмитрий77Инсталлятор утилиты с этими задачами нормально не справится, он только может установить ярлык один раз (при install), и удалить (при uninstall).ты че такой дремучий? Не видел окно Удаление или ИЗМЕНЕНИЕ программы в винде? Там кнопка есть - восстановить. Вот ни близко, ни около. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 17:11 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Дмитрий77Вот ни близко, ни около.ты инженерным языком пиши)))) Правый клик на строке EF программа. Далее что видим? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 17:39 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Petro123, Панель управления\Программы\Программы и компоненты >Правый клик на строке EF программа. Далее что видим? Как правило видим "Удалить". Реже еще "Изменить". Еще реже "Восстановить". От инсталлятора зависит. Какое отношение к делу и к заданному вопросу? У меня утилита, будучи УЖЕ УСТАНОВЛЕННОЙ, сама делает "Восстановить" ( чего надо, не себя саму , напр. будучи прописанной в автозагрузку через реестр или планировщик, или по кнопке "Восстановить" в ней самой). И в частности она должна "Восстановить" нужный ярлык, кот. имеет свойство тупо пропасть после очередного обновления/перезагрузки компа и в процессе эксплуатации уже установленной утилиты. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 18:24 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Дмитрий77Как правило видим "Удалить". Реже еще "Изменить". Еще реже "Восстановить". Угу. В инсталляторе галка ставится какую показывать кнопку))). .. Отсюда ты пишешь велосипед. И тебя предупредили. А дальше сам. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 18:38 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Сделаю, отчитаюсьМой модуль: Код: vbnet 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.
Код: vbnet 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.
2) удалить ярлык. Здесь еще вот чего б хотелось. Допустим юзер переименовал название ярлыка, сделал егойную копию, ну пусть на рабочем столе. Желательно чтоб удалялись все ярлыки ведущие к Proga\Proga.exe (хотя б на рабочем столе) независимо от имени файла .lnk. Я привязываюсь к имени exe-шника, без выяснения пути, но можно модифицировать и сравнивать точный путь, это уж в зависимости от "задачи" Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 21:21 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Дмитрий77Я так понял, COM это единственный способ. Нет. Пример создания URL программы , вызываемой через clickonce c http://10.32.147.2/myprograms/PC_Registration/ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2018, 22:00 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Cat2, что-то мутное ты вещаешь. Речь шла о ярлыке к исполняемому файлу (.lnk). А твой код просто пишет какую-то извини муть просто в файл с расширением .URL И к слову скажем созданный таким образом "URL-ярлык" ни на какой URL не указывает. Но раз уж тему дернул да еще с URL-ярлыком, задам вопрос, озадачился тут на днях, не то чтоб кровь из носу но интерес есть. Есть .chm файл справки, в нем html страница. Можно ли создать html-ссылку, которая запускает Program Files\Proga\Proga.exe щелчком по ней (от текущего юзера, не более того) (вариант с выводом диалогов предупреждений безопасности и т.п. не катит). Скажем так, в некогда анонсированной "новой" справочной системе (справка в Висте и Win7), на которую MS благополучно забил палку в Win8, такие ссылки типа "Откройте proga" и при щелчке по оной proga благополучно запускается, имеют место быть (формат выяснять не пытался). Но вот можно ли подобное сделать в старом добром .chm? (который по сути был и остается единственным нормальным форматом файла справки - всякие там pdf и web-справки меня ИМХО как юзера бесят). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2018, 01:33 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Есть .chm файл справки, в нем html страница. Можно ли создать html-ссылку, которая запускает Program Files\Proga\Proga.exe щелчком по ней (от текущего юзера, не более того) (вариант с выводом диалогов предупреждений безопасности и т.п. не катит). Ответ МОЖНО. Код: vbnet 1.
Запускает. Из .chm без всяких предупреждений и ругани. Ссылка в html-коде выглядит так: file:///C:/Program%20Files/Proga/proga.exe Это хорошо. Но мне нужно так. Код: vbnet 1.
В html получается: file:///%25Program%20Files%25/Proga/proga.exe Не работает. Поясню, на Win8/8.1/10 всегда C:/Program Files и первый вариант прокатит 100% , но предполагается совместная эксплуатация с Win7, где еще есть способ водрузить систему на диск D: не переобозванный в C: (ну, я по крайней мере так делал). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2018, 02:09 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Petro123Дмитрий77Инсталлятор утилиты с этими задачами нормально не справится, он только может установить ярлык один раз (при install), и удалить (при uninstall).ты че такой дремучий? Не видел окно Удаление или ИЗМЕНЕНИЕ программы в винде? Там кнопка есть - восстановить. А где такое "окно Удаление или ИЗМЕНЕНИЕ программы в винде " ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2018, 09:44 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Ролг Хупин, Ну Иван Иваныч! )) Изменить в контексте было Восстановить и там галки по добавлению или удалению компонентов. Проводник - кнопа Удалить или изменить программу. Там подсказка: Для удаления программы выделите её и Щёлкните Заменить, Удалить, Восстановить. Или в чем вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2018, 10:08 |
|
Создать / удалить ярлык на рабочем столе программно.
|
|||
---|---|---|---|
#18+
Ролг Хупин, Имелся ввиду стандартный апплет панели управления, где вы обычно удаляете приложения. Но к вопросу программного создания/исследования ярлыка (shortcut) это никакого отношения не имеет. Вопрос программного создания/исследования ярлыка мной решен на должном уровне, о чем отчитался выше. Но все же интересует можно ли создать hyperlink с применением переменных Так работает: Код: vbnet 1.
Так НЕ работает: Код: vbnet 1.
Т.е. типа "ярлык на запуск" в html-chm справке. В вистовкой справке html-код такой штуки выглядит так: Код: html 1. 2. 3. 4.
Но она заумная, и будучи выдернутой из контекста не работает. А стандартная file:/// не воспринимает %ProgramFiles% (во всяком случае при вызове из .chm) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2018, 19:07 |
|
|
start [/forum/topic.php?fid=20&msg=39663338&tid=1399326]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 191ms |
0 / 0 |