テクセル
Rubyコンソールライブラリ(Windows用)

wincons.rbは、Windows上で動作するRuby用コンソールライブラリです。
動作確認を行ったRubyのバージョン ruby 2.5.3p105 RubyInstaller x86
wincons.rbのダウンロード(wincons_v240.7z)

Consoleクラス コンソール用クラスです。

アクセサ

hConWndHndl
コンソールウインドウのハンドル 取得のみ可

クラスメソッド

cls
コンソールスクリーンをクリアします。
戻り値
正常時:0以外の値 異常時:0
screen(width,height)
コンソールスクリーンのサイズを指定します。
width
コンソールスクリーンの幅 キャラクタ単位
height
コンソールスクリーンの高さ キャラクタ単位
戻り値
正常時:0以外の値 異常時:0
width,heightは、設定されているコンソールバッファ値よりも小さくできません。
showWindow(icmnd)
コンソールウィンドウの表示状態を設定します。
icmnd
表示状態
定数 内容
SW_MAXIMIZE ウィンドウを最大化します。
SW_MINIMIZE ウィンドウを最小化し、Z オーダーが次のトップレベルウィンドウをアクティブにします。
SW_SHOWNORMAL ウィンドウを直前の位置とサイズで表示します。ウィンドウをアクティブにします。
SW_HIDE ウィンドウを非表示にし、他のウィンドウをアクティブにします。
SW_SHOW ウィンドウをアクティブにして、現在の位置とサイズで表示します。
戻り値
ウィンドウが以前から表示されていた場合は、0 以外の値
ウィンドウが以前は非表示だった場合は、0
getCursorInfo
カーソルの状態を取得します。
戻り値
正常時:カーソルの大きさ、可視/不可視状態(setCursorInfo参照) 異常時:nil,nil
setCursorInfo(size,visible)
カーソルの状態を設定します。
size
カーソルの大きさ(高さ)で1~100の値
visible
カーソル可視/不可視の指定 1:可視、0:不可視
戻り値
正常時:0以外の値 異常時:0
getConsoleTitle
現在のウィンドウタイトルを取得します。
戻り値
正常時:ウィンドウタイトルバーに表示される文字列 異常時:nil
setConsoleTitle(stitle)
現在のウィンドウタイトルを変更します。
stitle
コンソールウィンドウのタイトルバーに表示する文字列を指定します。文字コードは、シフトJISまたは、UTF-8です。
戻り値
正常時:0以外の値 異常時:0
locate(x,y)
コンソールスクリーンのカーソル位置を指定します。座標はコンソールスクリーン左上が原点(0,0)となります。
x
コンソールスクリーンの列 キャラクタ単位 0~
y
コンソールスクリーンの行 キャラクタ単位 0~
戻り値
正常時:0以外の値 異常時:0
color(fcolor,bcolor)
文字の色と背景色を指定します。
fcolor
文字色を指定します。BLACK,BLUE,RED,PURPLE,GREEN,AQUA,YELLOW,WHITEが指定出来ます。 INTENSITYは、各色とORで指定します。
bcolor
文字の背景色を指定します。BLACK,BLUE,RED,PURPLE,GREEN,AQUA,YELLOW,WHITEが指定出来ます。 INTENSITYは、各色とORで指定します。指定しない時は、前回指定値が使用されます。
戻り値
正常時:0以外の値 異常時:0
beep(ifreq,iduration)
ビープ音を鳴らします。
ifreq
音の周波数。単位:ヘルツ
iduration
音の再生時間。単位:ミリ秒
戻り値
正常時:0以外の値 異常時:0
cprint(cmes)
カーソル位置に文字を表示します。
cmes
表示文字を指定します。文字コードは、シフトJISまたは、UTF-8です。
戻り値
正常時:0以外の値 異常時:0
keyinput
キーボード入力を行います。キャリッジリターン(Enterキー)が入力されるまで制御は戻りません。
戻り値
キー入力文字 文字コードは、シフトJISまたは、UTF-8です。
inkey
キー入力データを読み取ります。
戻り値
4変数(ca,ikcode,ikstate,bi)よりなります。
ca 文字または漢字(シフトJISまたは、UTF-8コード) キー入力なしまたは該当文字がない時はnil
ikcode 仮想キーコード 該当コードなしの時は、0
ikstate コントロールキーの状態 ビット対応
0ビット RIGHT_ALT_PRESSED
1ビット LEFT_ALT_PRESSED
2ビット RIGHT_CTRL_PRESSED
3ビット LEFT_CTRL_PRESSED
4ビット SHIFT_PRESSED
5ビット NUMLOCK_ON
6ビット SCROLLLOCK_ON
7ビット CAPSLOCK_ON
8ビット ENHANCED_KEY
bi 正常時:0以外の値 異常時:0

