スクリプト類とメニューボタン

トップ ソフト 雑記 日記 リンク

2015/06/18

サチコと神ねこ様のリンク

Pouchというサイトで、わこ(@wako3999)さんが連載されている「サチコと神ねこ様」という漫画があるのですが、新しい話から古い話へのリンクは有るのに、古い話から新しい話へのリンクが無いので、第1回から順に読むのが困難2020年ぐらいから次の話へのリンクが付いたようです。
タグ一覧でも新しいもの順ですし、レコメンドで出てくる話もランダムで、番号順に読むのは無理そうです。

なので各話へのリンクを作りました。順に追記します。

最近の更新分(表示されるまで少し時間が掛かります)

最初から







































































































































































































































































































2015/04/10

Bluetoothイヤフォン MDR-EX31BN のNFC簡単接続をWindowsでも

Bluetoothイヤフォン MDR-EX31BN を買いました。
わたしが買ったのは赤色です。
この製品には、「NFC簡単接続」という機能があり、NFC対応Android端末とタッチするだけでBluetoothのペアリング設定ができるという代物です。
通常、ボタンを押してのペアリング設定だと7秒間もボタンを押し続けないといけないのですが、このNFC簡単接続だと、お互いの機器を近づけて2秒ほどで認識されます。

しかし用意されているのは、Androidアプリだけ。
Windows7マシンにPasoriを繋いで簡単ログインなどに使っているのですが、これでペアリング設定ができないのかなと疑問に思いチャレンジしてみました。

わたしが使っているのはRC-S330ですが、上位機種でも問題ないでしょう。
Pasoriには、Felicaランチャーというアプリがあり、Pasoriに読ませたチップによってプログラムを起動することが可能です。



一方、Bluetoothのペアリングは、Bluetoothアプリの各機種毎のコントロールパネルで行います。
タスクバーのBluetoothアイコンから、機器一覧を出して、そこからイヤフォンのコントロールパネルを出して、この接続ボタンを押します。



要はプログラムで、この接続ボタンを押せば良いわけです。

以前はWindowsプログラムならSDKでゴリゴリ書いていたのですが、最近はもっと簡単にできるはず。
手近なところで、標準で入っているPowerShellで操作できるかなと調べてみたところ、ありました。

UI Automation PowerShell Extension

ダウンロードしないといけないので、完全に標準の機能だけでは済みませんでしたが、かなり手軽にできるようです。
インストールは
\マイ ドキュメント\WindowsPowerShell\Modules\UIAutomation
に展開して、PowerShellのプロンプトから
Import-Module .\UIAutomation.dll
を実行します。

モジュールのロードは、PowerShellのプロンプトを閉じると無効になってしまいます。
Linuxなどのように、自動で読み込んでくれるような仕組みは無いものかと調べてみると、これも有りました。そのままずばりプロファイル機能。
\マイ ドキュメント\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 (*1)
に書いておくと、プロンプトを開いたときに実行してくれます。
これで先ほどのImport-Moduleコマンドを書いてPowerShellプロンプトを開くと・・・

スクリプトの実行がシステムで無効になっているため、ファイル ~\マイ ドキュメント\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 を読み込めません。詳細については、「get-help about_signing」と入力してヘルプを参照してください。
発生場所 行:1 文字:2
+ . <<<< '~\マイ ドキュメント\WindowsPowerShell\Microsoft.PowerShell_profile.ps1'
+ CategoryInfo : NotSpecified: (:) []、PSSecurityException
+ FullyQualifiedErrorId : RuntimeException


なにやら真っ赤な字でエラーが出てきました。
プロンプトから手動で実行するには、人間が操作しているので問題ありませんが、自動で実行されるのはセキュリティ的に問題があるということで、制限が掛けられているのです。
これはPowerShellのプロンプトを管理者権限で起動して
Set-ExecutionPolicy RemoteSigned
を実行することで、 設定が変更できます。 (*2)
ここで嵌まったのが、上記の方法で設定を変更したのに、Felicaランチャーから起動したときにはエラーが出てきてしまうというものでした。
どうにも分からず、TLに投げてみたところ




と、PowerShellの偉い人からズバリな回答をいただきました。
スタートメニューにあるPowerShell(x86)のリンクから設定すると、無事に起動しました。
Felicaランチャーが32bitコードで書かれているのが原因だったようです。

さて、これでかなり近づいてきました。
あとはPowerShellでボタンを押すだけです。

$process = Start-Process  -FilePath "C:\Program Files\WIDCOMM\Bluetooth Software\BTWUIExt.exe" -ArgumentList "/deviceAddr=fcf152a9a66a" -PassThru
$window = Get-UiaWindow -ProcessId $process.Id
$window | Get-UiaButton -AutomationId 'btnConnectDisconnect' -Class 'Button' | Invoke-UiaButtonClick | Out-Null
Stop-Process $process.Id

