fc2ブログ

WSH Panel ModからPowershellを利用したい

先ほどの例はPCにPython環境が設定されていなければ動作しないものだった。

しかし、PowershellはVista以降のPCには標準搭載されている機能なので、汎用性がある。

PowershellはそもそもWSHの後釜として作られたものでWMIへのアクセスなどがWSHに比べて格段に容易に記述することができる他、WSHと比較して最大?の進歩といえば「.NETの全機能を利用できる」ということである。

 

   1:  Set objShell = CreateObject("WScript.Shell")
   2:  Set objExec = objShell.Exec("powershell -command [math]::sqrt(2)")
   3:  objExec.StdIn.Close()
   4:  fb.trace("2の平方根 = "+objExec.StdOut.Readall())
   5:  set objExec = Nothing
   6:  set objShell = Nothing

算術計算には[Math]::関数が利用できる。

 

   1:  Set objShell = CreateObject("WScript.Shell")
   2:  Set objExec = objShell.Exec("powershell -command [Console]::Beep(440, 1000)")
   3:  objExec.StdIn.Close()
   4:  set objExec = Nothing
   5:  set objShell = Nothing

Beep音を鳴らすこともできる。上ではド。

ちなみに少し音楽理論を、周波数と音階の関係は基音を69のC(440Hz)とすると

f = 440 * 2 ^((n-69)/12)となる。

なので、WSH Panel Mod経由でPowerShellからNETのBeep関数を利用してドレミファソラシドを鳴らすスクリプトは以下のようになる。

   1:  Set objShell = CreateObject("WScript.Shell")
   2:  cmd = "[Console]::Beep("+CStr(440*2^((69-69)/12))+", 1000);"
   3:  cmd = cmd + "[Console]::Beep("+CStr(440*2^((71-69)/12))+", 1000);"
   4:  cmd = cmd + "[Console]::Beep("+CStr(440*2^((73-69)/12))+", 1000);"
   5:  cmd = cmd + "[Console]::Beep("+CStr(440*2^((74-69)/12))+", 1000);"
   6:  cmd = cmd + "[Console]::Beep("+CStr(440*2^((76-69)/12))+", 1000);"
   7:  cmd = cmd + "[Console]::Beep("+CStr(440*2^((78-69)/12))+", 1000);"
   8:  cmd = cmd + "[Console]::Beep("+CStr(440*2^((80-69)/12))+", 1000);"
   9:  cmd = cmd + "[Console]::Beep("+CStr(440*2^((81-69)/12))+", 1000);"
  10:  Set objExec = objShell.Exec("powershell -command "+cmd)
  11:  objExec.StdIn.Close()
  12:  set objExec = Nothing
  13:  set objShell = Nothing

基音のドはn=69なので上の数式に当てはめると

f(周波数)=440*2^((69-69)/12)=440*2^(0/12)=440Hzとなる

レはドの#の次の音なので

f(周波数)=440*2^((71-69)/12)=440*2^(2/12)となる

ちなみに隣り合っている音(ミとファ、シとド)などではnは1しか増えない、それ以外は2ずつ増えていることがわかる。

 

なお、このスクリプトを実行させるために色々試行錯誤はしたが中々思うように動かないことがあった。

その際、MSDNコミュニティで親切に質問に答えてくださったMVPの牟田口大介さんには感謝しもしきれません。

スポンサーサイト



コメントの投稿

非公開コメント

プロフィール

Naka210

Author:Naka210
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR