Что нового

VBScript -> Autoit (*.au3) (Изъять программЫ из панели задач)

SharkyEXE

Новичок
Сообщения
134
Репутация
0
Версия AutoIt: 3.3.14.0

Описание:

Всем здравствуйте.

Операционная система: Microsoft Windows 7 Professional Service Pack 1 x64 Russian

Пожалуйста, помогите конвертировать скрипт, написанный на языке VBScript в Autoit (*.au3)

Вот скрипт написанный на языке VBScript
Код:
Option Explicit

Const HKEY_CURRENT_USER = &H80000001
Const strSubKey         = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband"


Dim strUserAppData

Dim objFolder
Dim objFolderItem
Dim objVerb


With WScript.CreateObject("Shell.Application")
    strUserAppData = .NameSpace("shell:AppData").self.Path
   
    Set objFolder = .Namespace(strUserAppData & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar")
   
    If Not objFolder Is Nothing Then
        For Each objFolderItem In objFolder.Items
            For Each objVerb In objFolderItem.Verbs
                WScript.Echo Replace(objVerb.Name, "&", "")
               
                Select Case LCase(Replace(objVerb.Name, "&", ""))
                    Case "unpin from taskbar", "открепить от панели задач"
                        WScript.Echo "Unpin [" & objFolderItem.Name & "]."
                        objVerb.DoIt
                    Case Else
                        ' Nothing to do
                End Select
            Next
        Next
       
        Set objFolder = Nothing
    Else
        WScript.Echo "Can't determine path [" & strUserAppData & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar" & "]."
    End If
End With

If WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").Get("StdRegProv").DeleteKey(HKEY_CURRENT_USER, Split(strSubKey, "\", 2)(1)) <> 0 Then
    WScript.Echo "Can't delete subkey [" & strSubKey & "]."
End If

WScript.Quit
Спасибо.

Примечания:

Отсутствуют
 
Последнее редактирование:

angro

Новичок
Сообщения
31
Репутация
1
Можно сделать окно программы дочерним созданному в автоит и после этого скрыть и показать окно программы, оно исчезнет из панели задач.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Как то так если я не ошибся:

Код:
Const $strSubKey         = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband"
Const $HKEY_CURRENT_USER = 0x80000001

Dim $strUserAppData
Dim $objFolder
Dim $objFolderItem
Dim $objVerb

With ObjCreate("Shell.Application")
    $strUserAppData = .NameSpace("shell:AppData").self.Path
   
    $objFolder = .Namespace($strUserAppData & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar")
   
    If IsObj($objFolder) Then
        For $objFolderItem In $objFolder.Items
            For $objVerb In $objFolderItem.Verbs
                ConsoleWrite(StringReplace($objVerb.Name, "&", "") & @CRLF)
                
                Switch StringLower(StringReplace($objVerb.Name, "&", ""))
                    Case "unpin from taskbar", "открепить от панели задач"
                        ConsoleWrite("Unpin [" & $objFolderItem.Name & "]." & @CRLF)
                        $objVerb.DoIt
                    Case Else
                        ;Nothing to do
                EndSwitch
            Next
        Next
       
        $objFolder = Null
    Else
        ConsoleWrite("Can't determine path [" & $strUserAppData & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar" & "]." & @CRLF)
    EndIf
EndWith

If ObjCreate("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").Get("StdRegProv").DeleteKey($HKEY_CURRENT_USER, StringSplit($strSubKey, "\")[1]) <> 0 Then
    ConsoleWrite("Can't delete subkey [" & $strSubKey & "]." & @CRLF)
EndIf

Exit
 
Автор
S

SharkyEXE

Новичок
Сообщения
134
Репутация
0
CreatoR

Здравствуйте.

Проверил Ваш скрипт, там бяка - не удаляется целиком-полностью ветка реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband

В версии на vbs удаляется целиком-полностью ветка реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband

Пожалуйста, выложите испарвленную версию

Спасибо.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Нашёл проблему.
Замени
Код:
If ObjCreate("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").Get("StdRegProv").DeleteKey($HKEY_CURRENT_USER, StringSplit($strSubKey, "\")[1]) <> 0 Then
    ConsoleWrite("Can't delete subkey [" & $strSubKey & "]." & @CRLF)
EndIf


на
Код:
If ObjCreate("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").Get("StdRegProv").DeleteKey($HKEY_CURRENT_USER, StringTrimLeft($strSubKey, StringInStr($strSubKey, "\"))) <> 0 Then
    ConsoleWrite("Can't delete subkey [" & $strSubKey & "]." & @CRLF)
EndIf
 
Автор
S

SharkyEXE

Новичок
Сообщения
134
Репутация
0
CreatoR

Здравствуйте.

1) Большое Вам спасибо, теперь удаляется целиком-полностью ветка реестра "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband"

2) А максимально к оригиналу 1.vbs параметры (выделил чёрным)

Split(strSubKey, "\", 2)(1)) <> 0 Then

никак не сохранить, то есть чтобы на Autoit остались параметры
2)(1))

Так сказать, может еще как-то можно

Спасибо.
 
Последнее редактирование:

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Можно ещё так:

Код:
If ObjCreate("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").Get("StdRegProv").DeleteKey($HKEY_CURRENT_USER, StringRegExpReplace($strSubKey, '^[^\\]+\\', '')) <> 0 Then
    ConsoleWrite("Can't delete subkey [" & $strSubKey & "]." & @CRLF)
EndIf
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Вроде это тоже самое что и штатными средствами:
Код:
RegDelete($strSubKey)

Кстати для такой операции нужно обладать правами админа.
 
Верх