インスタンスの作成

cons1 = Console.new(__ENCODING__)

引数に文字のエンコーディング「__ENCODING__」を指定します。 シフトJIS(magic  comment:「Windows-31j」,「shift_jis」)とUTF-8が使用出来ます。

使用例


# -*- coding: utf-8 -*-
require "./wincons"

cons = Console.new(__ENCODING__)

icurs,icurv = cons.getCursorInfo       #カーソル状態取得
cons.setCursorInfo(50,1)
cons.setConsoleTitle("Rubyコンソールのテスト")
cons.cls
cons.screen(80,24)
cons.locate(1,0)
cons.color(Console::AQUA | Console::INTENSITY)
cons.cprint("Rubyコンソールのテスト")
cons.locate(2,2)
cons.color(Console::AQUA, Console::BLACK)
cons.cprint("Ruby RUBY ruby")
cons.locate(2,3)
cons.color(Console::AQUA | Console::INTENSITY)
cons.cprint("Ruby RUBY ruby")
cons.locate(2,4)
cons.color(Console::GREEN)
cons.cprint("Ruby RUBY ruby")
cons.locate(2,5)
cons.color(Console::GREEN | Console::INTENSITY)
cons.cprint("Ruby RUBY ruby")

cons.locate(25,2)
cons.color(Console::WHITE, Console::RED)
cons.cprint("TEXCELL TEXCELL texcell")
cons.locate(25,3)
cons.color(Console::WHITE | Console::INTENSITY, Console::RED | Console::INTENSITY)
cons.cprint("TEXCELL TEXCELL texcell")
cons.locate(25,4)
cons.color(Console::RED, Console::WHITE)
cons.cprint("TEXCELL TEXCELL texcell")
cons.locate(25,5)
cons.color(Console::RED | Console::INTENSITY, Console::WHITE | Console::INTENSITY)
cons.cprint("TEXCELL TEXCELL texcell")

cons.locate(60,2)
cons.color(Console::YELLOW | Console::INTENSITY, Console::BLACK)
cons.cprint("日本ニホン123")
cons.locate(60,3)
cons.cprint("記号:☀☁☂☃")

sleep 2
cons.showWindow(Console::SW_MINIMIZE)       #最小化
sleep 2
cons.showWindow(Console::SW_SHOWNORMAL)     #元に戻す

cons.color(Console::WHITE | Console::INTENSITY, Console::BLACK)
cons.locate(20, 8)
cons.cprint("「Q」キー入力で終了します。")

while true do
#   ca,ikcode,ikstate,bi = cons.inkey
   ca = cons.inkey
   if ca[0] == "q" || ca[0] == "Q"
      cons.color(Console::WHITE, Console::BLACK)
      break
   end
   sleep 0.01
end
cons.setCursorInfo(icurs, icurv)      #カーソル状態戻し
   

サンプルソフト実行結果

サンプルソフト実行結果

履歴

2019.03 Ver.2.40 グラフィック、マウス処理削除
2016.08 Ver.2.31 グラフィック処理追加,SetTextColor,SetBkColor,SetBkMode,TextOut
2014.05 Ver.2.30 グラフィック処理追加,Line,Rectangle,Ellipse
2013.06 Ver.2.27 アクセサ「hConWndHndl」追加
2013.05 Ver.2.26 Ruby1.9用不具合対策
2013.04 Ver.2.25 メソッド「beep」追加、Ruby2.0対応
2012.12 Ver.2.24 メソッド「mouseMode」、「mouse」追加
2012.10 Ver.2.23 メソッド「showWindow」追加
2012.08 Ver.2.22 メソッド「getCursorInfo」、「setCursorInfo」追加
2012.03 Ver.2.21 magic  comment:「Windows-31j」に対応。メソッド「screen」の不具合対策
2011.08 Ver.2.20 メソッド「getConsoleTitle」、「setConsoleTitle」追加
2011.07 Ver.2.10 メソッド「keyinput」追加、メソッド「keyin」を「inkey」に変更
2011.06 Ver.2.00 ライブラリ「Win32api」を「dl/import」に変更、utf8対応
2011.05 Ver.1.10 Ruby 1.9対応
2005.05 Ver.1.00
Rubyユーティリティ
©2011-2019 TEXCELL CORPORATION
テクセル株式会社