質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

4回答

2733閲覧

画面上の一部を自作アプリにのみ占有させたい(その場所からほかのウインドウを排除したい)

ElecDove

総合スコア254

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

1クリップ

投稿2016/12/05 03:11

編集2016/12/05 03:11

お世話になります。

最近タブレットPC(surfaceのような)を購入しました。
そこで、画面上部に常にファンクションキーのようなものを表示したいと思い、C#で作れないかと思いご相談させていただきました。

画面上部の数十pxに常にバーを表示し、そこにEsc,F1~F12,PrtScなどのソフトウェアキーを表示したいと思います。
そして、この領域にはほかのウインドウが入ってこないようにしたいです。その場所はあたかも画面外であるかのような動作がよいのです。
アプリケーションのメニューバーや閉じるボタンなどがっ隠れてしまうと辛いので(汗

ボタンを押したときにアクティブなウインドウにキーを送るにはSendKeysでよいでしょうか。

C#のスキルは、簡単なフォームアプリケーションが作れる程度です(過去質問のタイトルを見ていただければおおよそわかっていただけると思います)
ある程度サンプルコードがあれば自分で何とかできるとは思います。


質問内容をまとめると
・キーを送るにはSendKeysでよいか
・画面上のある特定の領域を自作アプリにのみ占有させるにはどうすればよいか

よろしくお願いいたします。
なお、すでに存在する類似アプリケーションのご提示も、いただけますと幸いです。

OS:Windows10 Pro
開発環境:VisualStudioCommunity
開発言語:C#
プログラミング経験:8年(趣味)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TAKAYASU

2016/12/05 03:31

ウィンドウが入ってこないというのは、画面上部のバーと他のウィンドウがぶつかりあう状態のことでしょうか?
ElecDove

2016/12/05 13:01

ぶつかり合うという、表現でよいのかわかりませんが、例えばflrefoxを最大化した時に自作アプリの領域を避けて最大化してくれるイメージです。自作アプリは常に画面上部に存在する前提です
guest

回答4

0

AppBar にすれば、タスクバーと同じような感じで画面の一部を占有(というか画面端にドッキング)できますよ。

投稿2017/06/14 08:10

hidori

総合スコア402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ElecDove

2017/06/14 15:18

回答ありがとうございます 調べてみたところ,まさに実現したいことと思われます
guest

0

Windows メッセージの WM_SIZE をグローバルフックして最大化時の位置・サイズを強引に置き換えてやればできそうな挙動ですが、あんまり行儀がよいとはいえませんね。
管理者権限必要ですし、DLL 作らなきゃならないし、システム全体に影響しますから危険と言えば危険ですし。

投稿2016/12/07 04:02

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

他のアプリケーションの表示領域を制限するようなことは確かできなかったと思いますね…

上手く×ボタンの位置にかぶらないように配置したり、タスクバーにカスタムツールバーを付けてFunctionキーを表示する、とかじゃダメですかね…?

投稿2016/12/07 03:49

編集2016/12/07 03:55
haru666

総合スコア1591

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ElecDove

2017/06/14 04:54

お礼が大変遅くなり申し訳ありません やはり通常の作り方では難しいようで,結局諦めることになりました
guest

0

WindowsForm ならば、TopMost プロパティを Trueにすれば常に最前面に表示されます。

投稿2016/12/05 05:59

mugicya

総合スコア1046

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ElecDove

2016/12/05 12:59

回答ありがとうございます。 TopMostでは自作アプリのウインドウの後ろに他のアプリが存在できてしまいます。 しかしそれでは、後ろにある部分の操作ができないのでダメなのです
ElecDove

2016/12/05 13:05

情報の追加の部分にも書きましたが、あるアプリ(ブラウザや、その他いろいろなアプリ)を最大化した時に、自作アプリの部分は避けて最大化してほしいのです ソフトウェアキーボードですが、まるでハードウェアキーボードかのような、、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問