控制台程序窗口隐藏

控制台程序窗口隐藏
控制台程序窗口隐藏

[VC++]控制台程序窗口隐藏

HWND hWnd;

SetConsoleTITle("HEHE");

hWnd=::FindWindow(NULL,"HEHE");

ShowWindow(hWnd,SW_HIDE);

当创建一个控制台程序时,又不想看到其窗口可用如下代码解决:

#ifdef NDEBUG

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) #endif

首先来看一下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窗口就会隐藏!但我们强制指定入口地址,这样运行程序的时候默认的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\"" ) 你要写控制台程序就用这个

VC下揭开“特洛伊木马”的隐藏面纱

一、引言

“特洛伊木马”曾在网上造成很大恐慌,此类黑客程序通过欺骗手段在普通网络用户端安装木马的服务端,使用户的计算机在上网时留有后门,而黑客则可以通过这个后门对被感染的计算机随心所欲地进行监视、破坏。显然这种黑软对于普通网络用户的危害是非常严重的。

就本质而言黑客软件仍然属于应用程序,是基于套接字的网络通讯程序。因此黑客能成功攻击被感染计算机的一个非常必要的先决条件就是此时被攻击方已经有木马程序的服务

端在运行。由于木马程序是一种恶意程序,能在被攻击者没有察觉的情况下悄悄启动运行为攻击者打开后门,故显然不能象其他程序一样堂而皇之的显示在任务栏和任务列表中,否则会立即为用户所察觉而将其关闭,也就失去了为攻击者提供后门的作用。本文下面就针对其隐藏程序的机理展开讨论。

二、程序在任务栏中的隐藏原理

程序在任务栏的隐藏比较简单,首先要保证程序主界面的隐藏,一般是通过修改应用程序类的初始化实例函数InitInstance()的ShowWindow()语句的SW_SHOW参数为SW_HIDE 来实现的。主界面隐藏的同时任务栏虽然也会消失,但在程序启动时会闪一下,因此需要修改程序的扩展属性。一种方法是SDK的写法,即直接利用GetWindowLong()获取到当前的扩展属性然后通过逻辑运算去掉原有的WS_EX_APPWINDOW属性,并新添加一个

WS_EX_TOOLWINDOW属性,这样系统会将其认为是一个工具条窗口而不会再在任务栏中加以显示。最后需要将修改过的扩展属性通过SetWindowLong()函数将其写回。这两个函数的声明分别如下:

LONG GetWindowLong(HWND hWnd,int nIndex);

LONG SetWindowLong(HWND hWnd,int nIndex,LONG dwNewLong);

另一种很简便的是MFC的写法:在程序框架类的预创建窗口函数里通过直接对CREATESTRUCT结构对象的逻辑操作而将程序属性进行改变:

cs.style=WS_POPUP;

cs.dwExStyle=WS_EX_TOOLWINDOW;

这两种写法虽然表现形式各不相同,其本质都是一样的。

三.程序在任务列表中的隐藏原理

任务列表(Ctrl+Alt+Del时弹出的对话框)显示了当前系统正在运行的一些应用程序,如果实现了上一步,虽然在任务栏看不见程序,但有经验的用户可以通过观察任务列表而发现一些值得怀疑的应用程序而在此将其关闭。所以大多数黑软也都通过较复杂的手段实现了自身在任务列表中的隐藏,使被发现的机会大大降低。

在Win9x/2000中,一般每个应用程序都要通过一个API(应用程序接口)函数RegisterServiceProcess()向系统申请注册成为一个服务进程,并且也是通过这个函数注销其服务进程来结束这个服务进程的运行。如果一个进程注册为一个服务进程,通过Ctrl+Alt+Del 就可以在任务列表里看见该进程的标题。而如果一个进程运行了但没有向系统申请注册成为服务进程那么就不会在任务列表里显示。黑软也正是利用这个原理使自身在运行时能在任务列表中实现隐藏。该函数存放于系统内核Kernel32.dll中,具体声明如下:DWORD RegisterServiceProcess(DWORD dwProcessId,DWORD dwType);

其第一个参数指定为一个服务进程的进程标识,如果是0则注册当前的进程;第二个参数指出是注册还是注销当前的进程,其状态分别为:RSP_SIMPLE_SERVICE和

RSP_UNREGISTER_SERVICE。黑软一般是在程序启动初始化时首先从Kernel32.dll动态连接库中将RegisterServiceProcess()函数加载到内存,然后再通过该函数将程序从任务列表中隐藏:

//从Kernel32.dll中加载RegisterServiceProcess()

HMODULE m_hKernel=::GetModuleHandle("Kernel32.DLL");

RSP m_rsp=(RSP)::GetProcAddress(m_hKernel,"RegisterServiceProcess");

m_rsp(::GetCurrentProcessId(),1);//此时为隐藏,当第二个参数为0时显示

另外,还有一部分黑软是通过ShowWindowAsync()函数启动一个新的线程来显示一个新窗口的。该函数的原形为:

BOOL ShowWindowAsync(HWND hWnd,int nCmdShow);

而黑软正是钻了该函数的第二个参数可以设置窗体显示状态的空子,在设置成

SW_HIDE时就可以使目标窗体(黑软)从任务列表中隐藏。

四、小结

