VC怎样隐藏控制台窗口
vs工程运行时隐藏窗口方法

vs工程运行时隐藏窗口方法在Visual Studio中,当我们运行一个程序时,有时候我们希望程序在后台运行,而不显示窗口。
这在一些需要静默运行的场景下非常有用,比如后台任务或者系统服务。
下面我将从多个角度来介绍在Visual Studio中实现隐藏窗口的方法。
1. 使用Windows Forms应用程序,如果你的程序是基于Windows Forms的,你可以在Main方法中设置Application.Run时传入一个隐藏的窗体,这样程序就会在后台运行而不显示窗口。
csharp.Application.Run(new HiddenForm());2. 使用Console应用程序,对于控制台应用程序,你可以在Main方法中调用Win32 API来隐藏控制台窗口。
csharp.class Program.{。
[DllImport("kernel32.dll")]static extern IntPtr GetConsoleWindow();[DllImport("user32.dll")]static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);const int SW_HIDE = 0;static void Main()。
{。
IntPtr hWnd = GetConsoleWindow();if (hWnd != IntPtr.Zero)。
{。
ShowWindow(hWnd, SW_HIDE);}。
// 其他代码。
}。
}。
3. 使用WPF应用程序,对于基于WPF的应用程序,你可以在App.xaml.cs中重写OnStartup方法,在启动时隐藏主窗口。
csharp.protected override void OnStartup(StartupEventArgs e)。
{。
base.OnStartup(e);MainWindow mainWindow = new MainWindow();mainWindow.Hide();// 其他代码。
C#隐藏窗体

C#隐藏窗体在讲截图之前,先看看怎么隐藏窗体,在winform中,隐藏窗体也许很简单,是的,直接调⽤hide()⽅法就可以隐藏呢!但是有时有这样的需求,⽐如你在窗体上布局了菜单,然后在隐藏窗体时你希望⼜可以调⽤,这时你就可以采⽤另外⼀种⽅式呢! private void Init(){SetStyle(erPaint|ControlStyles.AllPaintingInWmPaint|ControlStyles.OptimizedDoubleBuffer,true);TopMost = true;ShowInTaskbar = false;FormBorderStyle = FormBorderStyle.None;Bounds = Screen.GetBounds(this);BackgroundImage = GetDestopImage();}private Image GetDestopImage(){Rectangle rect = Screen.GetBounds(this);Bitmap bmp = new Bitmap(rect.Width,rect.Height,PixelFormat.Format32bppArgb);Graphics g = Graphics.FromImage(bmp);IntPtr gHdc = g.GetHdc();IntPtr deskHandle = NativeMethods.GetDesktopWindow();IntPtr dHdc = NativeMethods.GetDC(deskHandle);NativeMethods.BitBlt(gHdc,0,0,Width,Height,dHdc,0,0,NativeMethods.TernaryRasterOperations.SRCCOPY);NativeMethods.ReleaseDC(deskHandle,dHdc);g.ReleaseHdc(gHdc);return bmp;}关键是这段:internal class NativeMethods{public const int WS_EX_TRANSPARENT = 0x00000020;[DllImport("user32.dll")]public static extern bool ClipCursor(ref RECT lpRect);[DllImport("user32.dll")]public static extern IntPtr GetDesktopWindow();[DllImport("user32.dll")]public static extern IntPtr GetDC(IntPtr ptr);[DllImport("user32.dll")]public static extern int ReleaseDC(IntPtr hwnd, IntPtr hDC);[DllImport("gdi32.dll")]public static extern bool BitBlt(IntPtr hObject, int nXDest, int nYDest, int nWidth,int nHeight, IntPtr hObjSource, int nXSrc, int nYSrc,TernaryRasterOperations dwRop);[DllImport("kernel32.dll", CharSet = CharSet.Auto)]public static extern IntPtr LoadLibrary(string lpFileName);[StructLayout(LayoutKind.Sequential)]public struct RECT{public int Left;public int Top;public int Right;public int Bottom;public RECT(int left, int top, int right, int bottom){Left = left;Top = top;Right = right;Bottom = bottom;}public RECT(Rectangle rect){Left = rect.Left;Top = rect.Top;Right = rect.Right;Bottom = rect.Bottom;}public Rectangle Rect{get{return new Rectangle(Left,Top,Right - Left,Bottom - Top);}}public Size Size{get{return new Size(Right - Left, Bottom - Top);}}public static RECT FromXYWH(int x, int y, int width, int height){return new RECT(x,y,x + width,y + height);}public static RECT FromRectangle(Rectangle rect){return new RECT(rect.Left,rect.Top,rect.Right,rect.Bottom);}}public enum TernaryRasterOperations{SRCCOPY = 0x00CC0020, /* dest = source*/SRCPAINT = 0x00EE0086, /* dest = source OR dest*/SRCAND = 0x008800C6, /* dest = source AND dest*/SRCINVERT = 0x00660046, /* dest = source XOR dest*/SRCERASE = 0x00440328, /* dest = source AND (NOT dest )*/NOTSRCCOPY = 0x00330008, /* dest = (NOT source)*/NOTSRCERASE = 0x001100A6, /* dest = (NOT src) AND (NOT dest) */ MERGECOPY = 0x00C000CA, /* dest = (source AND pattern)*/MERGEPAINT = 0x00BB0226, /* dest = (NOT source) OR dest*/PATCOPY = 0x00F00021, /* dest = pattern*/PATPAINT = 0x00FB0A09, /* dest = DPSnoo*/PATINVERT = 0x005A0049, /* dest = pattern XOR dest*/DSTINVERT = 0x00550009, /* dest = (NOT dest)*/BLACKNESS = 0x00000042, /* dest = BLACK*/WHITENESS = 0x00FF0062, /* dest = WHITE*/}}。
C#控制台隐藏窗体

RemoveMenu(closeMenu, SC_CLOSE, 0x0);
}
public static bool IsExistsConsole(string title)
{
Console.Title = "Test2";
ConsoleWin32Helper.ShowNotifyIcon();
ConsoleWin32Helper.DisableCloseButton(Console.Title);
}
static void _NotifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
Console.WriteLine("托盘被双击.");
int a = new Random().Next(5);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Threading;
using System.Drawing;
ParenthWnd = FindWindow(null, "Test2");
int normalState = 0;//窗口状态(隐藏)
ShowWindow(ParenthWnd, normalState);
}
}
return true;
隐藏命令窗口的操作方法是

隐藏命令窗口的操作方法是
在Windows操作系统中,有几种方法可以隐藏命令窗口:
1. 编写一个批处理文件并运行:创建一个批处理文件(后缀名为 .bat 或
者 .cmd),在其中执行你想要运行的命令。
然后,双击运行这个批处理文件即可隐藏命令窗口。
2. 使用VBScript 或者PowerShell 脚本:创建一个VBScript 或者PowerShell 脚本文件(后缀名为 .vbs 或者 .ps1),在其中执行你想要运行的命令。
然后,双击运行这个脚本文件即可隐藏命令窗口。
3. 创建一个快捷方式:右键点击命令窗口中的标题栏,选择“属性”。
在“快捷方式”选项卡中,将“运行”设置为“最小化”或者“隐藏”。
然后,使用这个快捷方式来运行命令。
4. 使用第三方工具:可以使用一些第三方工具来隐藏命令窗口,例如,使用AutoHotkey 脚本,使用编译器将脚本文件转换成可执行文件等。
请注意,在一些情况下,命令窗口可能会在命令执行完毕后自动关闭,而在一些情况下,命令窗口可能会一直保持打开状态。
以上方法适用于Windows操作系统,对于其他操作系统可能有不同的方法。
关于VC隐藏DOS窗体方法

在VC下要隐藏黑色的DOS窗口,方法可以添加语句#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 强制制定入口点,(VC2008)一定要放在程序开头!在VC6.0 可为#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) int main(int argc, char* argv[]){MessageBox(NULL, "测试", "提示", MB_OK);return 0;}在VC2008下,则为#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) #include "stdafx.h"#include "windows.h"#include <tChar.h>int _tmain(int argc, _TCHAR* argv[]){MessageBox(NULL,_T("你好"),_T("提示"),0);return 0;}另行几种方法/subsystem:console /entry:mainCRTStartup (ANSI版)/subsystem:console /entry:wmainCRTStartup (UNICODE版)Windows应用程序:/subsystem:windows /entry:WinMain (ANSI版)/subsystem:windows /etnry:wWinMain (UNICODE版)入口地址和子系统也可以进行不关联(非默认)设置。
怎么隐藏控制面板选项

可以利用组策略设置来隐藏控制面板中的选项,很多用户不知道该如何设置,具体的设置方法如下。
1.单击开始;运行,输入Gpedit.msc,打开组策略。
2.展开用户配置;管理模板;控制面板,在右侧找到隐藏指定的控制面板程序。
3.选中已启用,然后单击显示。
4.弹出显示内容,单击右侧的添加。
5.弹出添加项目,在输入要添加的项目下输入想要隐藏的控制面板程序。
如果想隐藏一个控制面板项目,输入该项目的文件名,比如Ncpa.cpl。
如果想隐藏文件夹,可以输入文件名。
6.设置完毕后连续单击确定,保存退出即可。
vc怎样设置控制台窗口界面

VC怎样设置控制台窗口界面一、概述所谓控制台应用程序,就是指那些需要与传统DOS操作系统保持某种程序的兼容,同时又不需要为用户提供完善界面的程序。
简单地讲,就是指在Windows环境下运行的DOS程序。
一旦C++控制台应用程序在Windows 9x/NT/2000操作系统中运行后,就会弹出一个窗口。
例如下列过程:单击Visual C++标准工具栏上的“New Text File”按钮,打开一个新的文档窗口。
选择File | Save菜单或按快捷键Ctrl+S或单击标准工具栏的Save 按钮,弹出“保存为”文件对话框。
将文件名为“Hello.cpp” (注意扩展名.cpp 不能省略)。
在文档窗口中输入下列代码:#include<iostream.h>{cout<<"Hello, Console!"<<endl;}单击小型编译工具栏中的“Build”按钮或按F7键,系统出现一个对话框,询问是否将此项目的工作文件夹设定源文件所在的文件夹,单击[是]按钮,系统开始编译。
单击小型编译工具栏中的“Execute Program”按钮或按Ctrl+F5键,运行刚才的程序。
程序运行后,弹出下图的窗口。
这就是控制台窗口,与传统的DOS屏幕窗口相比最主要的区别有:(1) 默认的控制台窗口有系统菜单和标题,它是一个内存缓冲区窗口,缓冲区大小取决于Windows操作系统的分配;而DOS屏幕是一种物理窗口,不具有Windows窗口特性,其大小取决于ROM BIOS分配的内存空间。
(2) 控制台窗口的文本操作是调用低层的Win32 APIs,而DOS屏幕的文本操作是通过调用BIOS的16(10h)中断而实现的。
(3) 默认的控制台窗口可以接收键盘和鼠标的输入信息,设备驱动由Windows管理,而DOS屏幕窗口接收鼠标时需要调用33h中断,且鼠标设备驱动程序由自己安装。
MFC隐藏和显示一个控件的方法

