RPAメモ(WinAppDriver/win32guiなど)

RPAメモ(WinAppDriver/win32guiなど)

WinAppDriverのdriverを取得

スプラッシュスクリーンのあるアプリだと例外投げて死んでしまうため、デスクトップセッションでdriverをゲットしてからアプリウィンドウにアクセスするのが吉。

もちろんスプラッシュスクリーンがなければアプリ起動と同時にdriverゲットしてもいい。その場合は↑でRootをアプリの絶対パスにする。

アプリを起動する

ウィンドウハンドルを取得する

  • FindWinow/FindWinowExのクラス名・ウィンドウ名はどちらか一方はNoneでOK(ほかのウィンドウと被りがなければ)
  • FindWinowExの第一引数の親ウィンドウのハンドルは必須。
  • get_attributeメソッドの戻り値は文字列なのでintにキャストしてから使う
  • ウィンドウが見つからないと0を返す。

ウィンドウの座標取得

トップレベルウィンドウの座標を取得すると、実際よりずれていることが多々ある。その場合、下のレベルのウィンドウの座標を取得するとぴったり合うことがよくある。

コンテキストメニューを出す

バッチファイルから起動する

には以下のようなバッチファイル(.bat)をプログラムとおなじフォルダにつくる。

orchis(ランチャソフト)からクリックで起動する場合は、項目の設定で作業フォルダを「参照先ファイルと同じフォルダ」にするのを忘れないようにする。

バッチファイルの3行目でプログラムを絶対パスで指定してもいいが、プログラム中からほかのファイルにアクセスしている場合、それらも絶対パスにしなければならないため面倒。

ウィンドウ名が変化する場合

たとえばタスクバーの通知領域の各アプリはボタンになっているけど、状態によってNameが変化することがある。その場合はまず通知領域のボタンを全部取得してから、条件にマッチするボタンを見つける。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする