
前略
・C#の初心者です。
・先日このMSN相談箱でtsukasa-12rさんからタスクバーを非表示する下記のプログラムをおしえていだきました。 このプログラムでウィンドウフォームを固定しようとして this.FormBorderStyle = FormBorderStyle.FixedSingle; のコードを1行だけ追加しましたがウィンドウフォームを固定できませんでした。
タスクバーを隠して かつウィンドウフォームを固定したいのですが tsukasa-12rさん以外の方でもかまいませんのでどなたか教えてください。
以上、よろしくお願いします
//-----------------------------------
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, IntPtr lpWindowName);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int SW_HIDE = 0;
private const int SW_NORMAL = 1;
[StructLayout(LayoutKind.Sequential)]
struct APPBARDATA
{
public int cbSize;
public IntPtr hwnd;
public uint uCallbackMessage;
public uint uEdge;
public Rectangle rc;
public int lParam;
};
private const int ABM_SETSTATE = 10;
private const int ABS_AUTOHIDE = 1;
private const int ABS_ALWAYSONTOP = 2;
[DllImport("shell32.dll")]
static extern int SHAppBarMessage(int msg, ref APPBARDATA pbd );
public Form1()
{
InitializeComponent();
// 「タスクバーを自動的に隠す」
APPBARDATA abd = new APPBARDATA();
abd.cbSize = Marshal.SizeOf(abd);
abd.lParam = ABS_AUTOHIDE;
SHAppBarMessage(ABM_SETSTATE, ref abd);
// タスクバーを非表示
ShowWindow(FindWindow("Shell_TrayWnd", IntPtr.Zero), SW_HIDE);
// コントロールボックスを非表示
this.ControlBox = false;
// 最大表示
this.WindowState = FormWindowState.Maximized;
this.FormBorderStyle = FormBorderStyle.FixedSingle;// ← ウィンドウサイズを固定しようとして追加 → 固定できず
}
private void button1_Click(object sender, EventArgs e)
{
// タスクバーを常に表示
APPBARDATA abd = new APPBARDATA();
abd.cbSize = Marshal.SizeOf(abd);
abd.lParam = ABS_ALWAYSONTOP;
SHAppBarMessage(ABM_SETSTATE, ref abd);
// タスクバーを表示
ShowWindow(FindWindow("Shell_TrayWnd", IntPtr.Zero), SW_NORMAL);
// フォームを閉じる
this.Close();
}
}
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
位置とサイズを固定できたとして、Alt + Tab でアプリケーションを切り替えたり、デスクトップに切り替えてそこからアプリケーションを起動できたりするのは構わないのですか?
「要求仕様」という言葉は仕事で使うのは別に問題ないと思いますが、こういった場では少し感じが悪いように思います。(受け取り方によっては、回答してくれる人に対して「こういう仕様で作りなさい」という要求を突きつけているように取れてしまう。)
No.1
- 回答日時:
とりあえず、
private const int WM_NCLBUTTONDBLCLK = 0x00A3;
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_NCLBUTTONDBLCLK:
break;
default:
base.WndProc(ref m);
break;
}
}
を追加すると、ウィンドウタイトルをダブルクリックしても元のサイズに戻らなくなります。
しかし、Windows7 のエアロスナップが有効の場合、ウィンドウタイトルをドラッグすると元のサイズに戻ってしまいます。
レジストリの
HKEY_CURRENT_USER\Control Panel\Desktop\DockMoving
では再起動、もしくはログオフしなければ設定の変更がシステムに反映されませんが、コントロールパネルでは再起動、ログオフせずに反映できているので、何か方法があるのかもしれません。
参考URL:http://weekly.ascii.jp/elem/000/000/022/22691/
前略
・返答ありがとうございます。返答大変うれしく思っております。
・コード追加して、ウィンドウタイトルをダブルクリックしても元のサイズに戻らなくなることを確認しました。ありがとうございます。でもウィンドウタイトルをドラッグして移動できてしまいます。移動できないようにしたいのです。
私の要求仕様が明確でなかったようです。もう一度整理して箇条書きにしたいとおもいます。
<要求仕様>
下記のウィンドウフォームをC#でつくりたい。
(1) タスクバーを表示しない。
(2) タイトルバーは表示する。
(3) ウィンドウフォームは最大化され、モニター画面内を移動できないこと。
<目的>
パソコンの拡張スロットの拡張ボード( A/D、D/Aボード)をつかったソフトを作成中です。
作成中のソフトが動作中(アクチュエータ動作中)は他のアプリケーションソフトを起動できないようにしたいので上記のウィンドウフォームつくろうとしています。
尚、this.FormBorderStyle = FormBorderStyle.None;を追加するとタイトルバーが消えて<目的>は達成できるのですが メニューバー等を追加した時見栄えがよくないのでタイトルバーを追加したいと思っている次第です。
<質問>
メニューバー付ウィンドウフォームが最大化され、モニター画面を移動できないようにする方法を教えてください。
以上、よろしくお願いします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でキーイベントが発生しない...
-
C# DataGridView列カスタマイズ
-
イベント処理について(文字列を...
-
C#でのWNetAddConnection3の使...
-
unityでのC++エラーの原因がわ...
-
C#で、あるクラスのメンバーす...
-
C# WinForm のDataGridView Cel...
-
決められて時間が経過するとア...
-
マルチスレッドプログラムから...
-
C#単体テストで、UnitTestの使...
-
JTable で複数行の編集
-
大量のデータを読み込んで表示...
-
オブジェクトの中のプロパティ...
-
ORA-01858: 数値を指定する箇所...
-
JSPやサーブレットでSystem.out...
-
System.err. printlnとSystem.o...
-
C#で動的配列Listの中身をListB...
-
IF関数でEmpty値を設定する方法。
-
変数を動的に利用するには?
-
C#の質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
C#で、あるクラスのメンバーす...
-
ボタンの複数割り当てについて
-
コンボボックスを使う時の警告
-
C# DataGridView列カスタマイズ
-
Junitテストでvoid戻り値メッソ...
-
C# 矢印キーの取得
-
C#でのWNetAddConnection3の使...
-
C# WinForm のDataGridView Cel...
-
C# visibleプロパティをfalseに...
-
GOF本のStrategyのJava版での質...
-
以下のコードのどこが問題なの...
-
イメージボタンを作成したいの...
-
Androidでこのエラーを解決した...
-
C#で、定数をフラグ(if文)に...
-
Javaでウィンドウ作成について
-
C# 親フォームで指定した値を...
-
JWindow、JFrameでモーダル化の...
-
javaの同期について
-
javaアプレット repaintのタイ...
おすすめ情報