以上就是Win9x/2000下的黑客程序所具备的一些基本功能,在此基础上我们可以借助于其实现技巧来编写出一些诸如后台监控之类的实用程序。并且可以通过对黑客类软件的隐藏机理的分析能使广大用户对此类黑软采取一些必要的措施,通过加强防范来使自己的损失防患于未然。

VC窗口启动时隐藏

最近经常见论坛上有人问,程序在启动时如何隐藏。以下是我总结的一些方法,欢迎大家讨论,找出更好的方法。

对于这类问题,大家最容易想到的可能就是在PreCreateWindow中添加cs.style

&=~WS_VISIBLE;这是不可行的。程序仍可使用ShowWindow()将窗体显示出来.

1.基于对话框的程序

我在论坛上看到有人说在OnInitDialog()中加上ShowWindow(SW_HIDE)对话框便不出现了,其实是不可行的。至于原因,我认为是系统是在OnInitDialog()后调用ShowWindow(SW_SHOW)让对话框显示的.可以添加下面代码:

CXXDlg::OnInitDialog()

{

...

Sleep(5000);

return TRUE;

}

可以发现5秒后对话框才显示出来.至于在何时调用的我也不清楚,但是我们可以在OnPaint()中加上ShowWindow(SW_HIDE),来达到隐藏的目的.不过使用的这种方法,会有一点闪烁.另外一种方法就是在OnInitDialog()中使用SetWindowPlacement() GetWindowPlacement(&m_wp); //恢复时用

ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);//从任务栏中去掉. WINDOWPLACEMENT wp;

wp.length=sizeof(WINDOWPLACEMENT);

wp.flags=WPF_RESTORETOMAXIMIZED;

wp.showCmd=SW_HIDE;

SetWindowPlacement(&wp);

还有一种更简单的方法:在OnInitDialog()中调用下面代码.

SetWindowPos(&wndTop,0,0,0,0,NULL);

2.基于单文档的程序

我们一般采用的方法就是将InitInstance()中的:

CXXApp::InitInstance()

{

//m_pMainWnd->ShowWindow(SW_SHOW);

}

但是这样窗体还会有闪烁。

因为MFC还要在ActiveFrame显示框架,所以我们还需要添加下面代码:

void CMainFrame::ActivateFrame(int nCmdShow)

{

nCmdShow=SW_HIDE;

CFrameWnd::ActivateFrame(nCmdShow);

}

或者:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

AfxGetApp()->m_nCmdShow=SW_HIDE;

}

顺便说一下,上面通过ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW)的方法来实现从任务栏去掉按钮,这样当显示时还要切换显示的模式,其实还可以通过调用TaskbarList 组件直接删除和添加:

ITaskbarList的定义在shobjidl.h(https://www.360docs.net/doc/1a2072330.html,)中。

也可以手动定义:

DECLARE_INTERFACE_(ITaskbarList,IUnknown)

{

STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID* ppvObj) PURE;

STDMETHOD_(ULONG,AddRef)(THIS) PURE;

STDMETHOD_(ULONG,Release)(THIS) PURE;

STDMETHOD(ActivateTab)(HWND) PURE;

STDMETHOD(AddTab)(HWND) PURE;

STDMETHOD(DeleteTab)(HWND) PURE;

STDMETHOD(HrInit)(void) PURE;

};

BOOL CMy2App::InitInstance()

{

CoInitialize(0);

ITaskbarList *pObj;

CoCreateInstance(CLSID_TaskbarList,NULL,CLSCTX_INPROC_SERVER,IID_ITaskbarLis t,(void**)&pObj);

pObj->DeleteTab(m_pMainWnd->m_hWnd); //从任务栏上删除

//pObj->AddTab(m_pMainWnd->m_hWnd); //添加

pObj->Release();

CoUninitialize();

}

所以我们还可以用将窗体最小化,并从任备栏上删除按钮的方法来实现隐藏.

有很多应用程序要求一起动就隐藏起来,这些程序多作为后台程序运行,希望不影响其他窗口,往往只在托盘区显示一个图标。这些程序通常都是对话框程序,而对话框在初始化的过程上与SDI、MDI的初始化是不同的,对话框只需要DoModule或者是CreateDialog等等对话框函数调用一次便可,SDI、MDI则要好几步才行。这样看来,对话框在使用方法上面是隐藏了不少细节的,其中就没有SDI、MDI所要求的ShowWindow(nCmdShow)这一步。因此对话框要想一运行就隐藏,并不是很直接的。有一些方法可以做到这一点,下面我们就来看看几种方案。

1.定时器

最直观,又是最无奈的一个方法就是使用定时器。既然我们在对话框开始显示之前不能用ShowWindow(SW_HIDE)将其隐藏,那就给一个时间让它显示,完了我们在隐藏它。

方法:

1.在OnInitDialog()函数里设置定时器:(WINDOWS API里面响应消息WM_INITDIALOG)SetTimer(1, 1, NULL);

2.添加处理WM_TIMER的消息处理函数OnTimer,添加代码:

if(nIDEvent == 1)

{

DeleteTimer(1);

ShowWindow(SW_HIDE);

}

这种方法的缺点是显而易见的,使用定时器,使得程序的稳定性似乎打一个折扣;窗口是要先显示出来的,那么效果就是窗口闪了一下消失。

2.改变对话框显示状况

在对话框初始化时改变其显示属性可以让它隐藏起来。方法是调用SetWindowPlacement函数:

