Предупреждающее сообщение iTunes при выходе из-за сценария

StackOverflow https://stackoverflow.com/questions/52286

  •  09-06-2019
  •  | 
  •  

Вопрос

Написал следующее в PowersHell в качестве быстрой демонстрации iTunes:

$iTunes = New-Object -ComObject iTunes.Application
$LibrarySource = $iTunes.LibrarySource
foreach ($PList in $LibrarySource.Playlists)
{
  write-host $PList.name
}

Это работает хорошо и возвращает список названий списков воспроизведения.Однако при попытке закрыть iTunes появляется предупреждение.

Одно или несколько приложений используют интерфейс сценариев iTunes.Вы уверены, что хотите выйти?

Очевидно, я могу просто проигнорировать сообщение и нажать [Выход] или просто подождать секунд 20 или около того, но есть ли простой способ сообщить iTunes, что я закончил с ним работу?

Itunes 7.7.1, Windows XP
Это было полезно?

Решение

Вот одна вещь, которую я сделал в своем сценарии Powershell, который добавляет подкасты в iTunes.Я использую Juice на сервере для загрузки всех подкастов, которые слушаю.Сценарий использует методы .Net для освобождения COM-объектов.Когда я писал свой сценарий iTunes, я прочитал пару статей, в которых говорилось, что вам следует выпускать свои COM-объекты с использованием .NET.


    [void][System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$LibrarySource)
    [void][System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$iTunes)

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

Основываясь на ваших комментариях, я провел некоторое тестирование и определил, что получу сообщение при работе с iTunes, если запущу свой сценарий таким образом, чтобы PowerShell продолжал работать.iTunes, кажется, отслеживает это.Запуск сценария таким образом, чтобы завершить его процесс после запуска, устранил сообщение.

Один из способов запуска сценария из powershell — добавить к нему префикс powershell.

powershell .\scriptname.ps1

Приведенная выше команда запустит ваш скрипт, а затем завершит процесс, который использовался для его запуска, но все равно оставит вас в командной строке powershell.

Другие советы

У вас должна быть возможность установить для $itunes значение $null.Альтернативно, $itunes должен иметь метод выхода, который вы можете вызвать.$itunes.quit()

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top