この時期はハウスダストアレルギーが辛い時期です。病院で少し強めの薬をもらったので、少し体の調子が良くなってきました。
最近、気になったストアアプリの起動方法に関して書きたいと思います。まずこの記事のタイトルだけみると、
『 Start-Process でファイルパス指定するだけでしょ?』
という内容と思われるかもしれません。しかし、ストアアプリをプログラムから ( デスクトップアプリ等 ) 起動するのは単純なものではありません。例えばストアアプリのカメラのモジュールは下記の場所に格納されています。
Camera.exe をダブルクリックしてみましょう。Camera.exe は起動しません。ストアアプリは、スタート画面や同じストアアプリからしか起動できません。デスクトップアプリとストアアプリを連携させるにはどのようにしたらいいのでしょうか?現時点では方法はないようです。これを解決するために、今回トリッキーな方法ですが、PowerShell を使ってストアアプリの起動を実現します。
直接起動することはできませんので、画面のキー操作をエミュレートする方法で起動したいと思います。ストアアプリを起動するには、下記のような手順を踏みます。
- Ctrl + ESC キーを押下する。
アプリ カテゴリ順の画面が表示されます。
- アプリ カテゴリ順の画面上で、何かキーを押下します。ここでは、『k』をおしてみます。検索バーが表示されます。
- Back Space キーを押下します。
- 『カメラ』と入力します。
- ENTER キーを押下します。
これで、カメラのストアアプリが起動できます。
上記のキー操作を、PowerShell を使用して実現してみましょう。みなさん大好き? PowerShell ISE でコーディングしましょう。
#日本語は Sendkeys できません。
$name = "カメラ"
#clip.exe を使用して、ストアアプリ名をクリップボードにコピーしておく。
$name | clip.exe
#WScript.Shellを生成し、キー操作をエミュレートする。
# Sleep を入れないと、うまくテキストエリアなどにSendkeyできません。
$sc = '$WShell = New-Object -comobject WScript.Shell;'
$sc = $sc + '$WShell.SendKeys((''^{ESC}''));'
$sc = $sc + 'Start-Sleep -Milliseconds 300'
$sc = $sc + '$WShell.SendKeys((''k''));'
$sc = $sc + '$WShell.SendKeys((''{BS}''));'
$sc = $sc + '$WShell.SendKeys((''^v''));'
$sc = $sc + 'Start-Sleep -Milliseconds 300'
$sc = $sc + '$WShell.SendKeys((''{ENTER}''));'
#上記ソースコードを実行する。
Start-Process powershell.exe -argument $code
PowerShell ISE で上記ソースコードを実行してみましょう。
これで、カメラのストアアプリを起動することができます。業務システムだとまだまだデスクトップアプリが多く存在しており、Windows 8.1 上では、ストアアプリとデスクトップアプリ間での連携は必須です。将来、この問題が解消されるのを期待しています。
※いや、本当にこの時期は辛いです。ここ最近、ずっと鼻がつまったままです。アレルギー性鼻炎が重症で、アレグラではあまり効き目がありません.....
※あと、PowerShell といえば、Windows Server 2012 R2と同時期にリリースされた PowerShell DSC ( Desired State Configuration ) ですかね。今後は、この PowerShell DSC で Windows Server インフラの構成管理を自動化していくようになるのでしょう。注目する技術の一つです。
※さすがに、まだ DSC について書かれているものはなさそうです。まずは、