BOOL CDialogExDlg::OnInitDialog()

{

CDialog::OnInitDialog();

//DO something

WINDOWPLACEMENT wp;

wp.length=sizeof(WINDOWPLACEMENT);

wp.flags=WPF_RESTORETOMAXIMIZED;

wp.showCmd=SW_HIDE;

SetWindowPlacement(&wp);

return TRUE;

}

在需要显示时(通常是响应热键或者托盘图标的鼠标消息):

WINDOWPLACEMENT wp;

wp.length=sizeof(WINDOWPLACEMENT);

wp.flags=WPF_RESTORETOMAXIMIZED;

wp.showCmd=SW_SHOW;

SetWindowPlacement(&wp);

这样的效果很不理想:窗口显示在屏幕的左上角,并且是只有标题栏,要正常显示,还需加上如下代码:

定义一个成员变量CRect rect;

在OnInitDialog()里面:

GetWindowRect(&rect);

在需要显示的地方:

SetWindowPos(&wndNoTopMost, wndRc.left, wndRc.top, wndRc.right, wndRc.bottom, SWP_SHOWWINDOW);

CenterWindow();

即使这样,效果还是很差。

这种方法还有一个弊端是当程序开始运行并且隐藏起来后,原来激活的窗口变成了非激活状

态了,而当对话框显示出来后,对话框自身也是非激活状态的。

3.不绘制窗口

当对话框显示时将要响应消息WM_PAINT绘制客户区,相应消息WM_NCPAINT绘制窗口边框。我们在窗口第一次自绘自身时隐藏窗口,可以收到比较良好的效果。由于窗口是先画窗口边框,所以我们仅需处理WM_NCPAINT即可。代码如下:

添加WM_NCPAINT处理函数。

void CMyDialog::OnNcPaint()

{

static int i = 2;

if(i > 0)

{

i --;

ShowWindow(SW_HIDE);

}

else

CDialog::OnNcPaint();

}

这里有个问题:为什么要定义静态变量i而且设其值为2呢?

我们只要窗口隐藏第一次,所以定义这个变量可以判断是否时首次显示窗口。当程序开始运行时,系统发送(SendMessage)WM_NCPAINT消息,此时程序的窗口边框应该被显示,但是此时我们没有作任何显示的操作,而是将窗口隐藏,ShowWindow(SW_HIDE)将把窗口的

WS_VISIBLE属性去掉,继续执行,程序将检查WS_VISIBLE属性,如果没有则显示窗口,所以又发送了一个WM_NCPAINT消息。所以我们要处理两次WM_NCPAINT消息。

在需要窗口显示时,调用ShowWindow(SW_SHOW)即可。

程序执行的结果是,原来处于激活状态的窗口可能会闪动两下,然后仍然处于激活状态。这种处理方式比上面的方式要优越得多。

4.将对话框作为子窗口

这种方法是采用SDI框架,主窗口始终隐藏,对话框作为主窗口的成员变量,在CMainFrame::OnCreate()里面加入下代码:

if(!dlg.Create(IDD_MYDIALOG, this))

{

return –1;

}

dlg.ShowWindow(SW_HIDE);

在要显示对话框的地方用dlg.ShowWindow(SW_SHOW);即可。注意,主窗口一定要隐藏,否则对话框可能会闪现一下。

隐藏状态栏窗口

上面介绍了几种检查对话框的方法,大家如果试过的话可能已经注意到系统状态栏里在程序启动时会有程序的图标闪过,在隐藏对话框的时候这个也是要隐藏的,方法很简单:

在OnInitDialog()函数里面加上ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);即可。在要显示窗口的地方加上代码ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW);即将窗口的扩展样式改回来。

JAVA代码编写一简单网络聊天程序

要求:聊天室服务器、聊天室客户端;客户端之间可以聊天。 因为我是初级选手,想借此程序分析学习java,所以代码最好多一点注释... 分数有限,望大家不吝赐教!!问题补充: 需要图形用户界面哦,最好用swing组件 服务器端:采用多线程,可以向客户广播:当前聊天室人数,客户名称列表,客户进入离开提示; 客户端:可以设定昵称,性别,客户间可以私聊 服务器端: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.360docs.net/doc/1a2072330.html,.*; public class Server extends JFrame implements ActionListener{ JPanel contentPane; JLabel jLabel2 = new JLabel(); JTextField jTextField2 = new JTextField("4700"); JButton jButton1 = new JButton(); JLabel jLabel3 = new JLabel(); JTextField jTextField3 = new JTextField(); JButton jButton2 = new JButton(); JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); ServerSocket server = null; Socket socket = null;BufferedReader instr =null;PrintWriter os=null ; //Construct the frame public Server() { jbInit(); } class MyThread extends Thread{//该线程负责接受数据 public void run(){ try{ while(true){ this.sleep(100); instr= new BufferedReader(new InputStreamReader(socket.getInputStream())); if(instr.ready()){ //检查是否有数据 jTextArea1.append("客户端: "+instr.readLine()+"\n"); } } }catch(Exception ex){} }

C语言控制台窗口界面编程(修正版)

