前提・実現したいこと
恐れながらプログラミング未経験者です。
下記URLを参考にWindowsのサウンドの録音タブにある、ライン入力を一旦無効にして、再度有効にするスクリプトを自作しました。
(規定デバイス変更時、この処理をしないとライン入力の音声が正しいスピーカーから出力されないためです。)
うまく動くこともあれば、添付の画像の画面で止まってしまう(正常に終了しない)こともあります。
よければ改善法をお教えいただけないでしょうか?
参考サイトURL
https://nyanshiba.hatenablog.com/entry/2017/08/21/221555
http://chryfopp.hatenablog.com/entry/2013/03/27/123749
発生している問題・エラーメッセージ
添付した画像の画面(録音タブではなく、再生タブ)で止まってしまい、正常稼働しないことがあります。 正常に稼働する場合はライン入力が有効から→無効→有効と切り替わり、画像のウィンドウで止まらずに消えます。
該当のソースコード
var wait = function(title){ do { WScript.Sleep(100); } while(!WshShell.AppActivate(title)); }; var WshShell = WScript.CreateObject("WScript.Shell"); WshShell.Run("control mmsys.cpl"); wait("サウンド") WshShell.SendKeys("^{PGDN}");//CTRL+PageDNで録音タブに// WshShell.SendKeys("{DOWN 3}");//↓3回でラインインを選択(※環境によって異なる)// WshShell.SendKeys("+{F10}");//Shift+F10でコンテキストメニュー表示// WshShell.SendKeys("{DOWN}");//↓で無効化選択// WshShell.SendKeys("~");//Enterで無効化// WshShell.SendKeys("{DOWN 3}");//↓3回でラインインを選択(※環境によって異なる)// WshShell.SendKeys("+{F10}");//Shift+F10でコンテキストメニュー表示// WshShell.SendKeys("{DOWN}");//↓で有効化選択// WshShell.SendKeys("~");//Enterで有効化// WshShell.SendKeys("~");//Enterで確定、閉じる//
試したこと
一度正常に動くとその後も連続で正常に動く事が多いです。
再起動直後でも、動いたり、動かなかったりします。
録音タブではなく、再生タブで止まってるので、
最初のCtrl+PageDNの命令が届いてないのかもしれません。
(でもそのやり方もよく分かってませんので、よければご教授いただきたいです)
完全なるプログラミング未経験のですが、自分で調べれる範疇ではお手上げ状態です。
どうかよろしくお願い致します。
6/16追記
最初の新規設定している関数の待ち時間を伸ばせば解決するかと思い、
3行目のsleep(100)を様々な数字に置き換えてみましたが症状は変わりませんでした。
数字を1000以上にするとそもそも動かなくなるようですね。
また、添付画像の様にScroll lockキーが押された表示が、スクリプトの正常動作、失敗に関わらずでてきます。
勿論、命令にはスクロールロックキーを入力する命令を入れてないため、原因は不明です。
もしかしてカテゴリ違いですか?
ファイルの種類にjavascriptと書いてあったのでここに質問をしたのですが・・・
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/16 14:11