我的应用程序旨在全屏启动,不惜任何代价,任务栏都不应该对用户可见。对于隐藏在下面的任务栏,ahk脚本将在后台运行以执行所需的操作。
关于AHK脚本,请选择以下链接以获取其描述。
如果"自动隐藏任务栏"脚本不起作用。选择了Windows 7的功能。
因此我采用了以下C#代码来解决应用程序方面的问题。
但在某些情况下,例如在Windows重启后应用程序第一次启动时,showwindow功能无法正常工作,尤其是选择了“自动隐藏”任务栏选项时。
示例代码
[DllImport("user32.dll")]
public static extern int FindWindowEx(int parentHandle, int childAfter, string className, int windowTitle);
[DllImport("user32.dll")]
private static extern int GetDesktopWindow();
[DllImport("user32.dll")]
private static extern int ShowWindow(int hwnd, int command);
protected static int Handle
{
get
{
return (int)FindWindow("Shell_TrayWnd", "");
}
}
protected static int HandleOfStartButton
{
get
{
int handleOfDesktop = GetDesktopWindow();
int handleOfStartButton = FindWindowEx(handleOfDesktop, 0, "button", 0);
return handleOfStartButton;
}
}
public static void HideTaskbar()
{
int Taskbar = ShowWindow(Handle, SW_HIDE);
int StartButton = ShowWindow(HandleOfStartButton, SW_HIDE);
}
private void button1_Click(object sender, EventArgs e)
{
HideTaskbar();
}
脚本 下面的脚本隐藏了任务栏并禁用了某些键的执行。(右侧窗口和左侧窗口按钮和 ctrl + esc )
WinHide,ahk_class Shell_TrayWnd
LWin::Suspend
RWin::Suspend
^Esc::Suspend
我尝试过的其他选项
[DllImport("user32.dll")]
public static extern bool SetWindowPos(
int hWnd, // handle to window
int hWndInsertAfter, // placement-order handle
short X, // horizontal position
short Y, // vertical position
short cx, // width
short cy, // height
uint uFlags // window-positioning options
);
private void button1_Click(object sender, EventArgs e)
{
int hwnd = FindWindow("Shell_TrayWnd", "");
SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_HIDEWINDOW);
}
以上代码改变了功能。工作不正常。
请建议任何方法来处理此方案。
答案 0 :(得分:0)
这是一个AutoHotkey解决方案,用于检查操作系统版本并更改隐藏任务栏设置:
If (A_OSVersion = WIN_7) {
; retrieve Registry Value of AutoHide Taskbar
RegRead, OutputVar, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2, Settings
; If AutoHide Taskbar is On
If (SubStr(OutputVar, 18, 1) == 3) {
ChangeSetting := RegExReplace(OutputVar, (03), "02",, 1, 16)
;ChangeSetting := StrReplace(OutputVar, "3", "2",,1)
RegWrite, REG_BINARY, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2, Settings, % ChangeSetting
; The Code below Automatically applies Registry settings (and on Win 8.1 Explorer.exe is also restarted immediatley
; Alternatively you could use Shutdown Command to Reboot the system but this is much faster...
Process, Close, explorer.exe
}
}
如果您只想测试一下,请参考以下代码:
Gui, Add, Button, x1 y1 w110 h30 gButton1, Change AutoHide
Gui, Show,, New GUI Window
Return
Button1:
RegRead, OutputVar, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2, Settings
ChangeSetting := ((SubStr(OutputVar, 18, 1) == 3)
? RegExReplace(OutputVar, (03), "02",, 1, 16)
: RegExReplace(OutputVar, (02), "03",, 1, 16))
RegWrite, REG_BINARY, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2, Settings, % ChangeSetting
Process, Close, explorer.exe
Return
GuiClose:
ExitApp
答案 1 :(得分:0)
人们仍然可以通过按键盘上的Windows键或其他快捷方式来访问任务栏。您所做的只是破解计算机的注册表项以破坏用户的自定义快捷方式。
您真正想要做的是创建一个全屏最大化窗口(类似于您在最大化YouTube视频时看到的内容)。
设置窗口的属性,以便: 1. FormBorderStyle = None, 2.在表单加载时,获取屏幕并将窗口大小调整为该大小。