VBscriptでitunesを毎日指定時間に動かすため、タスクスケジューラに登録していますが『行:2、文字:1、"iTunes.Application"というオブジェクトを作成できませんでした、ソース:Wscript.CreateObject』と表示され、実行されません。

解決方法の記載をお願い致します。

状況:VBscriptをクリックすれば正常に動きます。タスクスケジューラは指定時間に起動されています。時々正常に動作します(理由不明)。タスクを実行するためにスリープを解除。開始(オプジョン)指定済み。
環境:Windows10、itunes最新

Dim it
Set it = WScript.CreateObject("iTunes.Application")
if Weekday(Now) = 2 or Weekday(Now) = 4 or Weekday(Now) = 6 then
Set pList =it.LibrarySource.Playlists.ItemByName("月水金の朝")
end if
if Weekday(Now) = 3 or Weekday(Now) = 5 then
Set pList =it.LibrarySource.Playlists.ItemByName("火木の朝")
end if
if Weekday(Now) = 7 or Weekday(Now) = 1 then
Set pList =it.LibrarySource.Playlists.ItemByName("土日の朝")
end if
pList.Shuffle = 1
pList.PlayFirstTrack()
WScript.sleep 5000
it.SoundVolume = 50

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2017/06/20 08:15:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:consultation10

VBscriptで解決が難しそうなので、他のプログラム等でも解決できる方法がありましたらお願い致します。

回答0件)

回答はまだありません

  • id:ken3memo
    >VBscriptをクリックすれば正常に動きます
    >時々正常に動作します(理由不明)。
    '
    スリープ明け、
    寝起きで不機嫌なら、
    朝一はコーヒーではなく水を一杯飲んで落ち着きましょう
    じゃなかった、
    スリープ明けに他の処理・タスクが走っていて
    Set it = WScript.CreateObject("iTunes.Application")
    を邪魔しているだけなら、
    冒頭で一息つく意味でwaitしてみては?
    '寝起きが悪いなら、少し待ってみる?
    WScript.sleep 60000 '←先頭に入れ、60秒、一分あたまで待つ
    Dim it
    Set it = WScript.CreateObject("iTunes.Application")
    if Weekday(Now) = 2 or Weekday(Now) = 4 or Weekday(Now) = 6 then



    .
    6:30 起動のスケジュールなら、
    頭で一分待つので、6:29分スタートにすると時間が合わせやすいかな。
    ※そんなに時刻を気にしないでいいなら、
     スリープ明け一分も他の処理を待たなくてもよいかも・・・
    .
    回答の文章がふざけている
    And
    自信が無いのでコメントで失礼します。
    解決の糸口となれば幸いです。。。
  • id:consultation10
    コメントありがとうございます。
    最初にスリープを入れてみましたが、結果は一緒でした。
    もう少し解決方法を考えてみます。
  • id:cx20
    タスクスケジューラのセキュリティオプションは何に設定されていますでしょうか?
    「ユーザーがログオンしているかどうかにかかわらず実行する」になっている場合は「ユーザーがログオンしているときのみ実行する」に変えて試してみてください。

    なんとなくですが、ユーザープロファイルが読み込まれないと、iTunes.Application が起動できないのでは無いかと思います。
    手持ちの Windows 10 環境で、コマンドプロンプトから「runas /noprofile /user:xxxx cmd.exe」(ユーザープロファイルを読み込まないでコマンドプロンプトを起動)を行い、VBScript を実行したところ、同じエラーが表示されることを確認しました。

    確証はないですが、そのあたりが原因な気がします。
  • id:consultation10
    コメントありがとうございます。
    既に「ユーザーがログオンしているときのみ実行する」になっていました。
    もう少しこのあたりも検討してみます。
  • id:cx20
    > 既に「ユーザーがログオンしているときのみ実行する」になっていました。

    対話的ログオンで実行している場合は画面からVBScriptを実行するのと同様の動きになると思っていたんですが、うまくいかないのは謎ですね。。。
    ちなみにタスクスケジューラに登録してあるタスクを手動実行(「タスクを選択」-「右クリック」-「手動実行」)した場合は、正常動作する感じでしょうか?

    以下は、参考情報です。タスクスケジューラが起動しない場合の一般的な対処方法になります。

    <確認ポイント>
    ・タスクスケジューラのセキュリティオプションで「最上位の特権で実行する」
    ・ローカル セキュリティポリシーで「バッチ ジョブとしてログオン」の権利を実行アカウントに割り当てる
    ・タスクスケジューラの「条件」タブで「コンピュータを AC 電源で使用している場合にのみタスクを開始する」のチェックを外す

    <参考情報>
    ■ Windowsでログオフ中でもタスクを起動させる方法
    http://www.atmarkit.co.jp/ait/articles/1307/08/news101.html
  • id:consultation10
    コメントありがとうございます。

    タスクスケジューラを手動で実行しても同様のエラーとなりました(ダブルクリックの実行は正常に動作します)。
    スリープからの起動が問題の原因でないことがわかり、とても助かりました。

    別の方法として、タスクスケジューラでuwscを起動し、uwscからvbscriptを実行しても同様のエラーでした。

    ちなみに、vbscriptを実行した際は、itunesは選択され表面に表示されるが、5-10秒後にエラーとなります。

    なお、『最上位の特権で実行する』と『コンピュータを AC 電源で使用している場合にのみタスクを開始する(チェック外す)』は対応済みで、『バッチ ジョブとしてログオン』はwin10 homeのためか設定を見つけることができませんでした。
  • id:consultation10
    かなり強引ですが、間にuwscファイルを2つ入れることで解決できました(プログラムだけでなく、ランチメニュを介することがポイントでした)。

    タスクスケジューラでuwsc①を実行
    →uwsc①によりランチメニュからuwsc②を起動("ctrl"+"q"でランチメニュを起動し、"0"を入力することでuwsc②を起動)
    →uwsc②によりvbscript①を実行
    →vbscript①でitunesを再生
  • id:cx20
    > uwscファイルを2つ入れることで解決できました
    一応解決されたようで良かったです。

    何故その方法がうまくいくのかが分かっていないので、ちょっとモヤっとしてますけどね。。。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません