使用API​​隐藏程序的标题栏 [英] Hide Title Bar of Program using API

查看:70
本文介绍了使用API​​隐藏程序的标题栏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有可能使用c#和Windows API删除窗口控制台标题栏,如果有的话如何?

Its possible remove a window console title bar using c# and windows api, if yes howto? Please.

推荐答案

这个简单的应用程序会隐藏并显示其所在控制台的标题栏。它将控制台标题更改为暂时找到窗口句柄。然后,它使用ToggleTitleBar使用找到的句柄显示或隐藏。

This simple app hides and shows the title bar of the console that it's in. It changes the console title to a guid momentarily to find the window handle. Afterwards it uses ToggleTitleBar to show or hide using the found handle.

public class Program
{
    public static void ToggleTitleBar(long hwnd, bool showTitle)
    {
        long style = GetWindowLong(hwnd, -16L);
        if (showTitle)
            style |= 0xc00000L;
        else
            style &= -12582913L;
        SetWindowLong(hwnd, -16L, style);
        SetWindowPos(hwnd, 0L, 0L, 0L, 0L, 0L, 0x27L);
    }

    public static void Main()
    {
        Guid guid = Guid.NewGuid();
        string oldTitle = Console.Title;
        Console.Title = guid.ToString();
        int hwnd = FindWindow("ConsoleWindowClass", guid.ToString());
        Console.Title = oldTitle;

        Console.WriteLine("Press enter to hide title");
        Console.ReadLine();
        ToggleTitleBar(hwnd, false);
        Console.WriteLine("Press enter to show title");
        Console.ReadLine();
        ToggleTitleBar(hwnd, true);
        Console.WriteLine("Press enter to exit");
        Console.ReadLine();
    }

    [DllImport("user32", EntryPoint = "GetWindowLongA")]
    public static extern long GetWindowLong(long hwnd, long nIndex);

    [DllImport("user32", EntryPoint = "SetWindowLongA")]
    public static extern long SetWindowLong(long hwnd, long nIndex, long dwNewLong);

    [DllImport("user32")]
    public static extern long SetWindowPos(long hwnd, long hWndInsertAfter, long x, long y, long cx, long cy,
                                           long wFlags);

    [DllImport("User32.dll")]
    public static extern int FindWindow(string lpClassName, string lpWindowName);
}

这篇关于使用API​​隐藏程序的标题栏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