画面の状態(最大/最小)で処理を分岐させる方法

お世話になります。

特定のウィンドウ(Excelなど)の画面の状態を取得し、処理を分岐させたく思っています。
例えば、「指定の画面が最小化されている場合は…」といった分岐です。

イメージとしては、WindowStateを用いて
If [指定のウィンドウ].WindowState = FormWindowState.Minimized
のように実装したいのですが、UiPath.Core.Window型では上手くいきません。

何か良い方法はありますでしょうか。

@nittobo5 さん

UiPath.Core.Window型を取得してから、
それをElementインプットとして、
「Get Attribute」などのアクティビティより取得した
「aastate」、「visibility」或いは「position」の値で、
ウィンドウの画面状態を判断できると思います。

@wusiyangjia さん
回答ありがとうございます。
早速試してみましたが、
「aastate」及び「visibility」で判別できそうでした!
本当に助かりました!

こんにちは

すでに解決済みのようですが、
WndStyles属性で最大化/アイコン化の判断が直接できると思います。

一応以下の定数に沿って、現状の値を返してくれる挙動のようですので
https://docs.microsoft.com/en-us/windows/desktop/winmsg/window-styles

WS_MINIMIZE 0x20000000L
WS_MAXIMIZE 0x01000000L
なので

GetAttributeでWndStylesの値をとってきて

最大化有無なら
(WndStyles.ToInt64(nothing) And &H01000000)<>0

アイコン化有無なら
(WndStyles.ToInt64(nothing) And &H20000000)<>0

で判断できるかと思います。

@Yoichi さん
こんにちは、ご回答ありがとうございます。

大変勉強になります。まさに私が求めていた完璧な判定です。
この属性での判断であれば最も汎用的に判断できそうなので、
こちらの案を採用させていただこうかと思います!

皆様本当にありがとうございました!

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.