MFC隐藏和显示一个控件的方法在MFC中,可以通过以下几种方法隐藏和显示一个控件。
1. 使用SetWindowPos函数可以使用CWnd::SetWindowPos函数来隐藏和显示一个控件。
此函数用于移动和调整窗口或控件的大小。
要隐藏一个控件,可以将SWP_HIDEWINDOW标志传递给该函数的nFlags参数。
要显示一个控件,可以将SWP_SHOWWINDOW标志传递给nFlags参数,如下所示:```//隐藏一个控件GetDlgItem(IDC_CONTROL_ID)->ShowWindow(SW_HIDE);//显示一个控件GetDlgItem(IDC_CONTROL_ID)->ShowWindow(SW_SHOW);```2. 使用ShowWindow函数使用CWnd::ShowWindow函数也可以隐藏和显示一个控件。
该函数接受一个参数nCmdShow,指定要采取的操作,可以使用SW_HIDE常量隐藏一个控件,使用SW_SHOW常量显示一个控件,如下所示:```//隐藏一个控件GetDlgItem(IDC_CONTROL_ID)->ShowWindow(SW_HIDE);//显示一个控件GetDlgItem(IDC_CONTROL_ID)->ShowWindow(SW_SHOW);```3. 使用ModifyStyle函数可以使用CWnd::ModifyStyle函数来修改控件的样式。
通过修改控件的样式,可以隐藏或显示控件。
要隐藏一个控件,可以从控件样式中移除WS_VISIBLE样式;要显示一个控件,可以将该样式添加回控件中,如下所示:```//隐藏一个控件GetDlgItem(IDC_CONTROL_ID)->ModifyStyle(WS_VISIBLE, 0);//显示一个控件GetDlgItem(IDC_CONTROL_ID)->ModifyStyle(0, WS_VISIBLE);```注意:上述示例代码中的IDC_CONTROL_ID应替换为要隐藏或显示的控件的ID。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自己的总结:平台:Windows Sever2003环境:Visual Studio 2008在项目属性中如下两步操作:【链接器】——【系统】——【子系统】:/SUBSYSTEM:WINDOWS 【链接器】——【高级】——【入口点】:mainCRTStartupVC++ 隐藏控制台程序窗口大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似dos窗口的console窗口,但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个console窗口,让代码执行完毕之后程序自动退出.下面就介绍一下,如何隐藏win32 console application的console窗口因为此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译器的链接开关选项(也就是linker选项).首先我们来看一下linker的/subsystem 选项该选项的语法形式如下:/subsystem:{console|efi_application|efi_boot_service_driver|efi_rom|efi_runtime_driver|native|posix|windows|windowsce}[,major[.minor]]这个链接选项告诉操作系统如何运行可执行文件console:win32 字符模式应用程序,此种类型的应用程序在运行的时候会产生一个类似dos窗口的控制台窗口,如果在应用程序的主函数为main()或者wmain(),在默认情况下该应用程序就是一个控制台应用程序extensible firmware interface和cpu具体架构相关的一个参数选项,并不常用,在这里暂不详细介绍.如果对此有兴趣的可以访问intel主页来查看相关内容native;设备驱动器选项,如果/driver:wdm选项被设定的话,该链接选项(native)就为默认选项posix:在windows nt 种运行在posix子系统上的应用程序windows:该类型的应用程序不产生console窗口,该类型的应用程序的窗口由用户自己创建,简而言之就是一个标准的win32 application,其入口地址为winmain()函数或者wwinmain()函数的地址如果你在应用程序种定义的主函数为winmain或者wwinmain,在默认情况下该应用程序就是一个win32 application !windowsce:运行在windows ce上的应用程序major and minor (optional):主版本号和次版本号,该选项为可选,该选项为0~65535之间的十进制整数从上面可以看出如果我们建立一个win32 console application的话,linker的/subsystem选项应该为console,可以在vc开发环境的project->setting->link->project option中看到!接下来我们再看看应用程序是如何运行的!我们知道用vc编写的程序,运行的时候是需要cc 运行库支持的.当我们运行一个c/c 程序的时候链接器会首先寻找应用程序的启动函数,例如:如果你建立了一个console程序的话,编译器得链接开关会是以下这种形式/subsystem:console /entry:maincrtstartup (ansi)/subsystem:console /entry:wmaincrtstartuup (unicode)如果你建立了一个win32 application,编译器得链接开关则会是一下形式/subsystem:windows /entry:winmain (ansi)/sbusystem:windows /entry:wwinmain (uincode)上面的两种形式可以再project->setting->link->project option中看到上面的subsystem和entry并不需要都设置,如果你只设置了/subsystem:console的话,那么默认的entry开关在默认情况下应为/entry:maincrtstartup反之,如果你在应用程序中定义了main函数的话,默认情况下,你的/subsystem开关应该为/system:console在默认情况下/subsystem 和/entry开关是匹配的,也就是console对应maincrtstartup或者wmaincrtstartupwindows对应winmain或者wwinmain但是我们也可以通过手动改动的方式使他们不匹配例如我们可以这样改动#pragma comment( linker, /subsystem:windows /entry:maincrtstartup ) // 设置入口地址int main(int argc, char* argv[]){messagebox(null, hello, notice, mb_ok);return 0;}在默认情况下链接器看到/subsystem下是windows选项的时候,它会自动寻找winmain 或者wwinmain但我们强制指定入口地址,这样运行程序的时候默认的console窗口就会隐藏!上面是在代码中使用#pragma指令来设置,还有一种就是直接在开发环境的project->setting->link->project option中手工改动!写了这么多,自己都有点感觉乱,没有办法,以前没写过什么文章,所以措辞可能不太好,希望大家见谅。
1:如果console程序已经写好了,不能改了,也可以。
写一个API程序,不要画窗口,然后用CreateProcess调用写好的console程序,把属性设成SW_HIDE即可。
2:不能用控制台来写(CONSLOE),要用WINMAIN做入口就可以了,不画窗口,别人就都看不见了. 你只用想想办法把你的进程在任务栏里面隐藏住就可以.3:如果是console程序,用API函数GetStdHandle()获得控制台程序的窗口句柄,然后在隐藏窗口4://这一句隐藏控制台#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )你要写控制台程序就用这个在控制台程序中隐藏控制台窗口!转自:/html_free/25.html#如下设置#pragma comment( linker, "/subsystem:/ "windows/ " /entry:/ "mainCRTStartup/ " " ) // 设置入口地址这样就ok了大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个console窗口,让代码执行完毕之后程序自动退出.下面就介绍一下,如何隐藏win32 console application的console窗口因为此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译器的链接开关选项(也就是linker选项).首先我们来看一下linker的/subsystem 选项该选项的语法形式如下:/SUBSYSTEM:{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|WINDOWSCE}[,major[.minor]]这个链接选项告诉操作系统如何运行可执行文件CONSOLE:win32 字符模式应用程序,此种类型的应用程序在运行的时候会产生一个类似DOS窗口的控制台窗口,如果在应用程序的主函数为main()或者wmain(),在默认情况下该应用程序就是一个控制台应用程序Extensible Firmware Interface和CPU具体架构相关的一个参数选项,并不常用,在这里暂不详细介绍.如果对此有兴趣的可以访问intel主页来查看相关内容NATIVE;设备驱动器选项,如果/DRIVER:WDM选项被设定的话,该链接选项(NATIVE)就为默认选项POSIX:在windows NT 种运行在POSIX子系统上的应用程序WINDOWS:该类型的应用程序不产生console窗口,该类型的应用程序的窗口由用户自己创建,简而言之就是一个标准的Win32 application,其入口地址为WinMain()函数或者wWinMain()函数的地址如果你在应用程序种定义的主函数为WinMain或者wWinMain,在默认情况下该应用程序就是一个Win32 Application !WINDOWSCE:运行在windows CE上的应用程序major and minor (optional):主版本号和次版本号,该选项为可选,该选项为0~65535之间的十进制整数从上面可以看出如果我们建立一个win32 console application的话,linker的/subsystem选项应该为CONSOLE,可以在VC开发环境的project-> setting-> link-> project option中看到!接下来我们再看看应用程序是如何运行的!我们知道用VC编写的程序,运行的时候是需要C/C++运行库支持的.当我们运行一个C/C++程序的时候链接器会首先寻找应用程序的启动函数,例如:如果你建立了一个console程序的话,编译器得链接开关会是以下这种形式/subsystem: "console " /entry: "mainCRTStartup " (ANSI)/subsystem: "console " /entry: "wmainCRTStartuup " (UNICODE)如果你建立了一个win32 application,编译器得链接开关则会是一下形式/subsystem: "windows " /entry: "WinMain " (ANSI)/sbusystem: "windows " /entry: "wWinMain " (UINCODE)上面的两种形式可以再project-> setting-> link-> project option中看到上面的subsystem和entry并不需要都设置,如果你只设置了/subsystem: "console "的话,那么默认的entry开关在默认情况下应为/entry: "mainCRTStartup "反之,如果你在应用程序中定义了main函数的话,默认情况下,你的/subsystem开关应该为/system: "console "在默认情况下/subsystem 和/entry开关是匹配的,也就是console对应mainCRTStartup或者wmainCRTStartupwindows对应WinMain或者wWinMain但是我们也可以通过手动改动的方式使他们不匹配例如我们可以这样改动#pragma comment( linker, "/subsystem:/ "windows/ " /entry:/ "mainCRTStartup/ " " ) // 设置入口地址int main(int argc, char* argv[]){MessageBox(NULL, "hello ", "Notice ", MB_OK);return 0;}在默认情况下链接器看到/subsystem下是windows选项的时候,它会自动寻找WinMain或者wWinMain但我们强制指定入口地址,这样运行程序的时候默认的console窗口就会隐藏!上面是在代码中使用#pragma指令来设置,还有一种就是直接在开发环境的project-> setting-> link-> project option中手工改动!转自:/amy_1007/article/details/5844398。