都内で働くSEの技術的なひとりごと

都内でサラリーマンやってます。マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。よろしくお願いします♪

PowerShell を使って ストアアプリを起動してみた

 この時期はハウスダストアレルギーが辛い時期です。病院で少し強めの薬をもらったので、少し体の調子が良くなってきました。

 最近、気になったストアアプリの起動方法に関して書きたいと思います。まずこの記事のタイトルだけみると、

『 Start-Process でファイルパス指定するだけでしょ?』

という内容と思われるかもしれません。しかし、ストアアプリをプログラムから ( デスクトップアプリ等 ) 起動するのは単純なものではありません。例えばストアアプリのカメラのモジュールは下記の場所に格納されています。

f:id:koogucc11:20140624150931p:plain

 Camera.exe をダブルクリックしてみましょう。Camera.exe は起動しません。ストアアプリは、スタート画面や同じストアアプリからしか起動できません。デスクトップアプリとストアアプリを連携させるにはどのようにしたらいいのでしょうか?現時点では方法はないようです。これを解決するために、今回トリッキーな方法ですが、PowerShell を使ってストアアプリの起動を実現します。

 直接起動することはできませんので、画面のキー操作をエミュレートする方法で起動したいと思います。ストアアプリを起動するには、下記のような手順を踏みます。

  1. Ctrl + ESC キーを押下する。
    アプリ カテゴリ順の画面が表示されます。

    f:id:koogucc11:20140624151910p:plain

  2. アプリ カテゴリ順の画面上で、何かキーを押下します。ここでは、『k』をおしてみます。検索バーが表示されます。

    f:id:koogucc11:20140624152126p:plain

  3. Back Space キーを押下します。

    f:id:koogucc11:20140624152507p:plain

  4. 『カメラ』と入力します。

    f:id:koogucc11:20140624152645p:plain

  5. ENTER キーを押下します。
    これで、カメラのストアアプリが起動できます。

 上記のキー操作を、PowerShell を使用して実現してみましょう。みなさん大好き? PowerShell ISE でコーディングしましょう。

f:id:koogucc11:20140624153108p:plain

#日本語は 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 で上記ソースコードを実行してみましょう。

f:id:koogucc11:20140624155729p:plain

 これで、カメラのストアアプリを起動することができます。業務システムだとまだまだデスクトップアプリが多く存在しており、Windows 8.1 上では、ストアアプリとデスクトップアプリ間での連携は必須です。将来、この問題が解消されるのを期待しています。

※いや、本当にこの時期は辛いです。ここ最近、ずっと鼻がつまったままです。アレルギー性鼻炎が重症で、アレグラではあまり効き目がありません.....

ミニPOP ★ 大野智 「アレグラ」
 

※あと、PowerShell といえば、Windows Server 2012 R2と同時期にリリースされた  PowerShell DSC ( Desired State Configuration ) ですかね。今後は、この PowerShell DSC で Windows Server インフラの構成管理を自動化していくようになるのでしょう。注目する技術の一つです。

Windows PowerShell実践システム管理ガイド

Windows PowerShell実践システム管理ガイド

 

※さすがに、まだ DSC について書かれているものはなさそうです。まずは、

PowerShell DSCで始めるWindowsインフラストラクチャ自動化の基本:PowerShell Desired State Configuration(DSC)とは(前) (1/2) - @IT 

PowerShell DSCで始めるWindowsインフラストラクチャ自動化の基本:PowerShell Desired State Configuration(DSC)とは(前) (2/2) - @IT で勉強しましょう。