c#控制任务栏高度

RT做一个可以控制任务栏高度及其他相关属性的程序我要的是控制高度哈~~请看清题目测试后再回答谢谢哈。比如任务栏现在高度30,我控制它编程20.提供正确的话我加分... RT 做一个可以控制任务栏高度 及其他相关属性的程序
我要的是控制高度哈~~ 请看清题目测试后再回答谢谢哈。比如任务栏现在高度30,我控制它编程20.提供正确的话我加分
展开
 我来答
老猿小郭
2009-03-15 · TA获得超过2763个赞
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:578万
展开全部
抱歉,无能为力,试过不少方法,任务栏确实是一个窗体,但是因为他的特殊性,改变一般窗体大小的方法对其并不适用,提供一些失败的例子,希望对你有些帮助。

public int i_Height = 0;
public int i_Weight = 0;
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}

[DllImport("user32.dll",EntryPoint="GetWindowRect")]
private static extern bool GetWindowRect( IntPtr hWnd, ref RECT lpRect );

private void btn_GetSize_Click(object sender, System.EventArgs e)
{
IntPtr hWnd = FindWindow("Shell_TrayWnd", 0);
RECT rc = new RECT();
try
{
GetWindowRect(hWnd,ref rc);
i_Height = rc.Bottom - rc.Top;
i_Weight = rc.Right - rc.Left;
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}

MessageBox.Show("Height = " + i_Height.ToString() + " Weight = " + i_Weight.ToString());
}

到这里是获取任务栏的尺寸,没有问题,证明对任务栏信息的获取和一般窗体一样。

[DllImport("gdi32.dll",EntryPoint="SetWindowExtEx")]
private static extern bool SetWindowExtEx(
IntPtr hdc, // handle to device context
int nXExtent, // new horizontal window extent
int nYExtent, // new vertical window extent
string lpSize // original window extent
);

[DllImport("user32.dll")]
private static extern bool SetWindowPos(
IntPtr hWnd, // handle to window
int hWndInsertAfter, // placement-order handle
int X, // horizontal position
int Y, // vertical position
int cx, // width
int cy, // height
uint uFlags // window-positioning options
);

private void btn_SetSize_Click(object sender, System.EventArgs e)
{
try
{
IntPtr hWnd = FindWindow("Shell_TrayWnd",0);
SetWindowPos(hWnd,0,0,0,i_Weight,94,0x0001);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这里是设置任务栏的尺寸,但是不起作用,SetWindowPos()这个函数对一般的窗体是完全可行的,SetWindowPos()的第二个参数(0代表置于顶层,-1代表直到关闭为止置于顶层)

//--------------------------------------2009-3-14

这里先要理解两个概念:
第一、任务栏之类是由系统控制的,要改变他们的属性,需要调用系统API;
第二、在Windows下,不管任何东西都是窗口,你要让这个窗口做什么改变,要做的只是发送相应的命令到指定窗口,剩下的交由系统完成。

理解了这些,我们来写一个Demo,首先要调用API需要引用相应的命名空间
using System.Runtime.InteropServices;

然后声明API
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string strClassName, int nptWindowName);

[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);

最后是调用函数
private void btn_Hidden_Click(object sender, System.EventArgs e)
{
ShowWindow(FindWindow("Shell_TrayWnd", 0), 1);
}

ShowWindow是对窗口的显示隐藏做操作,他需要窗口的句柄以及操作命令,窗口的句柄通过FindWindow()这个函数获得,命令为1(代表隐藏,0则代表显示)。

运行这个程序,当点击Button时,任务栏隐藏,其他的操作请参看相应API,这里就不一一列举了。
F__Horizon
推荐于2016-12-02 · TA获得超过1.4万个赞
知道小有建树答主
回答量:1929
采纳率:83%
帮助的人:174万
展开全部
试过不少方法,任务栏确实是一个窗体,但是因为他的特殊性,改变一般窗体大小的方法对其并不适用,提供一些失败的例子,希望对你有些帮助。

public int i_Height = 0;
public int i_Weight = 0;
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}

[DllImport("user32.dll",EntryPoint="GetWindowRect")]
private static extern bool GetWindowRect( IntPtr hWnd, ref RECT lpRect );

private void btn_GetSize_Click(object sender, System.EventArgs e)
{
IntPtr hWnd = FindWindow("Shell_TrayWnd", 0);
RECT rc = new RECT();
try
{
GetWindowRect(hWnd,ref rc);
i_Height = rc.Bottom - rc.Top;
i_Weight = rc.Right - rc.Left;
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}

MessageBox.Show("Height = " + i_Height.ToString() + " Weight = " + i_Weight.ToString());
}

到这里是获取任务栏的尺寸,没有问题,证明对任务栏信息的获取和一般窗体一样。

[DllImport("gdi32.dll",EntryPoint="SetWindowExtEx")]
private static extern bool SetWindowExtEx(
IntPtr hdc, // handle to device context
int nXExtent, // new horizontal window extent
int nYExtent, // new vertical window extent
string lpSize // original window extent
);

[DllImport("user32.dll")]
private static extern bool SetWindowPos(
IntPtr hWnd, // handle to window
int hWndInsertAfter, // placement-order handle
int X, // horizontal position
int Y, // vertical position
int cx, // width
int cy, // height
uint uFlags // window-positioning options
);

private void btn_SetSize_Click(object sender, System.EventArgs e)
{
try
{
IntPtr hWnd = FindWindow("Shell_TrayWnd",0);
SetWindowPos(hWnd,0,0,0,i_Weight,94,0x0001);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这里是设置任务栏的尺寸,但是不起作用,SetWindowPos()这个函数对一般的窗体是完全可行的,SetWindowPos()的第二个参数(0代表置于顶层,-1代表直到关闭为止置于顶层)

//--------------------------------------2009-3-14

这里先要理解两个概念:
第一、任务栏之类是由系统控制的,要改变他们的属性,需要调用系统API;
第二、在Windows下,不管任何东西都是窗口,你要让这个窗口做什么改变,要做的只是发送相应的命令到指定窗口,剩下的交由系统完成。

理解了这些,我们来写一个Demo,首先要调用API需要引用相应的命名空间
using System.Runtime.InteropServices;

然后声明API
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string strClassName, int nptWindowName);

[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);

最后是调用函数
private void btn_Hidden_Click(object sender, System.EventArgs e)
{
ShowWindow(FindWindow("Shell_TrayWnd", 0), 1);
}

ShowWindow是对窗口的显示隐藏做操作,他需要窗口的句柄以及操作命令,窗口的句柄通过FindWindow()这个函数获得,命令为1(代表隐藏,0则代表显示)。

运行这个程序,当点击Button时,任务栏隐藏,其他的操作请参看相应API,这里就不一一列举了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-03-13
展开全部
http://zhidao.baidu.com/question/89470628.html
我的答案怎样实现任务栏隐藏后完全全屏的代码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乜帅红0Q
2009-03-13 · TA获得超过906个赞
知道小有建树答主
回答量:693
采纳率:100%
帮助的人:470万
展开全部
http://zhidao.baidu.com/question/89470628.html
我的答案怎样实现任务栏隐藏后完全全屏的代码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式