delphi 隐藏任务栏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 隐藏任务栏相关的知识,希望对你有一定的参考价值。

代码清单如下:
procedure TForm1.Button1Click(Sender: TObject);
var
wndhlde:thandle;
cool:array[0..255] of char;
begin
strpcopy(@cool[0],'shell_traywnd');
wndhlde:=findwindow(@cool[0],nil);
showwindow(wndhlde,sw_hide);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
wndhlde:thandle;
cool:array[0..255] of char;
begin
strpcopy(@cool[0],'shell_traywnd');
wndhlde:=findwindow(@cool[0],nil);
showwindow(wndhlde,sw_restore);
end;
end.
其中的strpcopy(@cool[0],'shell_traywnd');strpcopy的第一个参数为pchar类型,cool本来是字符类型,加上一个@后怎么就可以了,@不是取址吗?还有
为什么要是cool[0],而不直接是cool了,了解的大虾讲下了~

@和[0]同时使用是比较老的Delphi版里的用法。
Delphi2009以后可以直接用@来取PChar的首地址。
另外,你发的这段代码有些累赘,用FindWindowEx就不需要字串进行周转了。
参考技术A 因为PChar是一个指针,它传递的是第一个元素的地址, 他相当于C语言中的char*。所以我们要想将字符数组赋给pchar的话,就要将字符数组第一个元素的地址赋给pchar。所以你代码里就得写成@cool[0]哈~~~~~

隐藏系统任务栏

原文链接:http://blog.csdn.net/flyoxs/article/details/4171137

最简单的方法为:

FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_HIDE);

上面代码确能隐藏任务栏,但是,随便打开一个窗口最大化,原来任务栏的地方仍被空白占据着。调用Win32 API- SystemParametersInfo(SPI_SETWORKAREA),重新设置桌面工作区域,可解决这个问题,代码如下:

void gShowHideTaskBar(BOOL bHide /*=FALSE*/) 
{ 
    CRect rectWorkArea = CRect(0,0,0,0); 
    CRect rectTaskBar = CRect(0,0,0,0); 

    CWnd* pWnd = CWnd::FindWindow(_T("Shell_TrayWnd"), NULL); 

    if( bHide ) 
    { 
        // Code to Hide the System Task Bar 
        SystemParametersInfo(SPI_GETWORKAREA, 
            0, 
            (LPVOID)&rectWorkArea, 
            0); 

        if( pWnd ) 
        { 
            pWnd->GetWindowRect(rectTaskBar); 
            rectWorkArea.bottom += rectTaskBar.Height(); 
            SystemParametersInfo(SPI_SETWORKAREA, 
                0, 
                (LPVOID)&rectWorkArea, 
                0); 

            pWnd->ShowWindow(SW_HIDE); 
        } 
    } 
    else 
    { 
        // Code to Show the System Task Bar 
        SystemParametersInfo(SPI_GETWORKAREA, 
            0, 
            (LPVOID)&rectWorkArea, 
            0); 
        if( pWnd ) 
        { 
            pWnd->GetWindowRect(rectTaskBar); 
            rectWorkArea.bottom -= rectTaskBar.Height(); 
            SystemParametersInfo(SPI_SETWORKAREA, 
                0, 
                (LPVOID)&rectWorkArea, 
                0); 

            pWnd->ShowWindow(SW_SHOW); 
        } 
    } 
}

以上是关于delphi 隐藏任务栏的主要内容,如果未能解决你的问题,请参考以下文章

delphi2007如何让程序不在任务栏中隐藏和显示?

在Delphi 2010 版本中怎样把程序隐藏,不在任务栏处显示?

Delphi 最小化程序到任务栏托盘 增加右键PopMenu

delphi在窗口最小化时不在任务栏

电脑任务栏怎么隐藏

如何隐藏开始菜单栏