最近、コンソール プログラムを作成しました。このプログラムの機能は、データベースから WORD ファイルにデータをエクスポートする (テーブル名を指定する) というものです。テスト中に、ユーザーがエクスポートしているときに判明しました。データベーステーブルを作成した後、データを別のテーブルにエクスポートしたい場合は、プログラムを再実行する必要がありますが、これは明らかに良くありません。ただし、プログラム内でループや goto ステートメントを使用して実装すると、コンソール内のテキストが多すぎて見栄えが悪くなります。そこで私は最終的に、データベース テーブルのインポートが完了した後にコンソールで画面を自動的にクリアして、次のデータベース テーブルをエクスポートできないかどうかを考えました。その後、長い間オンラインで検索しましたが、満足のいく答えが見つかりませんでした。オンラインで「画面をクリアする」という方法は、改行を入力することであり、これでは画面がまったくクリアされないと思います。突然、画面を消去する DLL を C++ で作成することを思いつきました。結果は非常に満足のいくものでした。以下では、コンソールの画面を段階的にクリアするために C# 言語を実装します。
(1) VS2005 を開き、CLS という名前の新しい C++ クラス ライブラリ プロジェクトを作成します。
(2) CLS.h ファイルを開き、クラス名を「CLS」に変更します。
(3) CLS.cpp ファイルを開き、その中に「windows.h」ファイルを導入します。
// これはメインの DLL ファイルです。
#include "stdafx.h"
#include "windows.h"
#include "CLS.h"
(4) CLSクラスに静的メソッドを追加(アクセス属性はpublic)
パブリック参照クラス CLS
{
公共:
静的 void cls()
{
システム("cls");
}
};
(5) 最後にプロジェクト全体をコンパイルし、CLS/debug/ フォルダー内の CLS.dll を C# プロジェクトに導入します。
(6) 画面をクリアする必要がある場合は、CLS.cls() を呼び出すだけです。一時停止などの機能も上記と同様の方法で実装できます。
なぜこのようなことが可能なのでしょうか? .Net FrameWork を勉強したことがある人ならよく理解できると思います。C++、C、VB、C# 言語に関係なく、最終的には IL (中間言語) 言語が生成されるため、どのプログラムが上記の言語で書かれていても、相互運用可能にすることができます。
もし上に書いてあることが間違っていたら、教えてください!ブログを始めたばかりなので、学ぶことがたくさんあります。
http://www.cnblogs.com/blueskybcl/archive/2010/04/24/1719171.html