调用API 清屏

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace calculate
{
    struct StdHandleEnum
    {
        public const int STD_INPUT_HANDLE = -10;
        public const int STD_OUTPUT_HANDLE = -11;
        public const int STD_ERROR_HANDLE = -12;
    };

    static class ConsoleEx
    {
        internal struct COORD
        {
            public short X;
            public short Y;
        }

        [StructLayout(LayoutKind.Sequential, Pack = 1)]
        internal struct CONSOLE_SCREEN_BUFFER_INFO
        {
            public COORD Size;
            public COORD p1;
            public short a1;
            public short w1;
            public short w2;
            public short w3;
            public short w4;
            public COORD m1;
        }

        [DllImport("kernel32.dll")]
        public static extern int GetStdHandle(int nStdHandle);

        [DllImport("kernel32.dll")]
        public static extern bool GetConsoleScreenBufferInfo(int hConsoleOutput, out CONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);

        [DllImport("kernel32.dll")]
        public static extern bool SetConsoleCursorPosition(int hConsoleOutput, COORD dwCursorPosition);

        [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        public static extern bool FillConsoleOutputCharacter(int hConsoleOutput, short cCharacter, int nLength, COORD WriteCoord, out int lpNumberOfCharsWritten);

        public static void Clear()
        {
            CONSOLE_SCREEN_BUFFER_INFO CSBI;
            int hOut;
            int CharOut;
            COORD Home;

            hOut = GetStdHandle(StdHandleEnum.STD_OUTPUT_HANDLE);

            GetConsoleScreenBufferInfo(hOut, out CSBI);

            Home.X = 0;
            Home.Y = 0;

            FillConsoleOutputCharacter(hOut, (short)‘ ‘, CSBI.Size.X * CSBI.Size.Y, Home, out CharOut);

            SetConsoleCursorPosition(hOut, Home);
        }
    }
}
时间: 2024-08-05 22:51:16

调用API 清屏的相关文章

java——JNI(例子控制台(64位)清屏

因为java的最底层是jvm,所以单纯的控制台java程序不能感知jvm再下面的操作系统的情况, 可以通过JNI(Java Native Interface)技术实现java后台调用C++/C的dll(Dynamic Linkable Library,动态链接库)文件. 不过,对Java外部的调用通常不能移植到其他平台,在applet中还可能引发安全异常.实现本地代码将使您的Java应用程序无法通过100%纯Java测试.但是,如果必须执行本地调用,则要考虑几个准则: 1.将您的所有本地方法都封

Fullscreen API 全屏显示网页

第一次看到应用 Fullscreen API 全屏显示网页,是 FaceBook 中的照片放大.作为一个比较新的 API,目前只有 Safari.Chrome 和 FireFox 三种浏览器支持该特性.因为尚未发布正式版的标准,所以必须使用浏览器特定的方法,也就是应用添加前缀(webit/moz)的方法. 这个 API 不仅能够使整个页面全屏显示,也可以使页面中的某个元素全屏显示.它的设计初衷是为了全屏显示 HTML5 视频和游戏,以便更全面的替代 flash 功能.尽管还有很多有待完善的地方,

c语言清屏、等待、随机函数

清屏函数 #include<conio.h> system("CLS");或system(cls); 等待函数 #include<windows.h> Sleep(5000);//等待5秒,Sleep()以毫秒为单位 随机数函数 #include <time.h> #include<stdlib.h>(NULL的说明)   srand(time(NULL));(如果没有这个每次产生的随机数的顺序都一样) rand()%100+1;//产生

android 涂鸦(清屏,画笔,粗细,保存)以及canvas源码学习

更新:本文的内容只是一部分,这段时间添加了橡皮擦这个新功能,于是问题接二连三的来,比如说:如果用本文的内容去做橡皮擦的话,难!(至少我没解决,不是没背景图,就是有背景图但是更新要在下一下刷橡皮擦的时候才能更新效果),然后有个setbackgroundresource的函数,这个函数就可以了,但是问题又来了,比如说保存,清屏,但是我都解决了(清屏的话就是重新构造一个图,当clear的时候就把这张图赋值给以前的图片.保存的话我就是把绘下个图放到一张有背景的canvas上面,至是分辨率的问题自己去解决

编写C语言跨平台函数(以清屏和休眠函数为例)

支持C语言的平台有许多,常见的编译器如VC.gcc.Clang等.不同的编译器共同点是都支持标准C(ANSI C),但是各自却又有自己独立的.平台相关的功能以及函数接口.这通常为程序的移植性带来很多问题.这里我简单谈一下解决方案. 常见思路 常见的解决跨平台移植的思路就是利用 宏.不同编译器有各自不同的宏,宏有很多,具体可以参考编译器的相关手册.通过判断一个宏是否存在来选择性的包含头文件或调用函数,其本质就是一种条件编译. 比如一些平台相关的函数,在不同平台要包含不同文件. #if define

C#调用API向外部程序发送数据

C#调用API向外部程序发送数据 最近有可能要做一个项目.在项目中有这么一个功能,在A程序中调用B程序,同时在A程序中进行登陆后,要将A程序的登录名和密码自动填充到B程序的登陆对话框中,这样B程序就不需要再输入一次用户名和密码了,简化操作人员的操作.刚好最近闲着没事,就在怎么想怎么去实现.经过两天的折腾,基本上完成了上述功能的实现.下面就把实现方法.过程与大家进行分享. 一.原理 要实现上述功能,需要调用Win API来实现.Win32 API即为Microsoft 32位平台的应用程序编程接口

移动端,多屏幕尺寸高清屏retina屏适配的解决方案

移动端高清.多屏适配方案 背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 首先,选取一款手机的屏幕宽高作为基准(以前是iphone4的320×480,现在更多的是iphone6的375×667). 对于retina屏幕(如: dpr=2),为了达到高清效果,视觉稿的画布大小会是基准的2倍,也就是说像素点个数是原来的4倍(对i

Qt ,mac osx ios x11 高清屏,视网膜的支持

Qt 5.0中添加了对于retina显示的基本支持.即将到来的Qt 5.1中提供了新的API和缺陷修复,对于这一问题进行了改进.Qt 4.8也获得了良好的支持,我们反向移植了一些Qt 5的补丁. 尽管这些实现的努力和Mac以及iOS程序员最为相关,但是来看一看其它平台是如何处理高DPI显示这一问题,也是很有趣的.这里主要有两种方式: 基于DPI缩放--Win32 GDI和KDE.在这种方式中,应用程序在全物理设备分辨率下工作,使用系统提供的一个DPI设定或者缩放因子,用于缩放布局.字体通常会被操

iOS 画板的实现,具有颜色、线宽、橡皮、撤销和清屏功能

完成一个简单的画板,能够实现画板颜色和线宽的选择,以及橡皮功能,撤销前一步的操作,和清屏功能. 效果图: 工程下载:github工程下载链接 主要应用MVC模式进行代码架构,每一部分的代码实现思路在各部分的代码前面. Controller 控制器实现基本思路: 1.添加工具栏和画板 2.ToolView中block的定义,colorBlock,widthBlock就是设置drawView的color:eraseBlock就设置其lineWidth和lineColor的具体值:undoBlock,