控制台窗口界面编程控制 〇、摘要 一、概述 二、控制台文本窗口的一般控制步骤 三、控制台窗口操作 四、文本属性操作 五、文本输出 六、文本操作示例 七、滚动和移动 八、光标操作 九、读取键盘信息 十、读取鼠标信息 十一、结语 补充篇--经典程序(Internet资源) 摘要: 文本界面的控制台应用程序开发是深入学习C++、掌握交互系统的实现方法的最简单的一种手段。然而,Visual C++的C++专用库却没有TC所支持的文本(字符)屏幕控制函数,为此本系列文章从一般控制步骤、控制台窗口操作、文本(字符)控制、滚动和移动光标、键盘和鼠标等几个方面讨论控制台窗口界面的编程控制方法。 在众多C++开发工具中,由于Microsoft本身的独特优势,选用 Visual C++已越来越被众多学习者所接受。显然,现今如果还再把TC作为开发环境的话,不仅没有必要,而且也不利于向Windows应用程序开发的过渡。然而,Visual C++的C++专用库却没有TC所支持的文本屏幕(控制台窗口)控制函数(相应的头文件是conio.h)。这必然给C++学习者在文本界面设计和编程上带来诸多不便。要知道,文本界面设计是一种深入学习C++、掌握交互系统的实现方法的最简单的一种手段,它不像C++的Windows图形界面应用程序,涉及知识过多。为此,本系列文章来讨论在Visual C++ 6.0开发环境中,如何编写具有美观清晰的控制台窗口界面的C++应用程序。 (一)概述操作 所谓控制台应用程序,就是指那些需要与传统DOS操作系统保持某种程序的兼容,同时又不需要为用户提供完善界面的程序。简单地讲,就是指在Windows环境下运行的DOS程序。一旦控制台应用程序在Windows操作系统中运行后,就会弹出一个窗口。例如下列代码: #include int main(int argc,char *argv[]) { printf("Hello, Console!\n"); return 0; } 单击小型编译工具栏中的“Build”按钮或按F7键,系统出现一个对话框,询问是否将此项目的工作文件夹设定源文件所在的文件夹,单击[是]按钮,系统开始编译。

java简单聊天小程序

网络编程java简单聊天小程序[下次修改成多线程的,这个必须等待对方输入结束,有机会修改成可视化窗口] By 刘汪洋 写入正确的ip地址即可正常用当然目前只停留在命令行界面 还没有写成可视化窗口界面 运行时请带上参数 如java TransServer 张三 Java TransClient 李四 ( 和刘正南在局域网试验的截图成功 这是修改后的 加上了姓名! ) (修改前的截图)

代码: 客户端: package com.baidu.chat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import https://www.360docs.net/doc/1a2072330.html,.Socket; import https://www.360docs.net/doc/1a2072330.html,.UnknownHostException; // 简单聊天小程序客户端 public class TransClient { public static void main(String[] args)

