让groovy控制台程序拥有彩色输出"面孔"

 结合JNA的使用可以让groovy的控制台程序拥有linux终端一般的彩色数据效果。需要jna.jar包放到classpath可以找到的路径下就可以了。

  1. import com.sun.jna.win32.StdCallLibrary;
  2. import com.sun.jna.*;
  3. public interface Kernel32 extends StdCallLibrary {
  4.    Kernel32 INSTANCE = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class);
  5.    int GetStdHandle(int stdHand);
  6.    boolean SetConsoleTextAttribute(int hConsoleOutput, int textAtt);
  7. }
  8. def out={color,str->
  9.     int ptr= Kernel32.INSTANCE.GetStdHandle(-11);
  10.     Kernel32.INSTANCE.SetConsoleTextAttribute(ptr, color);
  11.     print(str);
  12.     Kernel32.INSTANCE.SetConsoleTextAttribute(ptr, 3);
  13. }
  14. out (13,"windows ?"+ Platform.isWindows());
  15. out (14,"X11 ?"+ Platform.isX11());

运行一下就可以看到彩色数据的效果了。其中color的参数的具体颜色,可以打开一个控制台然后查看属性

黑色 是数字 0  以此类推

最后我再这个基础上改了一个数据比对程序,下面是效果图

时间: 2024-10-30 13:35:45

让groovy控制台程序拥有彩色输出"面孔"的相关文章

c++-vc2008平台写的控制台程序,我把输出界面点击属性后设为全屏了,怎么退出全屏啊?点击Esc是不行

问题描述 vc2008平台写的控制台程序,我把输出界面点击属性后设为全屏了,怎么退出全屏啊?点击Esc是不行 vc2008平台写的控制台程序,我把输出界面点击属性后设为全屏了,怎么退出全屏啊?点击Esc是不行 解决方案 ctrl+enter切换回来. 解决方案二: 你查查快捷键,,,, 解决方案三: 你写的程序,是不是死循环了,无法退出呢? 如果无法退回到命令行提示符,只能是这个原因.

往C#的控制台程序中输出文字的问题。

问题描述 我现在在开发一个写日志的库,打算做成一个dll文件,用到这个库的一些应用是控制台程序,如何通过调用dll中的方法来向控制台输出数据呢?输出文字还不复杂,传个console.out给dll应该就可以了,但是如何来控制字符输出的颜色呢?.net中可以获取console的句柄来传个dll来控制控制台吗?以前在vb中做过类似的工作,是用api来实现的,dll中直接使用api函数来控制控制台,在C#中也要用api来实现吗?请高手指教,谢谢

编写自己的IDE:如何在图形界面中实时捕获控制台程序的标准输出

编写自己的"IDE"-- 如何在图形界面中实时捕获控制台程序的标准输出. IDE是集成开发环境(Integrated Development Environment)的简称.印象里有很多出色的IDE,比如JBuilder和Kylix,比如Visual Studio.不知大家是否留意过,大多数IDE本身只提供代码编辑.工程管理等人机交互功能,我们在IDE中编译代码.调试程序时,IDE需要调用命令行的编译器.调试器完成相应的操作.例如,使用Visual Studio编译C++程序时,我们会

Windows中控制台程序的全屏模式开关

当你的程序以控制台方式运行时,按下ALT+ENTER可以将屏幕变成全屏模式.但如何在程序中用Win32 API函数来实现这个功能呢?据我所知,微软没有提供有关这方面的任何文档.但是,当用户按下ALT+ENTER时,Windows 9x用如下特殊的加速键ID发送WM_COMMAND消息到控制台窗口. #define ID_SWITCH_CONSOLEMODE 0xE00F 这个加速键ID没有对外公开,所以你在Win32 API的有关文档中找不到关于ID_SWITCH_CONSOLEMODE的内容.

windows控制台程序自动重启

有时控制台程序由于日志更改或其他原因需要定时重启,在Linux平台有很多工具可以实现,但是windows命令有限,实现起来有些麻烦.最近有个项目需要处理这种情况,搜索了很久,并写了一些代码才解决.程序为java编写,要重启需要解决两个问题--杀掉java进程和重启启动程序.这里还有一个隐含的问题,如果杀掉进程后马上启动新的程序,有的时候会出现两个后果交叉的情况,虽然程序是先调用了杀进程再启动,但是启动的进程又被杀掉了.为了避免这种情况出现,在两个操作之间需要延时一会.这样,问题就归结为:1 杀掉

重温delphi之控制台程序:Hello World!

原文:重温delphi之控制台程序:Hello World! 这二天用c#开发ActiveX时,发现不管怎么弄,c#就是没办法生成ocx的纯正activeX控件,而且还要强迫用户安装巨大的.net framework(我只是想做一个简单截屏功能的activeX整合到silverlight聊天室中),于是想起了曾经用过一年的delphi,虽然时过境迁,现在早以是.net的天下,但是不可否认,delphi仍是win32原生程序最佳的开发工具之一.  关于Delphi的语法学习,可以参见这个chm文档

零基础易语言入门教程(三)之了解控制台程序_易语言

易语言简介: 易语言是一门以中文作为程序代码编程语言.以"易"著称.创始人为吴涛.早期版本的名字为E语言.易语言最早的版本的发布可追溯至2000年9月11日.创造易语言的初衷是进行用中文来编写程序的实践.从2000年至今,易语言已经发展到一定的规模,功能上.用户数量上都十分可观. 易语言和其它编程语言一样都有后台程序,它也不一定必须是窗口程序的了,下面小编带大家了解易语言的控制台程序. 方法和步骤如下所示: 1.延时命令: 首先学习一个第一个命令,该命令可将其脚本界面延时.1000毫秒

控制台程序小工具:输入密码、指令指派、自动补全与帮助集成

一.简介 控制台程序小巧.便捷,开发起来简单.一般,我写项目时习惯在原定客户端之外,写一个控制台的客户端.这样有几个好处: (1)开发量较Web或GUI少得多. (2)运行起来简单,占有资源很少. (3)便于跟踪程序的运行.比如,用 log4net 记录日志的话,将appender-ref设置成ConsoleAppender,可以清楚看清系统运行轨迹,在使用nhibernate/activerecord开发时尤其方便. (4)当为同一个系统开发两种不同的UI时,会自觉的做好分层,这样可以使系统的

c语言-C语言题程序第二个输出结果是124还是125呢?求大侠帮忙解释

问题描述 C语言题程序第二个输出结果是124还是125呢?求大侠帮忙解释 #includeint change(int *data){ return (*data)++;}main(){ int data=123; change(&data); printf(""%ddata); data=change(&data); printf(""%d""data); printf(""n"");}V