1

Тема: AHK: Скрыть значки рабочего стола (Win10)

Доброго времени суток всем!
В Windows 10 есть такая функция - скрыть значки раб. стола. (ПКМ по раб. столу -> Вид -> Отображать значки рабочего стола)
Собвстенно вопрос, возможно ли реализация данной функции посредствам АХК? Если да, то в какую сторону смотреть?
Имею в виду без симуляции кликов по раб. столу (кликер могу сам реализовать), а просто, по горячей клавише.
Как пример:
F10 - скрылить значки / F10 - отобразились снова

2

Re: AHK: Скрыть значки рабочего стола (Win10)

Michael пишет:

Если да, то в какую сторону смотреть?

Значки рабочего стола, очевидно, принадлежат какому-то окну. Если скрыть это окно — скроются и значки.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Скрыть значки рабочего стола (Win10)

teadrinker
Работает, но скрываются не только значки, но и всё окно, что логично. Заставки нету + окно рабочего стало некликабельно.

F9::
WinHide, ahk_class Progman
return

F10::
WinShow, ahk_class Progman
return

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

4

Re: AHK: Скрыть значки рабочего стола (Win10)

Значки принадлежат не окну рабочего стола. Они принадлежат одному из его дочерних окон, которые называются контролами. Определите, какому конкретно контролу принадлежат значки, и скрывайте его, а само окно рабочего стола останется видимым.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Скрыть значки рабочего стола (Win10)

teadrinker
Понял, сейчас попытаюсь разобраться.
Немного забегу вперед, а возможно ли скрытие конкретных ярлыков на раб. столе по горячей клавише? А то, всё что я делаю, будет бесполезно

6

Re: AHK: Скрыть значки рабочего стола (Win10)

Можно, но другим способом. Ярлыки — это файлы, а файлы могут быть скрытыми.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Скрыть значки рабочего стола (Win10)

teadrinker
Такс, хорошо.
Вот такое навоял:

var:=false
F9::
var:=!var
if(var)
{
    FileSetAttrib, ^H, C:\Users\Администратор\Desktop\*.*, 1
	FileSetAttrib, -H, C:\Users\Администратор\Desktop\ПРИМЕР.txt ; ФАЙЛ КОТОРЫЙ ОСТАНЕТСЯ
} else {
    FileSetAttrib, ^H, C:\Users\Администратор\Desktop\*.*, 1
	FileSetAttrib, -H, C:\Users\Администратор\Desktop\ПРИМЕР.txt ; ФАЙЛ КОТОРЫЙ ОСТАНЕТСЯ
}
return

Скрывает с раб. стола все файлы, но ярлыки и корзина остается. Как их побороть - не пойму.

8

Re: AHK: Скрыть значки рабочего стола (Win10)

Корзина вроде не является файлом или ярлыком, там отдельная история. Насчёт ярлыков: не всё, что отображено на раб. столе, хранится в C:\Users\Администратор\Desktop. Кое-что может быть в C:\Users\All Users.

9

Re: AHK: Скрыть значки рабочего стола (Win10)

ypppu пишет:

не всё, что отображено на раб. столе, хранится в C:\Users\Администратор\Desktop.

Действительно! Спасибо.

var:=false
F9::
var:=!var
if(var)
{
    FileSetAttrib, ^H, C:\Users\Администратор\Desktop\*.*, 1
    FileSetAttrib, ^H, C:\Users\Public\Desktop\*.*, 1
	FileSetAttrib, -H, C:\Users\Администратор\Desktop\ПРИМЕР.txt ; ФАЙЛ КОТОРЫЙ ОСТАНЕТСЯ
} else {
    FileSetAttrib, ^H, C:\Users\Администратор\Desktop\*.*, 1
    FileSetAttrib, ^H, C:\Users\Public\Desktop\*.*, 1
	FileSetAttrib, -H, C:\Users\Администратор\Desktop\ПРИМЕР.txt ; ФАЙЛ КОТОРЫЙ ОСТАНЕТСЯ
}
return

Скрывает все ярлыки и файлы на раб. столе, за исключением Корзины и Мой комтьюер, но их мне скрыть особого смысла и нету
Единственное что, команда выполняется с некой задержкой (выполняется не моментально, а спустя 2-3 сек), это можно как-то ускорить?