{ if(args[0]==null) args[0] = "他"; startClient(args[0]); } private static void startClient(String name) { Socket sk = null; BufferedReader bufr = null; try { sk = new Socket("127.0.0.1",10000);// 1 创建 socket服务 bufr = new BufferedReader(new InputStreamReader(System.in));// 2 获取录入键盘 PrintWriter out = new PrintWriter(sk.getOutputStream(),true);// 3 获取输出流true表示自动刷新 BufferedReader bufIn = new BufferedReader(new InputStreamReader(sk.getInputStream()));// 4 获取输入流 // 5 发送获取 String text_send = ""; String text_get = ""; String ServerName = ""; System.out.print("聊天已开启..."+"\r\n"+"我说:");

一个多线程的windows控制台应用程序

一个多线程的windows控制台应用程序 一、要求: 编写一个单进程、多线程的windows控制台应用程序。 二、平台: Window XP C# 三、内容: 每个进程都有分配给它的一个或多个线程。线程是一个程序的执行部分。 操作系统把极短的一段时间轮流分配给多个线程。时间段的长度依赖于操作系统和处理器。 每个进程都开始一个默认的线程,但是能从它的线程池中创建一个新的线程。 线程是允许进行并行计算的一个抽象概念:在一个线程完成计算任务的同时,另一个线程可以对图像进行更新,两个线程可同时处理同一个进程发出的两个网络请求。 如图所示,选择操作: 1、创建和启动一个线程。在一个进程中同时教和运行两个线程,并且可以不需要停止或者释放一个线程。 相关代码及其解释: public class Threading1:Object { public static void startup() { //创建一个线程数组 Thread[] threads=new Thread[2]; for(int count=0;count

public static void Count() { for(int count=1;count<=9;count++) Console.Write(count+" "); } } 输出结果: 这里通过new方法创建了两个线程,然后使用start()方法来启动线程,两个线程的作用是:两个线程同时从1数到9,并将结果打印出来。 运行上面的程序代码时,可能会在控制台上输出多种不同的结果。从123456789123456789到112233445566778899或121233445566778989在内的各种情况都是可能出现的,输出结果可能与操作系统的调度方式有关。 2、停止线程。当创建一个线程后,可以通过多种属性方法判断该线程是否处于活动状态,启动和停止一个线程等。相关代码及其解释: public class MyAlpha { //下面创建的方法是在线程启动的时候的时候调用 public void Beta() { while(true) { Console.WriteLine("MyAlpha.Beta is running in its own thread."); } } } public class Simple { public static int Stop() { Console.WriteLine("Thread Start/Stop/Join"); MyAlpha TestAlpha=new MyAlpha(); //创建一个线程对象 Thread MyThread=new Thread(new ThreadStart(TestAlpha.Beta)); //开起一个线程 MyThread.Start(); while(!MyThread.IsAlive);

讲义---C#控制台应用程序的组成

复习 一、C#控制台应用程序的组成 (1)导入系统预定义元素部分 C#依赖许多系统预定义元素,为了在程序中能够使用这些预定义元素,需要对这些元素进行导入。 控制台应用程序使用下述代码导入对其他命名空间的引用: using System; using System.Collections.Generic; using System.Linq; using System.Text; (2)命名空间 关键字namespace和命名空间标识符(命名空间名字)构建用户命名空间,空间的范围用一对花括号限定。 namespace Hello { } 默认情况下命名空间名与解决方案名相同 (3)类 类必须包含在某个命名空间中,使用关键字class和类标识符(类名)构建类,类的范围使用一对花括号限定。 class Program { } (4)主方法 应用程序都有一个执行的入口用以指明程序执行的开始点。 C#应用程序中的入口点用主方法标识,名为Main(),后面括号即使没有参数也不能省略。 一个C#应用程序必须有、而且只能有一个Main()方法,如果一个应用程序仅由一个方法构成,这个方法名字就只能为Main()。 主方法用一对花括号限定自己的区域,如下所示: static void Main(string[] args) { } (5)方法中的C#代码 二、类 三、举例 输入两个数ab,计算其和存入sum namespace add { class Program { static void Main(string[] args) { int a, b, sum; a = int.Parse(Console.ReadLine()); sum = a + b; Console.WriteLine("{0}+{1}={2}",a,b,sum); } } }

java编写的简单局域网聊天室(适合初学者).

import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Frame; import java.awt.Panel; import java.awt.Point; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.FileWriter; import java.io.IOException; import https://www.360docs.net/doc/1a2072330.html,.DatagramPacket; import https://www.360docs.net/doc/1a2072330.html,.DatagramSocket; import https://www.360docs.net/doc/1a2072330.html,.InetAddress; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class GUI_Chat extends Frame { private static final long serialVersionUID = 1L; private TextArea viewTextArea = new TextArea(20, 1; private TextArea sendTextArea = new TextArea(; private TextField ipTextField = new TextField(20; private Button sendButton = new Button(" 发送" ; private Button clearButton = new Button(" 清屏" ; private Button logButton = new Button(" 记录" ; private Button shakeButton = new Button(" 震动" ; private Panel panel = new Panel(; private DatagramSocket socket ;

控制台程序窗口隐藏

[VC++]控制台程序窗口隐藏 HWND hWnd; SetConsoleTITle("HEHE"); hWnd=::FindWindow(NULL,"HEHE"); ShowWindow(hWnd,SW_HIDE); 当创建一个控制台程序时,又不想看到其窗口可用如下代码解决: #ifdef NDEBUG #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) #endif 首先来看一下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)

java课程设计聊天小程序

java课程设计聊天小程序

课程设计指导书 姓名学 号 班 级 一 班 课程名称Java课程设计课程性质 设计时间2010年11月4日——2010年12月31日设计名称聊天小程序 设计目的本次课程设计是对前面学过的面向对象的编程思想以及编程方法的一个总结、回顾和实践。开始设计前学生一定要先回顾以前所学的内容,明确本次设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。通过编写一个基于JA V A的应用系统综合实例,来掌握Java语言编程技巧。 设计要求1、使用图形用户界面。 2、能实现一个聊天室中多人聊天。 3、可以两人私聊。

计划与进度计划在两个月内完成任务,首先在前半个月内(11月4日--11月19日),构思通过网上(图书馆)的知识与课本上的相关内容的了解与认识,确认好选择的课题与怎样设计,基本的思路想好。十五天(11月19日--12月5日)内参考资料争取完成服务端的程序,在12月5日--12月20日完成客户端的程序设计,在12月20日—12月30日内完成实现报告的填写工作。在12月31日全面完成整个课题,并上交给老师。 任课教师意见备注

课程设计报告 课程: 学号: 姓名: 班级 教师: 时间

计算机科学与技术 设计名称:聊天小程序日期:2010 年 11月 4 日 设计内容:设计一个在图形界面下,实现一个聊天室中多人聊天,也可以私聊的聊天小程序 设计目的与要求:目的是为了更好的掌握java 这门课程的内容,同时更好的理解与掌握socket 编程,对所有面向对象的编程思想以及编程方法的一个总结、回顾和实践,掌握Java语言编程技巧。要求使用图形用户界面。能实现一个聊天室中多人聊天。可以两人私聊。(提示:使用socket通信)程序描述清晰准确,思路清晰,程序能够实现相应的功能。

C# 创建控制台Hello World程序

C# 创建控制台Hello World程序 在Visual Studio2010中,用户可以使用C#创建在命令行控制台接收输入并显示输出的应用程序。因为这些应用程序的用户界面非常简单,所以对于学习C#开发非常理想。本练习就将使用Visual Studio创建简单的控制台应用程序,具体步骤如下所示: (1)在【新建项目】对话框中,选择项目模版为“控制台应用程序”,并将项目名称设置为“ConsolTest”,单击【确定】按钮,创建控制台应用程序。 (2)在Visual Studio界面右侧的【解决方案资源管理器】面板中,会显示项目中所包含的所有内容,如图1-21所示。 图1-21 解决方案资源管理器 【解决方案资源管理器】面板中所包含的内容如下所示: ●解决方案ConsolTest是最顶层的解决方案文件,每个应用程序都有一个。 该文件的实际文件名是ConsolTest.sln。并且每个解决方案文件都包含一个或多个项目文件的引用。 ●ConsolTest是C#项目文件。每个项目文件都引用一个或多个包含项目源码 以及其他内容的文件。在一个项目中,所有源代码都必须使用相同的编程语言来编写,该文件实际是ConsolTest.csproj。 ●Properties是ConsolTest项目中建立的一个文件夹。展开它,将发现它包含 一个名为AssemblyInfo.cs的文件。该文件是一个特殊的文件,可以用它在一个属性中添加“属性”,如作者姓名、程序版权信息等。用户也可以利用一些附加的属性来修改程序的运行方式。 ●“引用”文件夹包含了对程序可用的已编译代码的引用。代码编译好后, 它会转换成一个“程序集”(ssembly),并获得一个惟一的名称。开发者可以使用程序集将他们编写的一些有用的代码打包到一起,并分发给可能想在自己程序中使用的其他开发人员。在本书中编写应用程序时,用到的许多新特性都利用了Microsoft Visual 2010自带的程序集。 ●ConsolTest.cs是一个C#源代码文件,它是项目最初创建时,在【代码和文 本编辑器】窗口中显示的文件。用户可以在这个文件中写入自己的代码。

自动取款机(ATM)模拟程序(C#控制台应用程序)

自动取款机(ATM)模拟程序 一、需求 我们需要设计一个具备如下功能的ATM模拟程序。 ●开户:用户能够通过ATM来开设帐号,开户需要设置密码。 ●登录:用户能够登录到已经开设的帐号上,登录需要验证密码。 ●管理帐号:用户登录到帐号上后,能够进行如下的操作。 ■存款:将指定的款项存到帐号中。 ■取款:从帐号中取出指定的款项。 ■查询余额:查询帐号的余额。 ■修改密码:修改帐号的密码。 二、分析 面向对象编程的第一步是进行面向对象分析。面向对象分析的目标是建立问题领域的模型,包括如下模型。 ●功能模型:即画出每一个功能要求的用例图。 ●对象模型:对用例模型进行分析,把系统分解成互相协作的类,通过类图/对象图描述对 象、对象的属性、对象间的关系。 ●动态模型:描述系统的动态行为,通过序列图来描述对象的交互,以揭示对象间如何写 作来完成每个具体的用例,单个对象的状态变化和动态行为可以通过状态图来表达。1.功能模型 根据我们的需求,可以很容易地画出A TM模拟程序的用例图: 可以看出,用户可以开户和登录帐号,开户或者登录帐号之后就能管理帐号。要管理账号,就必须首先登录帐号或者开户。管理帐号的功能包括存款、取款、查询余额和修改密码。

2.对象模型 ATM是银行相连的设备,因此银行是A TM模拟程序的相关对象,所有的操作都是针对帐号的,因此帐号是其中的核心对象。此外,需要一个程序来启动ATM。因此,在ATM模拟程序中,我们需要处理四个类,或者说四类对象:启动程序、A TM、银行及帐号。 1)帐号类Account 帐号类Account包含所有的帐号信息负责所有的帐号操作。基本的帐号信息包括: ●帐号名name ●帐号密码password ●帐号余额balance 主要的帐号操作包括: ●登录Login ●存款Deposit ●取款Withdraw ●查询余额Get_Balance ●修改密码ChangePassword 2)银行类Bank 银行类Bank的本质就是一组帐号的组合,并负责管理帐号。基本的银行信息包括: ●银行名name ●已经开户的帐号数usedAccountNum ●可以容纳的最大账户数MaxAccountNum ●帐号集accounts 主要的银行操作包括: ●开户OpenAccount ●登录帐号LoginAccount ●撤销帐号,但是由于A TM不能撤销帐号,因此我们不关心这个操作 3)ATM类 ATM类与银行类之间在一对一的关联关系,ATM提供用户界面,并将用户的请求提交给银行、将银行的反馈提交给用户。基本的ATM信息包括: ●银行Bank 主要的ATM操作包括: ●启动Start ●开户OpenAccount ●登录帐号LoginAccount ●管理帐号ManageAccount ●一些显示不同信息的辅助操作(PrintLogo、Print、Pause等)。 4)启动程序类Program 启动程序类Program的唯一功能就是创建银行类和ATM类的实例,并将它们关联起来,然后启动ATM(执行A TM对象的Start方法)。因此,这个类仅仅包含程序的入口点Main方法。 5)ATM模拟程序的类图 根据上述各类的分析,可以画出A TM模拟程序的类图:

