2008-08-01から1ヶ月間の記事一覧

Java Native Interface(2-2)

Javawをコンパイルした後に、JNI用にヘッダファイルを生成します。 # javah wmi/WmiCall.class で、wmi_WmiCall.hファイルが生成されます。 /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class wmi_WmiCall */ #ifndef </jni.h>…

Java Native Interface(2)

プロパティの取得までは比較的簡単だったので、欲張ってデータを取ってきて保存するところまで作っちゃいました。WmiCall.java package wmi; public class WmiCall { static { System.loadLibrary("jniwmi"); classinit(); } public WmiCall() { } private s…

Java Native Interface

今日はWMIライブラリーをJavaからも利用できるようにJNIを使ってクラスを作ってみたいと思います。 ・・・本当はこっちがしたかったのでWMIライブラリを作ってました。まず、WmiCallに相当するJavaクラスの作成から。WmiCall.java package wmi; public class…

Windows Management Instrumentation (4-4)

Windows Management Instrumentation (4-3) の処理では、2つ目のアクセス処理 resulta = wmi.access(wql); を実行した時にAドライブをシークしてしまいました。 そこで、かなり邪道ですが、幾つかのメソッドを修正・追加しました。wmi.hの WmiCallクラスに …

Windows Management Instrumentation (4-3)

以下のような処理に変更後テストをするとエラーが発生。 void Win32_OperatingSystem() { WmiResult resulta = wmi.access(_T("SELECT * FROM Win32_OperatingSystem")); if (resulta.items() == 0) { String msg = wmi.getErrorMessage(); return; } COUT <…

Windows Management Instrumentation (4-2)

処理結果の中に漢字が含まれていたケース("SELECT * FROM Win32_LogicalDisk")の実行時に文字化けしてしまったので、 String WmiResult::getString(VARIANT *value); メソッドを以下のように修正しました。 wmi.cpp /* * VARIANTデータを文字列値に変換し取…

Windows Management Instrumentation (4)

WQL文を作成する時に、色々とパラメータを設定したいケースに対応するため、メソッドを作りました。wmi.hに、 static String createSelect(_TCHAR *format, ...); を追加して wmi.cppに /* * 文字列を整形してWQL文を構築する * param : パラメータ * * retu…

Windows Management Instrumentation (3)

前回作ったWmiResultクラスを整理してみました。 何となくさまになったかな・・・。wmi.hのWmiResult定義を typedef vector<long> long_vector; typedef vector<double> double_vector; typedef vector<bool> bool_vector; typedef vector<String> string_vector; typedef map<String, size_t> property_s</string,></string></bool></double></long>…

Windows Management Instrumentation (2)

WmiCallの処理結果をAPIネイティブの結果(IEnumWbemClassObject)ではなく、WmiResultクラスに格納するように修正しました。wmi.hの定義で IEnumWbemClassObject *access(String select_stmt); を WmiResult access(String select_stmt, bool with_valus = tr…

Windows Management Instrumentation

システム情報を収集するライブラリを作りたくでWMIを使おうとしてるんですが、呼び出しの手順とかデータの取得手順が面倒なんで、WMIを処理するクラスを作ってみました。 今日はaccessした結果の行情報を表示するまでのところです。wmi.hファイル class WmiC…

始めまして

色んなプログラムを書いてきてますが、出来上がるとすぐ忘れちゃうんで、備忘録的にその時その時のプログラムをアップしようかなぁ・・・、何て気分で開設しました。 これからよろしくです。