Принудительное обновление значков на рабочем столе после удаления элементов или прекращение добавления элемента в первую очередь. - PullRequest
4 голосов
/ 03 апреля 2012

Я создал скрипт powershell, который прослушивает файлы, которые будут созданы на рабочем столе.Файл немедленно удаляется, если он соответствует определенным критериям.Я использовал Remove-Item $path, где $path - это путь к файлу, который я хочу удалить.Проблема в том, что Windows все еще добавляет и продолжает показывать элемент на рабочем столе.Файл определенно отсутствует, поскольку попытка манипулировать им приведет к ошибке «Не удалось найти этот элемент» или «Файл не существует».Обновление рабочего стола вручную с помощью «Правого клика => Обновить» приведет к удалению элемента.

Существует ли способ принудительно обновить рабочий стол после удаления на нем элемента?Иначе, есть ли альтернативный метод удаления файла, чтобы он не был добавлен в первую очередь?

Ответы [ 2 ]

3 голосов
/ 13 апреля 2018

Для тех, кто все еще ищет ответ, я отправлю свой ответ на этот вопрос и здесь, так как ссылки на PowerShel.com, похоже, больше не работают:

Я использовал следующее для вызова обновления на рабочем столе из powershell с помощью кода C #:

  $code = @'
  [System.Runtime.InteropServices.DllImport("Shell32.dll")] 
  private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2);

  public static void Refresh()  {
      SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero);    
  }
'@

Add-Type -MemberDefinition $code -Namespace WinAPI -Name Explorer 
[WinAPI.Explorer]::Refresh()

Надеюсь, это поможет любому, кто все еще ищет ответ.

p.s. вот откуда я пришла идея от IDERA - Обновление кэша иконок

1 голос
/ 03 апреля 2012

Вы можете использовать SHChangeNotify из Shell32.dll

У вас есть функция в PowerShell.com

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