JAVA课程设计--简单的网络聊天程序

本科课程设计课程设计题目:简单的网络聊天程序

课程设计报告1.设计目的:

序言 1.1 背景 在当今的信息时代,越来越多的聊天工具被应用,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。使用Java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入式设备进行应用程序的开发。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。 此次课程设计的题目为简单的聊天室,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。 1.2 相关技术 CPU:Pentium 2.8GHz以上 内存:256MB以上 硬盘空间:80G以上 操作系统:Windows7 运行环境:eclips

2. 程序设计与实现 2.1需求分析 Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。Java去掉了C++语言的许多功能,如:指针运算、结构、typedefs、#define,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。这将减少平常出错的50%。而且,Java很小,整个解释器只需215K的RAM。 因此运用JAVA程序编写聊天室,实现简单聊天功能。本次课程设计做的是Java简单聊天室,它是图形界面、线程、流与文件等技术的综合应用,其界面主要采用了java.awt包,javax.swing包等。程序实现了聊天室的基本功能,其中有: (1)启动服务器:实现网络的连接,为注册进入聊天室做准备。 (2)启动客户端:实现网络的链接,可以进行正式的聊天 (3)发送信息:为用户发送信息提供平台。 (4)离开界面:使用户退出聊天室。 (5)关闭服务器:断开与网络的连接,彻底退出聊天室。

