前回のあらすじ
とりあえず諦めて動けばいいや精神を発動させた ⇒ 前回の日本語入りエクセルファイルを開く
この時は人生に疲れていたので当たり前のことが思い浮かばなかった。
そんな私にセヤナーが降臨した。
「エスケープ ヤデー」
エスケープ方法
Appクラス詳細
公式サンプルだと以下
myApp = App(r'"c:\folder with spaces\someApp.exe"')
myApp = App('"c:\folder with spaces\someApp.exe"')
myApp = App(""c:\folder with spaces\someApp.exe"")
本来の目的
エクセルのpathと引数を渡す。
ただし、日本語ファイル名入りpath
でもその理想までは現状できていない。
ファイルの関連付けなら何とか起動した
ソースコード(あらかじめ C:\集計\本日の集計.xlsx に白紙でもいいのでファイル用意)
TARGET_XLS_PATH = r'"C:\集計\本日の集計.xlsx"'
file_path = unicode(TARGET_XLS_PATH, "utf-8")
proc = App(file_path)
proc.open()
uprint(proc.getName())
uprint(proc.getWindow())
print proc.isRunning(),proc.getPID(), proc.hasWindow()
uprintで出しているのは日本語入りなのでという理由
結果
getName()の結果
本日の集計.xlsx
getWindow()の結果
本日の集計.xlsx - Excel
isRunning()の結果
True
getPID()の結果
22232
hasWindow()の結果
True
なぜAppクラスにこだわるのか?
アプリをいろいろ切り替えて使えるから
subprocessを使うと出来ないこと
プロセスはとりあえず立ち上げるけどウィンドウを切り替えたりが出来ない。
それだと複数のアプリケーションを使うことが難しくなってしまう。
一般的なPythonでウィンドウ操作するにはpywin32やらwin32guiがあれば出来るのですが、
SikuliXはJava上で動くJythonなのでpywin32は無いです。
その簡単にできないことがAppクラスは出来るようになっているので試行錯誤中です。
今のところ引数を与えてもエラーも出さず、sikuliX.jarをエクスプローラで開くだけになってしまっている。
setUsingを使っても変わらないので悩ましい。