10

Re: AHK: Скрыть значки рабочего стола (Win10)

Добавьте такое:

WM_COMMAND := 0x111, Refresh := 41504, HWND_BROADCAST := 0xFFFF
PostMessage, WM_COMMAND, Refresh,,, ahk_id %HWND_BROADCAST%
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: Скрыть значки рабочего стола (Win10)

teadrinker пишет:

Добавьте такое

Добавил, теперь всё скрывается моментально.
Но добавилась очень неприятная проблема, после повторного нажатия на F9 (сделать значки обратно видимыми), не запонимается старое расположение значков, и они все в ряд тупо напихались

12

Re: AHK: Скрыть значки рабочего стола (Win10)

Можно получить позицию иконки с помощью LVM_GETITEMPOSITION, где-то сохранить и потом установить с помощью LVM_SETITEMPOSITION.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: AHK: Скрыть значки рабочего стола (Win10)

teadrinker пишет:

получить позицию иконки с помощью LVM_GETITEMPOSITION

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

14

Re: AHK: Скрыть значки рабочего стола (Win10)

Не расстраивайтесь, вам все равно эту задачу не осилить.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: Скрыть значки рабочего стола (Win10)

Согласен, тут не каждый профи сможет. Нужно апи всякие без нормальных примеров изучать на другом языке, ну его нафиг, пускай лучше как есть останется.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

16

Re: AHK: Скрыть значки рабочего стола (Win10)

Michael

А разве переменная %A_Desktop% не вернёт полный путь к рабочему столу? Возможно её лучше использовать, так сказать универсальная для любого компа.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

17

Re: AHK: Скрыть значки рабочего стола (Win10)

Что-то такое есть на оф. сайте:

F1:: DesktopIcons(True)			; to show
F2:: DesktopIcons(False)		; to hide
F3:: DesktopIcons()			; to toggle the current state


DesktopIcons(Show:=-1, hWnd:=0) {                    ; By SKAN on D35D @ tiny.cc/desktopicons
If ! hWnd := DllCall("GetWindow", "Ptr",WinExist("ahk_class Progman"), "UInt",5, "Ptr")
     hWnd := DllCall("GetWindow", "Ptr",WinExist("ahk_class WorkerW"), "UInt",5, "Ptr")
If DllCall("IsWindowVisible", "Ptr",DllCall("GetWindow","Ptr",hWnd, "UInt",5, "Ptr")) != Show
   DllCall("SendMessage","Ptr",hWnd, "Ptr",0x111, "Ptr",0x7402, "Ptr",0)
}

18

Re: AHK: Скрыть значки рабочего стола (Win10)

А как выборочно скрыть там нету?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

19

Re: AHK: Скрыть значки рабочего стола (Win10)

ypppu пишет:

Что-то такое есть на оф. сайте:

Вот это прям то - что нужно!


F9::
DesktopIcons()			; to toggle the current state
DesktopIcons(Show:=-1, hWnd:=0) {                    ; By SKAN on D35D @ tiny.cc/desktopicons
If ! hWnd := DllCall("GetWindow", "Ptr",WinExist("ahk_class Progman"), "UInt",5, "Ptr")
     hWnd := DllCall("GetWindow", "Ptr",WinExist("ahk_class WorkerW"), "UInt",5, "Ptr")
If DllCall("IsWindowVisible", "Ptr",DllCall("GetWindow","Ptr",hWnd, "UInt",5, "Ptr")) != Show
   DllCall("SendMessage","Ptr",hWnd, "Ptr",0x111, "Ptr",0x7402, "Ptr",0)
}
FileSetAttrib, -H, C:\Users\Администратор\Desktop\Список участников конкурса.txt 

Скрывает все иконки / показывает снова, при этом не меняет из расположение.
Только не пойму как сюда добавить исключение (какою иконку не скрывать).
Пробовал, никакой реакции:

FileSetAttrib, -H, C:\Users\Администратор\Desktop\ТЕСТ.txt 

20

Re: AHK: Скрыть значки рабочего стола (Win10)

Как быть с исключениями - не знаю. Думаю, это слишком большие запросы; быть может задумка излишне хитрая.