C# 调用控制台程序并取得输出结果

.Net本身的功能虽然很强,但是,有些时候,控制台、命令行的功用还是不可 忽视的,恰当的使用命令行,可以起到事半功倍的效果 这里要说的是以.net的程序为宿主,调用命令行程序,执行某些操作,并将命令行的输出结果返回到.net宿主里。我们说的控制台程序,并不是单纯的指cmd.exe/command.exe,而是泛指具有标准输入、输出功能的程序。因为通常的控制台程序,多数是在cmd命令行界面里执行的,所以,我们以cmd为例子来说 大家在cmd命令行里,敲入help或?,可以看到如下输出:(以XP为例,其他操作系统差别不大)

通过上面的列表,大家可以看到,很多复杂的功能,用命令行完成是非常easy 了(上面列出的并不是全部命令,只是部分) 下面,我们举个例子,比如:取得当前的系统信息,那么我只需要调 用systeminfo即可

//实例化一个进程类 Process cmd=new Process(); //获得系统信息,使用的是systeminfo.exe这个控制台程序 cmd.StartInfo.FileName="systeminfo.exe"; //将cmd的标准输入和输出全部重定向到.NET的程序里 https://www.360docs.net/doc/1a2072330.html,eShellExecute=false;//此处必须为false 否则引发异常 cmd.StartInfo.RedirectStandardInput=true;//标准输入 cmd.StartInfo.RedirectStandardOutput=true;//标准输出 //不显示命令行窗口界面 cmd.StartInfo.CreateNoWindow=true; cmd.StartInfo.WindowStyle=ProcessWindowStyle.Hidden; cmd.Start();//启动进程 //获取输出 //需要说明的:此处是指明开始获取,要获取的内容, //只有等进程退出后才能真正拿到 this.textBox1.Text=cmd.StandardOutput.ReadToEnd(); cmd.WaitForExit();//等待控制台程序执行完成 cmd.Close();//关闭该进程

软件工程实验:Windows控制台应用程序设计

本科实验报告 课程名称:软件开发环境与工具 实验项目:Windows控制台应用程序设计实验地点: 专业班级:学号: 学生姓名: 指导教师: 年月日

安装Visual Studio 2010,熟悉Visual Studio 2010开发环境。熟练掌握C#的语法、语句结构,并能进行控制台应用程序的编写。 二、主要仪器设备 PC,Windows7操作系统,Visual Stdio2010编程平台。三、实验内容 1.安装Visual Studio 2010。 2.熟悉掌握C#的语法、语句结构。 3.掌握控制台应用程序的设计方法。 四、实验要求 1.编写控制台程序:输入矩形的长和宽,输出矩形的面积和周长。 2. 编写控制台应用程序,输入正整数n,输出 s=1+(1+2)+ (1+2+3)+…+(1+2+3+…+n)的计算结果。 3. 编写控制台应用程序,输出所有这样的三位数:这个三位数本身恰好等于其每个数字的立方和(例153=13+53+33)。 五、实验步骤 1.运行Visual Studio 2010安装文件。 2.按照安装向导说明,完成安装。 3.打开Visual studio 2010,进入IDE,熟悉编程环境。 4.按照要求完成实验内容。 5.实验结束后,整理实验报告。

1.编写控制台程序:输入矩形的长和宽,输出矩形的面积和周长。 2. 编写控制台应用程序,输入正整数n,输出 s=1+(1+2)+ (1+2+3)+…+(1+2+3+…+n)的计算结果。 3. 编写控制台应用程序,输出所有这样的三位数:这个三位数本身恰好等于其每个数字的立方和(例153=13+53+33)。 七、实验源程序 1.编写控制台程序:输入矩形的长和宽,输出矩形的面积和周长。

利用JAVA实现简单聊天室

利用JAVA实现简单聊天室 1.设计思路 Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。而且,Java 很小,整个解释器只需215K的RAM。 因此运用JAVA程序编写聊天室,实现简单聊天功能。程序实现了聊天室的基本功能,其中有: (1)启动服务器:实现网络的连接,为注册进入聊天室做准备。 (2)注册登陆界面:填写基本信息如姓名等,可以供多人进入实现多人聊天功能。 (3)发送信息:为用户发送信息提供平台。 (4)离开界面:使用户退出聊天室。 (5)关闭服务器:断开与网络的连接,彻底退出聊天室。 2.设计方法 在设计简单聊天室时,需要编写5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。 3 程序功能图及程序相关说明 (1)主功能框图

(2) 聊天室基本功能表 4.程序代码是说明 程序中引入的包: package Chat; import https://www.360docs.net/doc/1a2072330.html,.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*;

