-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Закрепление ярлыков в меню "Пуск" в ХР
|
Цитата:
Цитата Iska
Какие проблемы с переводом с WSH на AutoIt? »
|
Угадали, и хотелось бы конечно тоже ярлыки создавать...
|
Что угадал? Я спросил — «какие проблемы?», а Вы отвечаете — «угадал»?!
|
Iska, проблема с переводом с WSH на AutoIt.
|
WSH:
читать дальше »
Код:
Option Explicit
Dim objShell
Dim objFolder
Dim objFolderItem
Dim objVerb
Set objShell = WScript.CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("shell:Start Menu")
If Not objFolder Is Nothing Then
Set objFolderItem = objFolder.ParseName("Программы")
If Not objFolderItem Is Nothing Then
If objFolderItem.IsFolder Then
Set objFolder = objFolderItem.GetFolder
If Not objFolder Is Nothing Then
Set objFolderItem = objFolder.ParseName("Internet Explorer.lnk")
If Not objFolderItem Is Nothing Then
For Each objVerb In objFolderItem.Verbs
' &Закрепить в меню "Пуск"
' &Изъять из меню "Пуск"
If objVerb.Name = "&Закрепить в меню ""Пуск""" Then
objVerb.DoIt()
End If
Next
Else
WScript.Echo "Can't parse name [Internet Explorer.lnk]"
End If
Else
WScript.Echo "Can't get folder from item [Программы]"
End If
Else
WScript.Echo "Folder item [Программы] is not a folder"
End If
Else
WScript.Echo "Can't parse name [Программы]"
End If
Else
WScript.Echo "Can't get folder [Start Menu]"
End If
WScript.Quit 0
AutoIt:
читать дальше »
Код:
AutoItSetOption("MustDeclareVars", 1)
Local $oShell = ObjCreate("Shell.Application")
Local $oFolder = $oShell.Namespace("shell:Start Menu")
Local $oFolderItem
Local $oVerb
If Not ObjName($oFolder) = "" Then
$oFolderItem = $oFolder.ParseName("Программы")
If Not ObjName($oFolderItem) = "" Then
If $oFolderItem.IsFolder Then
$oFolder = $oFolderItem.GetFolder
If Not ObjName($oFolder) = "" Then
$oFolderItem = $oFolder.ParseName("Internet Explorer.lnk")
If Not ObjName($oFolderItem) = "" Then
For $oVerb In $oFolderItem.Verbs
; &Закрепить в меню "Пуск"
; &Изъять из меню "Пуск"
If $oVerb.Name = "&Закрепить в меню ""Пуск""" Then
$oVerb.DoIt()
EndIf
Next
Else
ConsoleWriteError("Can't parse name [Internet Explorer.lnk]" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't get folder from item [Программы]" & @CRLF)
EndIf
Else
ConsoleWriteError("Folder item [Программы] is not a folder" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't parse name [Программы]" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't get folder [Start Menu]" & @CRLF)
EndIf
Exit(0)
Полагаю, что на основе этого будет понятнее.
|
Iska, А обновить сразу можно меню ПУСК, чтобы увидеть изменения?
|
TERMINAL, я под Windows XP вижу изменения сразу — мы ведь работаем с самим Проводником.
|
Iska, Ничего не происходит и ошибки не выдаёт-вроде всё правильно, я так понял поиск идёт по самому ПУСК=Все программы?
читать дальше »
AutoItSetOption("MustDeclareVars", 1)
Local $oShell = ObjCreate("Shell.Application")
Local $oFolder = $oShell.Namespace("shell:Start Menu")
Local $oFolderItem
Local $oVerb
If Not ObjName($oFolder) = "" Then
$oFolderItem = $oFolder.ParseName("Программы")
If Not ObjName($oFolderItem) = "" Then
If $oFolderItem.IsFolder Then
$oFolder = $oFolderItem.GetFolder
If Not ObjName($oFolder) = "" Then
$oFolderItem = $oFolder.ParseName("Skype 5.lnk")
If Not ObjName($oFolderItem) = "" Then
For $oVerb In $oFolderItem.Verbs
; &Закрепить в меню "Пуск"
; &Изъять из меню "Пуск"
If $oVerb.Name = '&Закрепить в меню ""Пуск""' Then
$oVerb.DoIt()
EndIf
Next
Else
ConsoleWriteError("Can't parse name [D:\Program Files\Skype\Phone\Skype.exe]" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't get folder from item [Программы]" & @CRLF)
EndIf
Else
ConsoleWriteError("Folder item [Программы] is not a folder" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't parse name [Программы]" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't get folder [Start Menu]" & @CRLF)
EndIf
Exit(0)
|
TERMINAL, скомпилируйте скрипт для консоли (как CUI) и запустите скомпилированный код непосредственно из командной строки. Если будут ошибки — Вы их увидите. Либо просто сделайте перенаправление потока ошибок в файл:
Код:
"<скомпилированный код>.exe" 2>errors.txt
и посмотрите на его содержимое.
Цитата:
Цитата TERMINAL
я так понял поиск идёт по самому ПУСК=Все программы? »
|
Нет. Мы спускаемся по дереву Проводника: «C:\Documents and Settings\ UserName\Главное меню» [это "shell:Start Menu"] → «Программы» → «Internet Explorer.lnk». Сия структура справедлива для Windows XP.
|
Цитата:
Цитата Iska
TERMINAL, скомпилируйте скрипт для консоли (как CUI) и запустите скомпилированный код непосредственно из командной строки. Если будут ошибки — Вы их увидите. »
|
Да за это я вкурсе, мне в консоле пишет
читать дальше »
>"D:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\tets.au3" /autoit3dir "D:\Program Files\AutoIt3" /UserParams
+>19:10:52 Starting AutoIt3Wrapper v.2.0.1.24 Environment(Language:0419 Keyboard:00000409 OS:WIN_XP/Service Pack 3 CPU:X64 OS:X86)
>Running AU3Check (1.54.19.0) from:D:\Program Files\AutoIt3
+>19:10:52 AU3Check ended.rc:0
>Running:(3.3.6.1):D:\Program Files\AutoIt3\autoit3.exe "C:\tets.au3"
+>19:10:55 AutoIT3.exe ended.rc:0
и ничего не добовляется. В C:\Documents and Settings\UserName\Главное меню должен тоже ярлык лежать на этот файл или ехе должен быть?
|
Получается, что не в курсе.
Ладно. Замените все «ConsoleWriteError()» на «MsgBox()».
|
Цитата:
Цитата Iska
Получается, что не в курсе.
Ладно. Замените все «ConsoleWriteError()» на «MsgBox()». »
|
Да разницы то никакой, то в консоли выводит, а то сообщением....Для эксперемента заменил на MsgBox()-всеравно тишина, без ошибок и ничего не появляется...
|
TERMINAL, сожалею, у меня нет идей. Ждите более опытных коллег.
|
TERMINAL, поищите файл Skype.lnk в папке с профилями пользователей, скорее всего найдёте его в профиле "All Users", то бишь правильный вариант в данном случае будет несколько иной. Проверено на [addon] Skype 5.10.32.114 Business Edition
|
_syd_, вроде бы работает, а вот можно закрепить с другим именем как я хочу, например на русском языке-Скайп ?
|
Всем здравствуйте.
Моя ОС: MS Windows 7 SP1 Pro x64 Rus
1) Здесь есть код Autoit
Скрытый текст
Код:
AutoItSetOption("MustDeclareVars", 1)
Local $oShell = ObjCreate("Shell.Application")
Local $oFolder = $oShell.Namespace("shell:Start Menu")
Local $oFolderItem
Local $oVerb
If Not ObjName($oFolder) = "" Then
$oFolderItem = $oFolder.ParseName("Программы")
If Not ObjName($oFolderItem) = "" Then
If $oFolderItem.IsFolder Then
$oFolder = $oFolderItem.GetFolder
If Not ObjName($oFolder) = "" Then
$oFolderItem = $oFolder.ParseName("Internet Explorer.lnk")
If Not ObjName($oFolderItem) = "" Then
For $oVerb In $oFolderItem.Verbs
; &Закрепить в меню "Пуск"
; &Изъять из меню "Пуск"
If $oVerb.Name = "&Закрепить в меню ""Пуск""" Then
$oVerb.DoIt()
EndIf
Next
Else
ConsoleWriteError("Can't parse name [Internet Explorer.lnk]" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't get folder from item [Программы]" & @CRLF)
EndIf
Else
ConsoleWriteError("Folder item [Программы] is not a folder" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't parse name [Программы]" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't get folder [Start Menu]" & @CRLF)
EndIf
Exit(0)
2) Создал пустой файл C:\1.au3
3) В файл C:\1.au3 вставил целиком/полностью код AutoIt
Скрытый текст
Код:
AutoItSetOption("MustDeclareVars", 1)
Local $oShell = ObjCreate("Shell.Application")
Local $oFolder = $oShell.Namespace("shell:Start Menu")
Local $oFolderItem
Local $oVerb
If Not ObjName($oFolder) = "" Then
$oFolderItem = $oFolder.ParseName("Программы")
If Not ObjName($oFolderItem) = "" Then
If $oFolderItem.IsFolder Then
$oFolder = $oFolderItem.GetFolder
If Not ObjName($oFolder) = "" Then
$oFolderItem = $oFolder.ParseName("Internet Explorer.lnk")
If Not ObjName($oFolderItem) = "" Then
For $oVerb In $oFolderItem.Verbs
; &Закрепить в меню "Пуск"
; &Изъять из меню "Пуск"
If $oVerb.Name = "&Закрепить в меню ""Пуск""" Then
$oVerb.DoIt()
EndIf
Next
Else
ConsoleWriteError("Can't parse name [Internet Explorer.lnk]" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't get folder from item [Программы]" & @CRLF)
EndIf
Else
ConsoleWriteError("Folder item [Программы] is not a folder" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't parse name [Программы]" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't get folder [Start Menu]" & @CRLF)
EndIf
Exit(0)
4) В файле C:\1.au3 заменил только Internet Explorer.lnk на Блокнот.lnk
5) Получилось так
Скрытый текст
Код:
AutoItSetOption("MustDeclareVars", 1)
Local $oShell = ObjCreate("Shell.Application")
Local $oFolder = $oShell.Namespace("shell:Start Menu")
Local $oFolderItem
Local $oVerb
If Not ObjName($oFolder) = "" Then
$oFolderItem = $oFolder.ParseName("Программы")
If Not ObjName($oFolderItem) = "" Then
If $oFolderItem.IsFolder Then
$oFolder = $oFolderItem.GetFolder
If Not ObjName($oFolder) = "" Then
$oFolderItem = $oFolder.ParseName("Блокнот.lnk")
If Not ObjName($oFolderItem) = "" Then
For $oVerb In $oFolderItem.Verbs
; &Закрепить в меню "Пуск"
; &Изъять из меню "Пуск"
If $oVerb.Name = "&Закрепить в меню ""Пуск""" Then
$oVerb.DoIt()
EndIf
Next
Else
ConsoleWriteError("Can't parse name [Блокнот.lnk]" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't get folder from item [Программы]" & @CRLF)
EndIf
Else
ConsoleWriteError("Folder item [Программы] is not a folder" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't parse name [Программы]" & @CRLF)
EndIf
Else
ConsoleWriteError("Can't get folder [Start Menu]" & @CRLF)
EndIf
Exit(0)
6) Скомпилировал файл C:\1.au3 в exe, получился файл C:\1.exe
7) Запускаю файл C:\1.exe
8. Перезагрузил ПК
9) Нажимаю кнопку "Пуск", строки Блокнот нету
10) Файл-ярлык Блокнот.lnk, который надо закрепить в меню "Пуск", у меня находится в папке: C:\Users\-\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories
Что я сделал не так, пожалуйста, помогите мне.
|
Пожалуйста, сделайте в этом коде - чтобы прописать путь к файлу-ярлыку:
1) прописал путь C:\Users\-\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories\Блокнот.lnk
2) скомпилировал в exe файл скрипт au3
3) запустил exe файл
4) в меню "Пуск" закреплен файл-ярлык Блокнот
|
SharkyEXE, FileCreateShortcut(@WindowsDir & "\NOTEPAD.EXE", @ProgramsCommonDir & "\Блокнотик.lnk", @WindowsDir, "", "Это блокнот", "", "", @SW_MINIMIZE)
|
Время: 15:14.
© OSzone.net 2001-