1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SikuliX 1.1.4 日本語PATH入りエクセルファイルをSikuliX関数で開きたいのに・・・

Last updated at Posted at 2019-08-02

前回のあらすじ

とりあえず諦めて動けばいいや精神を発動させた ⇒ 前回の日本語入りエクセルファイルを開く

この時は人生に疲れていたので当たり前のことが思い浮かばなかった。
そんな私にセヤナーが降臨した。
「エスケープ ヤデー」

エスケープ方法

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を使っても変わらないので悩ましい。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?