import java.io.*; (1)服务器端代码中用户自定义类: 类名:Server 作用:服务器启动 继承的接口名:ActionListener public class Server implements ActionListener{ 定义的对象: count //记录点机关闭按钮次数2次关闭 soconly //只有SOCKET,用于群发 sockets//所有客户的SOCKET socket_thread //Socket所在的线乘,用于退出;frame // 定义主窗体 panel //定义面板 start,stop //启动和停止按钮 主要成员方法: public void center //定义小程序查看器的位置 public void actionPerformed //定义处理异常机制 定义子类:serverRun,Details 继承的父类名:Thread class serverRun extends Thread //启线乘用于接收连入的Socket class Details extends Thread //具体处理消息的线乘,只管发送消息创建一个ServerSocket 对象,用于接受指定端口客户端的信息 ServerSocket server = new ServerSocket("1234"); 接受请求时候,通过accept()方法,得到一个socket对象。 Socket socket = server.accept(); 通过socket创建流(输入,输出)。 BufferedReaderbr=newBufferedReader(newInputStreamReader (socket.getInputStream())) DataInputStream dis = new DataInputStream(socket.getInputStream());

若干个经典的Java小程序源代码

一个Java小程序源代码(反转字符串)//BorderLayoutTest.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; public class test1 { public static void main(String[] args) { cloneFrame frame = new cloneFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } } class cloneFrame extends JFrame { public cloneFrame() {

setTitle("机试程序"); setSize(600, 400); JPanel buttonPanel = new JPanel(); buttonPanel.setBackground(new Color(56,43,85)); Button1 = new JButton("点击复制反转字符串"); Button1.addActionListener(new turnListener()); buttonPanel.add(Button1); JPanel textPanel = new JPanel(); textPanel.setBackground(new Color(100,100,100)); field1 = new JTextField("姓名:老孙;学号:2004132028", 20); field2 = new JTextField("反转", 20); field2.setEditable(false); textPanel.add(field1); textPanel.add(field2); JPanel tuPanel = new JPanel();

C++控制台下动画程序

动画1 #include #include #include using namespace std; int main() { int i,j,col=1; char c; cin>>c; for(i=0;i<10;++i) { system("cls"); //调用系统命令,清屏 cout< #include #include using namespace std; int main() { int i,j,row,col; char c; system("color BD");//设置控制台背景色和前景色,B背景色,D前景色 for( i=0;i<30;++i) { row=1+rand()%10; //rand()函数生成0~RAND_MAX之间的随机整数 col=5+rand()%31; c=65+rand()%20; for(j=0;j

} return 0; } 注:其中color后面的B是背景色代号,D是前景色代号。各颜色代码如下:0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色

控制台窗口界面(谷风软件)

怎样设置控制台窗口界面 计算机专业----vc技术篇2010-05-19 23:03:58 阅读80 评论0 字号:大中小订阅 本片日志来自:https://www.360docs.net/doc/1a2072330.html,/Article/Programming/CC/200907/30628.html 一、概述 所谓控制台应用程序,就是指那些需要与传统DOS操作系统保持某种程序的兼容,同时又不需要为用户提供完善界面的程序。简单地讲,就是指在Windows环境下运行的DOS程序。一旦C++控制台应用程序在Windows 9x/NT/2000操作系统中运行后,就会弹出一个窗口。例如下列过程: 单击Visual C++标准工具栏上的“New Text File”按钮,打开一个新的文档窗口。 选择File | Save菜单或按快捷键Ctrl+S或单击标准工具栏的Save按钮,弹出“保存为”文件对话框。将文件名为“Hello.cpp” (注意扩展名.cpp不能省略)。 在文档窗口中输入下列代码: #include void main() { cout<<"Hello, Console!"< } 单击小型编译工具栏中的“Build”按钮或按F7键,系统出现一个对话框,询问是否将此项目的工作文件夹设定源文件所在的文件夹,单击[是]按钮,系统开始编译。 单击小型编译工具栏中的“Execute Program”按钮或按Ctrl+F5键,运行刚才的程序。 程序运行后,弹出下图的窗口。 这就是控制台窗口,与传统的DOS屏幕窗口相比最主要的区别有: (1) 默认的控制台窗口有系统菜单和标题,它是一个内存缓冲区窗口,缓冲区大小取决于Windows操作系统的分配;而DOS屏幕是一种物理窗口,不具有Windows窗口特性,其大小取决于ROM BIOS分配的内存空间。

教程1如何创建简单的控制台应用程序

教程1:如何创建简单控制台应用程序 第一步打开VB或者studio2000-2005 第二步打开菜单栏中文件有个新建项目 第三步选择WINDOES 中C#,再选择控制台应用程序(注意应用名称要和解决方案名称同步)第四步点击确定创建程序后,在MAIN函数下的 { } 按程序提示输入HELLO WORD // for example using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HELLO { class Program { static void Main(string[] args) { Console.WriteLine("hello word"); Console.ReadLine(); Console.ReadKey(); } } } 保存即可 附件:1.writeline和write的区别 Console.WriteLine()跟Console.Write()区别就是前面的多输出了一个回车换行 比如:Console.WriteLine("aaa")等效于Console.Write("aaa\r\n") Console.ReadLine():读取输入的一行,直到输入回车为止(读取的不包含回车) Console.Read():读取输入的一个字符,回车也算一个字符 2.Main的含义见我的日志 3.read和write的含义 read的含义是读取,write的含义是写入

相关文档
最新文档