質問編集履歴

3

テストコードを追記

2022/09/24 04:16

投稿

n_haraguchi
n_haraguchi

スコア19

test CHANGED
File without changes
test CHANGED
@@ -28,8 +28,24 @@
28
28
  - UI Automation
29
29
   https://qiita.com/ken_hamada/items/501b164374667319d270
30
30
   こちらを参考に試してみましたが、起動したい外部アプリでAutomationID及びNameが取得できず、使えませんでした。
31
+  Inspectで確認したツリーでは、目的の要素はElementの4階層下に配置されています。
32
+  Element及びテスト2のchildの内容は、Inspectで確認した第1,第2階層の要素と一致していました。
33
+ ```c#
34
+ Process proc = Process.Start(外部アプリアドレス);
35
+ Thread.Sleep(5000); //起動待ち
36
+ AutomationElement Element = ui.GetMainFrameElement(proc);
37
+
38
+ // テスト1 AutomationIdで要素を取得
39
+ AutomationElement find= Element.FindFirst(
40
+ TreeScope.Element | TreeScope.Descendants,
41
+ new PropertyCondition(AutomationElement.AutomationIdProperty, "fullscreen")); //find = nullになる
42
+
43
+ // テスト2 Treeの確認
44
+ AutomationElement child = TreeWalker.RawViewWalker.GetFirstChild(Element);
31
-  AutomationID、Nameの確認は、Inspectと上記サイトで紹介されていたツール(https://github.com/khamada611/check_automationID )を使用し、どちらでも取得できず。
45
+ AutomationElement descendant = TreeWalker.RawViewWalker.GetFirstChild(child); //descendant=nullになる
46
+
47
+
32
-  Windows標準の電卓アプリで試すと取得、Automation操作できるので、自分の使い方が間違っているわけではないと思うのですが…。
48
+ ```
33
49
  - ShowWindowでタスクバーを非表示にする
34
50
   期待する動作になりませんでした。
35
51
   (タスクバーを非表示にはできましたが、タスクバー部分までアプリのウィンドウを表示してほしかった)

2

頂いた案から試したことなどを追記

2022/09/23 01:57

投稿

n_haraguchi
n_haraguchi

スコア19

test CHANGED
File without changes
test CHANGED
@@ -22,6 +22,18 @@
22
22
  Process.Start(proc);
23
23
  ```
24
24
 
25
+ ##### 追記(頂いた案から試したことなど)
26
+ - ハンドル+メッセージでの操作
27
+  この方法なら実現可能だと思いますが、起動後の外部アプリ操作で解除されてしまうものへの対応としてはコストが高いため採用保留。
28
+ - UI Automation
29
+  https://qiita.com/ken_hamada/items/501b164374667319d270
30
+  こちらを参考に試してみましたが、起動したい外部アプリでAutomationID及びNameが取得できず、使えませんでした。
31
+  AutomationID、Nameの確認は、Inspectと上記サイトで紹介されていたツール(https://github.com/khamada611/check_automationID )を使用し、どちらでも取得できず。
32
+  Windows標準の電卓アプリで試すと取得、Automation操作できるので、自分の使い方が間違っているわけではないと思うのですが…。
33
+ - ShowWindowでタスクバーを非表示にする
34
+  期待する動作になりませんでした。
35
+  (タスクバーを非表示にはできましたが、タスクバー部分までアプリのウィンドウを表示してほしかった)
36
+
25
37
  ### 補足情報(FW/ツールのバージョンなど)
26
38
  VisualStudio2017 .NET FrameWork4.6.1
27
39
 

1

質問欄での回答を追記しました

2022/09/21 08:16

投稿

n_haraguchi
n_haraguchi

スコア19

test CHANGED
File without changes
test CHANGED
@@ -5,6 +5,7 @@
5
5
  方法がわかりません。
6
6
 
7
7
  ■起動したい外部アプリについて
8
+ - Webカメラの映像を表示するアプリです。(本題とは関係ありません)
8
9
  - 実行したい外部アプリ自体に手を加えることはできません。
9
10
  - 外部アプリ自体の機能でフルスクリーン表示は可能です。
10
11
  (フルスクリーン表示ボタンがあります。ショートカットキー設定はありません)
@@ -15,7 +16,15 @@
15
16
  ### 試したこと
16
17
  ネットで外部アプリの実行方法を調べて試してみたのですが、実現できていない状態です。
17
18
  最大化表示(タスクバーが見える全画面表示)での起動ならできたのですが…。
19
+ ```C#
20
+ ProcessStartInfo proc = new ProcessStartInfo(外部アプリアドレス);
21
+ proc.WindowStyle = ProcessWindowStyle.Maximized;
22
+ Process.Start(proc);
23
+ ```
18
24
 
19
25
  ### 補足情報(FW/ツールのバージョンなど)
20
26
  VisualStudio2017 .NET FrameWork4.6.1
21
27
 
28
+ 元になるプログラム(自分が作成しているプログラム)のコンセプトとして、「タスクバーを表示させない」となっているため、そこから起動するアプリも可能であれば、少なくとも起動時にはタスクバーを表示させないようにしたいと考えています。
29
+ ※起動後の外部アプリで解除操作をされたらタスクバー表示されてしまうので、完全ではないのは承知しています。
30
+  ですので、設定やメソッドなどで指定ができるようであればご教示いただければと考えています。