21

Re: AHK: Скрыть значки рабочего стола (Win10)

ypppu пишет:

быть может задумка излишне хитрая

Возможно, в любом случае, я сделал на панели задач ссылку на нужный документ, так что весь раб. стол можно скрывать (а это работает прекрасно). Не буду ломать голову себе и другим

22

Re: AHK: Скрыть значки рабочего стола (Win10)

Сделать некоторые файлы видимыми вручную? Думаю проблема будет только в их расположении.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

23

Re: AHK: Скрыть значки рабочего стола (Win10)

AHK позволяет создать своё окно GUI, имитирующее Рабочий стол. Элемент управления называется ListView. В нём можно разместить отдельно взятые значки-исключения.

24

Re: AHK: Скрыть значки рабочего стола (Win10)

ypppu пишет:

Что-то такое есть на оф. сайте

Они там у себя на оф. сайте явно перемудрили.

$F1:: DesktopIcons() ; to toggle the current state

DesktopIcons() {
   SetTitleMatchMode, RegEx
   hDT := WinExist("ahk_class (Progman|WorkerW)")
   hWnd := DllCall("FindWindowEx", "Ptr", hDT, "Ptr", 0, "Str", "SHELLDLL_DefView", "Ptr", 0, "Ptr")
   SendMessage, WM_COMMAND := 0x111, toggleIconsMenuID := 0x7402,,, ahk_id %hWnd%
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

25

Re: AHK: Скрыть значки рабочего стола (Win10)

Наверное ещё через реестр можно такое делать.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

26

Re: AHK: Скрыть значки рабочего стола (Win10)

Не знаю, расследуйте!

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

27 (изменено: __Михаил__, 2021-02-20 23:11:50)

Re: AHK: Скрыть значки рабочего стола (Win10)

Мне такое честно говоря даже тестировать не хочется - нет нужды.
Для себя сделал следующие комбинации и мне хватает (через правку реестра):
Alt + H = отображение скрытых файлов.
Alt + J = отображение расширений файлов.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

28

Re: AHK: Скрыть значки рабочего стола (Win10)

А зачем нужно скрывать расширения файлов?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

29

Re: AHK: Скрыть значки рабочего стола (Win10)

Для того, чтобы случайно не стереть при переименовании, да и привык когда его не видно. Иногда просто бывали случаи, что нужно сменить его а копаться в настройках отображения лень.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

30

Re: AHK: Скрыть значки рабочего стола (Win10)

__Михаил__ пишет:

да и привык когда его не видно

По мне так странно. Если нет расширения, два файла с одним именем могут выглядеть одинаково. Случайно стереть расширение нельзя, Windows предупреждает о смене расширения.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

31

Re: AHK: Скрыть значки рабочего стола (Win10)

А зачем видеть лишние символы? Особенно на рабочем столе. Это уже дело привычки.
Если файлы выглядят одинаково - да проблемка, но не такая уж большая когда есть возможность быстро это исправить при необходимости.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

32

Re: AHK: Скрыть значки рабочего стола (Win10)

__Михаил__ пишет:

А зачем видеть лишние символы?

Ну не знаю, дело привычки. Иногда в Windows слетают ассоциации файлов, и меняются иконки. В этом случае вообще что-либо идентифицировать без расширения проблематично.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

33

Re: AHK: Скрыть значки рабочего стола (Win10)

Что нужно делать с виндой, чтобы иконки сбились? У меня такой проблемы ни разу не было.
Разве что были случаи когда программу какую обновил / установил аналог, тогда иконки могут ещё смениться, но это не проблема обратно сменить, если конечно знать о такой подлости программы.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

34

Re: AHK: Скрыть значки рабочего стола (Win10)

Да, именно при установке программ. Но иногда может быть при ошибочном запуске программы «запустить с помощью».

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

35

Re: AHK: Скрыть значки рабочего стола (Win10)

А зачем видеть лишние символы?

Например, чтобы не запустить какой-то незнакомый исполняемый файл.

Можно при переименовании файла случайно удалить расширение, но тогда иконка изменится на "неизвестный тип файла". Это действие можно отменить по Ctrl + Z.