Что нового

Quick Acces Windows 10

sas2242

Новичок
Сообщения
38
Репутация
0
В windows 10, можно закреплять и откреплять папки в панели quick acces, делать это можно разными способами, например через powershell

Код:
$PH = @("$env:USERPROFILE\Desktop","$env:USERPROFILE\Downloads","$env:USERPROFILE\Documents","$env:USERPROFILE\Pictures","$env:USERPROFILE\Videos","$env:USERPROFILE\Music")
$QA = New-Object -ComObject shell.application
ForEach ($dir in $PH) { $QA.Namespace($dir).Self.InvokeVerb('pintohome') }

Меня интересует, можно ли это сделать с помощью autoit? И если такая возможность есть, хотелось бы увидеть пример выше указанного кода переведенного в autoit. Спасибо.
 

Zmy

Знающий
Сообщения
18
Репутация
6
Можно так попробовать. Проверялось только на WINDOWS 7.

Код:
#NoTrayIcon
#RequireAdmin
; Вместо "pintohome" надо правильно написать глагол. Желательно, с учётом регистра.
Global $p=0,$u=ObjEvent("AutoIt.Error","Funcc"),$t="pintohome"

Func _a()
Local $y=ObjCreate("shell.application")
If @ERROR or Not IsObj($y) or $p Then
MsgBox(262144, 'Error', 'Not Possible Create Object. '&@CR)
$u=Null
$y=Null
Exit
EndIf
Local $k,$w=EnvGet("USERPROFILE"),$q=[$w&"\Desktop",$w&"\Downloads",$w&"\Pictures",$w&"\Documents",$w&"\Videos",$w&"\Music"]
For $w In $q
If Not FileExists($w) Then ContinueLoop
$k=$y.NameSpace($w).Self
If $p or Not IsObj($k) Then
$p=0
$k=Null
ContinueLoop
EndIf
$k.InvokeVerb($t)
$k=Null
Next
$y=Null
$u=Null
EndFunc

Func Funcc()
$p=1
EndFunc
_a()
 
Последнее редактирование:
Автор
S

sas2242

Новичок
Сообщения
38
Репутация
0
Можно так попробовать. Проверялось только на WINDOWS 7.

Код:
#NoTrayIcon
#RequireAdmin
; Вместо "pintohome" надо правильно написать глагол. Желательно, с учётом регистра.
Global $p=0,$u=ObjEvent("AutoIt.Error","Funcc"),$t="pintohome"

Func _a()
Local $y=ObjCreate("shell.application")
If @ERROR or Not IsObj($y) or $p Then
MsgBox(262144, 'Error', 'Not Possible Create Object. '&@CR)
$u=Null
$y=Null
Exit
EndIf
Local $k,$w=EnvGet("USERPROFILE"),$q=[$w&"\Desktop",$w&"\Downloads",$w&"\Pictures",$w&"\Documents",$w&"\Videos",$w&"\Music"]
For $w In $q
If Not FileExists($w) Then ContinueLoop
$k=$y.NameSpace($w).Self
If $p or Not IsObj($k) Then
$p=0
$k=Null
ContinueLoop
EndIf
$k.InvokeVerb($t)
$k=Null
Next
$y=Null
$u=Null
EndFunc

Func Funcc()
$p=1
EndFunc
_a()
Проверил на 10ке, вроде работает. Спасибо за помощь. Вы расписали прям целую функцию, мне бы хватило и
Код:
Global $sPinToHome = ObjCreate("shell.application")
$sPinToHome.Namespace(@UserProfileDir & '\Videos').Self.InvokeVerb("pintohome")

так как человек я начинающий, и многое для меня не ясно. Еще раз спасибо, будет повод вникать во все глубже. ;)
Сообщение автоматически объединено:


А как будет выглядеть код открепления? в powershell это так

Код:
$QuickAccess = New-Object -ComObject shell.application
($QuickAccess.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Items() | where {$_.Path -eq "C:\Temp"}).InvokeVerb("unpinfromhome")

желательно по этому примеру

Код:
Global $sPinToHome = ObjCreate("shell.application")
$sPinToHome.Namespace(@UserProfileDir & '\Videos').Self.InvokeVerb("pintohome")
 
Последнее редактирование:

Zmy

Знающий
Сообщения
18
Репутация
6
У меня WINDOWS 7, и нет такого CLSID-а. Поэтому, у меня сразу выдаёт ошибку. Не могу ничего проследить и отладить.
Вслепую вот так написал.

Код:
#NoTrayIcon
#RequireAdmin
Global $t="unpinfromhome",$p=0,$u=ObjEvent("AutoIt.Error","Funcc"),$z="C:\Temp"

Func _a()
Local $y=ObjCreate("shell.application")
If @ERROR or Not IsObj($y) or $p Then
MsgBox(262144,'Error','Not Possible Create Object. '&@CR)
$u=Null
Exit
EndIf
Local $q=$y.Namespace("{679f85cb-0220-4080-b29b-5540cc05aab6}").Items()
If @ERROR or Not IsObj($q) or $p Then
MsgBox(262144,'Error','Not Possible Create Object. '&@CR)
$q=Null
$u=Null
$y=Null
Exit
EndIf
Local $k,$w
For $w In $q
If $w.Self.Path=$z Then
$k=$y.NameSpace($w).Self
If $p or Not IsObj($k) Then
$p=0
ContinueLoop
EndIf
$k.InvokeVerb($t)
;$k.InvokeVerbEx($t)
;$k.ParentFolder.Items().InvokeVerbEx($t)
;$w.ParentFolder.Items().InvokeVerbEx($t)
MsgBox(262144,'','Succses. '&@CR&@CR&@CR&$w.Self.Path&" "&@CR,2)
$k=Null
EndIf
Next
$q=Null
$y=Null
$u=Null
EndFunc

Func Funcc()
$p=1
EndFunc
_a()
 
Последнее редактирование:
Автор
S

sas2242

Новичок
Сообщения
38
Репутация
0
Так не работает. Мне кажется, что это можно сделать как то проще. Может через ShellExecute...
Хотя для закрепления работает и это
Код:
Global $sPinToHome = ObjCreate("shell.application")
$sPinToHome.Namespace(@UserProfileDir & '\Videos').Self.InvokeVerb("pintohome")
 

Zmy

Знающий
Сообщения
18
Репутация
6
Если это работает, значит и это должно работать.


Код:
Global $sPinToHome = ObjCreate("shell.application")
$sPinToHome.Namespace(@UserProfileDir & '\Videos').Self.InvokeVerb("unpinfromhome")
 
Верх