2021/09/19(Sun)brother製スキャンツールControlCenter4を直接起動する方法
2021/09/19 1:32
たま~に使うだけならよいものの、意外と一手間増えるのってストレスなので、ショートカットを作って直接起動できる方法を探ってみたメモ。
TL;DR
"C:\Program Files (x86)\ControlCenter4\BrCcBoot.exe" /model="DCP-J987N LAN" /OpenTab=0x01/modelには、ControlCenter 4に表示される"モデル"をそのまま指定する感じ。
/OpenTabには、最初に開くタブのIDを指定すれば良い模様。省略可。試してみた感じ、
- 省略, 0x01
- スキャン
- 0x02
- PCコピー
- 0x03, 0x04
- フォト
以下、上記の調べ方。
ランチャーが起動するパスをどうやって調べるか?
まずBrother Utilitiesという正規のランチャー。これは普通にスタートメニュー*1にあるし、タスクマネージャでファイルの場所を開くすれば出所はすぐ分かる
"C:\Program Files (x86)\Brother\BrLauncher\BrLauncher.exe"
で、問題のControlCenter 4を起動した状態で同じ事をやると、
"C:\Program Files (x86)\ControlCenter4\BrCcUxSys.exe"が起動していることは分かるのだが、単純にダブルクリックで開けないところが厄介。
ControlCenter内でもモデル選択のドロップダウンがあるのだから、brother機器が複数登録されていたとしたら、最後に使ったモデルでも、昇順で最初でもなんでも良いと思うのだけど……。
タスクマネージャに起動コマンドラインを確認する手立てがあるので、詳細タブで列を増やして見てみる。
これでBrCcUxSysが-BootProcというコマンドラインで起動されたことは分かるものの、そのまま再現してみても起動せず、さらにProcess Explorerを見るとこれはBrCtrlCntrの子プロセスとして起動しているものの、これも直接起動は出来ない。
Parent processは既に終了しているようだったが、同じディレクトリ内にBrCcBoot.exeというバイナリが居るので、これに目を付けてみる。→ で、説明にもあるように、これがエントリポイント。
試しにこれを起動引数を表示する適当な自作バイナリに置き換えてみたところ、上記のように/modelと/OpenTabを引数に取るランチャーであることが判明した。
起動パラメータを調べる適当なバイナリの作り方
これを適当な名前(BrCcBoot.cs等)で保存し、using System; using System.Windows.Forms; public static class BrCcBoot { public static void Main(string[] args) { MessageBox.Show(String.Join(" ", args)); } }コマンドプロンプト等から適当な.NET FrameworkのC# Compilerを使ってコンパイル
> %windir%\Microsoft.NET\Framework64\v4.0.30319\csc.exe BrCcBoot.csこれで、BrCcBoot.exeが出来上がるので、本物とすり替えてBrother Utilitiesアプリからボタンを押すだけでメッセージボックスに実引数/model="DCP-J987N LAN" /OpenTab=0x01"が表示される。
Windows標準のダイアログはCtrl+Cでコピーできるので、メモ帳にでも貼り付けてショートカットを作ると良い。