Предупреждающее сообщение iTunes при выходе из-за сценариев - PullRequest
2 голосов
/ 09 сентября 2008

Написал в 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

Ответы [ 2 ]

4 голосов
/ 09 сентября 2008

Вот одна вещь, которую я сделал на своем скрипте 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.

0 голосов
/ 10 сентября 2008

Вы должны иметь возможность установить $ itunes в $ null. Кроме того, $ itunes должен иметь метод quit, который вы можете вызвать. $ Itunes.quit ()

...