deviceAddrに設定する値は、機械によって異なると思います。わたしは、
Process Explorer
を使って、Bluetoothイヤフォンのコントロールパネルが表示されているときに、プロセスがどんなコマンドラインで呼ばれているのかを調べました。

これをエクスプローラーから実行すると、接続ボタンが表示されているときは接続ボタンが、切断ボタンが表示されているときは切断ボタンが押されます。
NFC簡単接続でも、接続中にもう一度タッチすると切断されるので、完全に同じ動作です。

あとは、FelicaランチャーにこのPowerShellをセットするだけ。イヤフォンをPasoriに近づけてみると、メモ帳が開く・・・。
そう、ps1ファイルは普通に開くとメモ帳が開いてしまうのです。
PowerShellでは、"powershell.exe file.ps1"とすることで、指定のファイルを実行できるのですが、Felicaランチャーのアプリ指定画面では、ファイルを一つ指定できるだけです。
そこで最初の画面写真にあったように、VBスクリプトでPowerShellを起動するようにしました。
VBSファイルなら、そのまま開くだけで実行されます。
CreateObject("WScript.Shell").Run "powershell.exe (ディレクトリ名)\headset_setting.ps1",0
これで完成。

(*1) 実際のファイル位置は、PowerShellプロンプトで、 $profile を実行すると表示されます。
何も設定していなければ、実際にその場所には何もファイルが無いと思いますので、新規作成する必要があります。

(*2) 指定方法は
Tech TIPS:WindowsでPowerShellスクリプトの実行セキュリティポリシーを変更する @IT
を参考に。

2015/03/30

電話番

そろそろ新しい季節ですね。
新入生・新社会人の方、頑張ってください。
わたしも、そんな頃があったなぁと想い出に浸っていたら、ふと思い出したことがあったので、ブログにカビが生えないように書き留めてみます。



新社会人として、大手製鉄会社の孫会社にあたるソフトウェア開発会社に入った私。
3週間の新入社員研修を済ませ、配属になったのは大阪の事業所でした。
事業所と言っても、細い雑居ビルのワンフロア。親会社と協力会社が入り交じった机が並び、縦長の島二つに40人ほどがぎゅうぎゅう詰めになっているような部屋でした。

新人ですし、いきなりバリバリ仕事ができるわけでもなく、まずはOJTとして指導を受けつつ、「電話が掛かってきたら出て」と言われました。
事業所には事務や総務の人はおらず、みんな何かしら開発に近い作業をしていました。開発者の人なら分かると思いますが、作業中の割り込みは効率が悪くなる要素です。新人への業務としてはもってこいの仕事かと思います。

プルルルル
「はい、○○(親会社名)です。」
『株式会社$#%※=(←よく聞き取れない)の山本(仮名)と申します。佐藤(仮名)さんはおられますでしょうか。』
「申し訳ありません、もう一度お名前をお願いできますでしょうか。」
『$#%※=(←やっぱり聞き取れない)の山本です。」
新人研修で電話の取り方は習いました。いわゆる正常系は習いましたが、異常系を習っていません。
ここで頭がフル回転します。

(いきなり名指しで掛けてきたということは、普段から取引のある会社だという事は分かる。)
(ここで、失礼ですがもう一度お願いしますというのは、本当に失礼すぎる。)
(相手も急いでいるだろう。電話代だって向こう持ちだ。)
(普段から掛けてきているところなら、佐藤さんだって分かるはずだ。)

ここで、佐藤さんの机まで行って声を掛けます。
「佐藤さん、会社名が聞き取れなかったのですが、山本さんからお電話です」
『どこの山本さん?』
(ああー、やっぱりちゃんと聞き直すのが正解だったのかー)



というやり取りです。

今にして思えば、「分からないまま次に進むな、ちゃんと理解するまで繰り返せ」という事なんでしょうけど、自社内で完結しているならまだしも、相手先があることだと難しいですね。
しかし、別の立場から見ると、あんたとこの社員の経験を積ませるために、うちが電話代を払うの?って思われちゃったりしないか。何度も聞き返されて、ちょっとイラッと来るとか。(分かりやすい社名にするか、二回目以降はゆっくりしゃべれば良いだけだが)

いきなり聞いたことのない単語を言われると、頭が言葉として認識できない事がありませんか?最近聞いた中だと「ラッスンゴレライ」みたいな。
そこの業務に携わって経験を積んでいれば、騒音で相手会社名の一部分しか聞こえなくても推測で分かるかもしれません。

あるとき気がついたのは、「よく電話が掛かってくる会社名一覧」が有れば済んだ話ではないかと思いました。
なので、新入社員が入ってきて電話番を引き渡す人は「よく電話が掛かってくる会社名一覧」を作っておいてあげると嬉しいかなーと思いました。


開発メインの会社だと、電話は事務や総務の人が取ってくれると、一番簡単な解決だとは思います。
その後、その事業所は別のビルに移転しフロアが広くなり、事務の人が本社から配属されてきたので、電話を取ることはほとんどありませんでした。

広告