前提・実現したいこと
C#でWinFormアプリの開発をしています。
既製品の外部アプリ(exe)を自分が作成しているプログラム内で実行し、
フルスクリーン(Windowsのタスクバーも見えない全画面表示の状態)で表示したいのですが、
方法がわかりません。
■起動したい外部アプリについて
- Webカメラの映像を表示するアプリです。(本題とは関係ありません)
- 実行したい外部アプリ自体に手を加えることはできません。
- 外部アプリ自体の機能でフルスクリーン表示は可能です。
(フルスクリーン表示ボタンがあります。ショートカットキー設定はありません)
発生している問題・エラーメッセージ
外部アプリをフルスクリーン表示する方法がわからない
試したこと
ネットで外部アプリの実行方法を調べて試してみたのですが、実現できていない状態です。
最大化表示(タスクバーが見える全画面表示)での起動ならできたのですが…。
C#
1ProcessStartInfo proc = new ProcessStartInfo(外部アプリアドレス); 2proc.WindowStyle = ProcessWindowStyle.Maximized; 3Process.Start(proc);
追記(頂いた案から試したことなど)
- ハンドル+メッセージでの操作
この方法なら実現可能だと思いますが、起動後の外部アプリ操作で解除されてしまうものへの対応としてはコストが高いため採用保留。
- UI Automation
https://qiita.com/ken_hamada/items/501b164374667319d270
こちらを参考に試してみましたが、起動したい外部アプリでAutomationID及びNameが取得できず、使えませんでした。
Inspectで確認したツリーでは、目的の要素はElementの4階層下に配置されています。
Element及びテスト2のchildの内容は、Inspectで確認した第1,第2階層の要素と一致していました。
c#
1Process proc = Process.Start(外部アプリアドレス); 2Thread.Sleep(5000); //起動待ち 3AutomationElement Element = ui.GetMainFrameElement(proc); 4 5// テスト1 AutomationIdで要素を取得 6AutomationElement find= Element.FindFirst( 7 TreeScope.Element | TreeScope.Descendants, 8 new PropertyCondition(AutomationElement.AutomationIdProperty, "fullscreen")); //find = nullになる 9 10// テスト2 Treeの確認 11AutomationElement child = TreeWalker.RawViewWalker.GetFirstChild(Element); 12AutomationElement descendant = TreeWalker.RawViewWalker.GetFirstChild(child); //descendant=nullになる 13 14
- ShowWindowでタスクバーを非表示にする
期待する動作になりませんでした。
(タスクバーを非表示にはできましたが、タスクバー部分までアプリのウィンドウを表示してほしかった)
補足情報(FW/ツールのバージョンなど)
VisualStudio2017 .NET FrameWork4.6.1
元になるプログラム(自分が作成しているプログラム)のコンセプトとして、「タスクバーを表示させない」となっているため、そこから起動するアプリも可能であれば、少なくとも起動時にはタスクバーを表示させないようにしたいと考えています。
※起動後の外部アプリで解除操作をされたらタスクバー表示されてしまうので、完全ではないのは承知しています。
ですので、設定やメソッドなどで指定ができるようであればご教示いただければと考えています。

回答1件
あなたの回答
tips
プレビュー