質問編集履歴
3
テストコードを追記
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
|
-
|
45
|
+
AutomationElement descendant = TreeWalker.RawViewWalker.GetFirstChild(child); //descendant=nullになる
|
46
|
+
|
47
|
+
|
32
|
-
|
48
|
+
```
|
33
49
|
- ShowWindowでタスクバーを非表示にする
|
34
50
|
期待する動作になりませんでした。
|
35
51
|
(タスクバーを非表示にはできましたが、タスクバー部分までアプリのウィンドウを表示してほしかった)
|
2
頂いた案から試したことなどを追記
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
質問欄での回答を追記しました
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
|
+
ですので、設定やメソッドなどで指定ができるようであればご教示いただければと考えています。
|