投稿

ラベル(ツール)が付いた投稿を表示しています

HSPでWMIの各種情報を取得(実行用スクリプトの生成)

イメージ
1.概要 WMIの名前空間、クラス名とそのクラスに対応したプロパティの一覧および取得したプロパティから 実行用のVBScriptを 自動作成するスクリプトを作成しました。また、実行は、コマンドプロンプトより、cscriptから実行しますが、面倒なので 実行用のスクリプト作成と同時に実行確認が簡単にできるように実行確認用のバッチファイルも同時に作成して出力させています。 2.利用方法 利用方法は、HSPのスクリプトエディタより propgen.hsp を実行します。 クラス名選択用のコンボボックスよりクラス名を選択します。そして、実行ボタンをクリックすれば、カレントディレクリに 3つのファイルが作成されます。 (例)Class Name : Win32_BIOSとした場合 ・Win32_BIOS.txt (クラス名から取得したプロパティリスト) ・Win32_BIOS.vbs (WMI実行用のVBScript) ・Win32_BIOS.bat (上記の実行確認用バッチファイル) 3.ソースコード ソースコードは、下記の通りです。開発言語は、HSP言語(HSP3.51)で作成しています。 WMIの拡張クラスに対応したプロパティ一覧の取得と実行用スクリプト(VBScript)の生成および実行確認用のバッチファイルの生成と出力に 対応しています。 ;***** クラスに対応したプロパティ一覧取得と実行用スクリプトの生成 (propgen.hsp) ***** #packopt type 0 #packopt name "propgen" #packopt runtime "hsprt" #packopt manifest "app.manifest" #packopt icon "sample.ico" #packopt hide 1 #module #deffunc SendVBSSave str VBSName notesel SendVBS@ notesave dir_cur+"¥¥"+VBSName return #global #uselib "kernel32.dll&q

HSPでWMIの各種情報を取得(名前空間、クラス名、プロパティ)

イメージ
1.概要 Windows Management Instrumentation (WMI) は、Windows Driver Modelへの拡張の一種で、システムの構成要素について 情報収集と通知を行うオペレーティングシステムのインタフェースを提供するものです。今回、このWMIをHSPスクリプトにて 名前空間やクラス名およびプロパティなどのリストを取得したいと思います。PowerShellなどの登場で、 WMIについては、ほとんど記事などで情報を目にすることが少なくなったのですが、枯れてしまった技術なのでしょうか? 豊富なクラスが用意されていて、取得できる情報も多岐に渡り便利なインターフェイスだと思うのですが、 バッチ(bat)と同様に古くて便利な技術です。今でもシステム運用管理などの現場においては非常に良く利用されています。 2.ソースコード WMIを利用するに当たっての基本となるラス名の一覧などを取得するソースコードは、下記の通りです。 取得したクラス名を利用して、実行用のスクリプトなどを生成するツールを作成します。 (1)WMIの名前空間を取得するサンプル (namespace.hsp) (2)WMIのWin32拡張クラス名の一覧を取得 (VBScript版) (win32ex.hsp) (3)クラスに対応したプロパティ一覧取得と実行用スクリプトの生成 (propgen.hsp) 筆者の環境で実行した結果、(2)のサンプルで取得できたクラス名は、全部で394個有りました。 (3)の propgen.hsp については、 当ブログの別記事で扱います。 namespace.hsp は、WMIの名前空間を取得するスクリプトです。 実行すると、取得した名前空間を表示したメッセージボックスが表示されます。 筆者の環境で実行して見たところ、18個の名前空間が取得されました。どのように利用するか判りませんが、 システムによっては名前空間の設定が必要なものもあるようです? ;***** WMIの名前空間の取得 (namespace.hsp) ***** newcom objVBsc, "ScriptControl" objVBsc("Language")="VBScript"

HSPでgoogleニューストピックスを取得する

イメージ
1.概要 日常、テレビのワイドショーや報道番組でも色んなニュースを観ますが、ネットをやっていると テレビもあまり観なくなり、世界の様子や世間の話題などに疎くなってしまいます。PCで作業をしていると、時間を忘れて 今、どんなことが起こっているのかさえも分からなくなってきています。今回は、ニュースに関心を持ってもらうために rss配信情報を受信してgoogleのニューストピックスを表示するものを作成して見ました。 rssは、OutLookに設定しておけば、常に最新の情報を取得してきますが、すぐに、いっぱい溜まってしまい 見るのがだんだんうっとおしくなってしまいます。そこで、最新の10件のみを取得して表示するようにしました。 2.利用方法 gnews.exe 起動します。起動と同時にニューストピックスの先頭から10件のタイトル情報を取得して表示します。 更新頻度が頻繁ではないので、最新情報を取得する場合は、手動で更新アイコンボタンをクリックして 取得するようにして下さい。 3.ソースコード ソースコードは下記の通りです。別記事で紹介している「HSPでrss利用して地震情報を取得する」と、ほぼ同じです。 違いは、画面を screen 命令ではなく、 bgscr 命令として作成してある点です。そのため、マウスドラッグで画面を 移動できる処理を加えてあります。プログラムは、HSP言語で作成しています。HSP3には、便利なモジュールが標準で提供されていて、rssを扱うモジュール(mod_rss.as)があります。 そのため、情報を取得する部分の処理が簡単に実装できます。 ;**************************************************************************** ;* ;* google ニュースの取得・表示 (gnews.hsp) ;* ;* <処理の概要> ;* 本プログラムは、googleのニュースRSS配信情報を受信して ;* 最新トップニュースを表示するものである。 ;* ;* 出典: googleニュース RSS配信情報 ;* URL https://news.google.com/news/rss/head

HSPでrss利用して地震情報を取得する

イメージ
1.概要 ネットからの情報取得方法は、色々ありますが、HTMLタグを1つずつ解析して必要な情報を 抜き出す方法や、xmlやjsonなどで提供されていれば、提供ファイルを読み込んで展開する方法があります。 ファイルとして提供されているものは、処理が比較的簡単です。今回は、xmlでrssとして配信されている gooの地震情報を取得して見ます。 2.利用方法 goorss.exe 起動します。使い方は、ただこれだけです。一定時間毎に 受信もできますが、頻繁に地震は発生しないのでタイマー割り込みによる部分は実装していません。 定期的に更新ボタンをクリックして手動で更新して下さい。 2021年3月初旬までは、気象庁のホームページの地震情報をスクレイピングしていましたが、サイトの大幅リニューアルが 行われたため(以前のサイトがなくなった)、取得することができなくなってしまいました。 rssは簡単に取得できて便利なのですが、情報量が少ないためタイトルから該当情報へリンクして確認する方式となります。 3.ソースコード プログラムは、HSP言語で作成しています。HSP3には、便利なモジュールが標準で提供されていて、rssを扱うモジュール(mod_rss.as)があります。 rssload 命令で指定したURLのxmlファイルを受信して、 foreach ループで 内容を取得していきます。表示部分は、HTMLタグを生成して行っています。震源地を表示するために最初の1件目で震源地を表す画像パスを取得して 画像を表示し、本日分は青色のリンクとし、本日以外はグレー表示としています。 ;**************************************************************************** ;* ;* goo rss地震情報の取得・表示 (goorss.hsp) Ver1.0 ;* ;* <処理の概要> ;* 本プログラムは、goo rss地震配信情報を受信して表示するものである。 ;* ;* 出典: goo天気 RSS配信情報 ;* URL http://weather.goo.ne.jp/earthquake/index.rdf ;* ;* ;

HSPでコマンドプロンプトを制御する

イメージ
1.概要 最近は、Excel VBAやPythonなどによる自動化というキーワードを良く耳にしますが、昔からある自動化で最も安定性が あり、比較的単純な手順の記述とコマンド発行といったコマンドプロンプトによる操作およびバッチファイルによる自動処理 があります。システムの運用管理者やネットワーク管理者の人達も多く利用されています。 筆者も一時期は、良く利用していましたがGUIの操作に慣れ過ぎて最近は利用する機会も減ってきています。 今回は、HSP言語によるコマンドプロンプトを操作して外部から文字列(コマンド)を送信する方法を模索して見たいと思います。 2.コマンドプロンプトに文字列送信 コマンドプロンプトにGUI画面上からキー入力された文字列を送信する方法について説明します。 まず、概略の処理の流れを整理します。 (1) コマンドプロンプトを起動させる。 ただし、環境依存を無くすため環境変数 'comspec' より取得したパス名を、 exec 命令のp1パラメータとして渡す。 (2) 入力ボックス等より入力したコマンド( テキスト文字列 )をクリップボードにコピーする。 (3) コマンドプロンプト画面をアクティブにする。 (4) クリップボードよりコマンドを貼り付ける。 整理すると、これらの処理を実現させるためには、 ・環境変数'comspec'よりパス名を取得する処理 ・クリップボードにテキスト文字列をコピーする処理 ・任意の画面をアクティブにする処理 ・クリップボードよりテキスト文字列を貼り付ける処理 となります。ここで、一番難しいのはコンソールに対してクリップボードよりテキスト文字列を貼り付ける処理です。 [ ALT ]+[ SP ]+[ e ]+[ p ]+[ Enter ] キーという操作を keybd_event APIを 利用 して送り、貼り付け処理をしても良いのですが、メニューの操作をエミュレートするので、 [ ALT ]+[ SP ] で メニュー がポップアップし、次に [ e ] で編集がクリックされ、更に [ p ]+[ Enter ] キーといった流れとなって メニューの 操作が丸見えとなります。もちろん、動作的にも遅くスマートではありません。 コマンド

複数のファイルをマージする

イメージ
1.概要 パソコンで色んなデータを扱う場合、複数ファイルの連結(マージ)する作業は比較的多いと思います。 筆者の場合は、Excel VBAやPythonなどで作成したスクレイピングプログラムでWeb上から収集したデータを CSVなどに出力して加工する場合も多いです。このようなデータを蓄積して1つのファイルに連結(マージ)後、 DB(データベース)を新規作成して、初期インポート用のファイルとして利用しています。 定期的に決まったフォーマットで同じ作業のものは、簡単なバッチファイル(bat)を作って実行させています。 バッチファイルは、 WMI (Windows Management Instrumentation)や Power Shell の登場で枯れた技術のように 思われがちですが、企業のIT部門などでは、まだまだ、広く利用されていて現役で活躍しています。 手軽で簡単であり、高速性を求めなければ便利ですね。ただ、会社なとでバッチファイルを他の人に使わせようとした時に、 マージ対象とするファイルやディレクリ―が変更となった場合やマージ後の出力ファイル名が他のシステムと 関連していたりすると、当然変更が必要となるため、その都度、作成者が面倒を見ることになります。 そのような事情から、 他の人が使うことを前提とした場合は、GUIで操作画面がある実行形式(exe)のツール があった方が便利 です。今回は、筆者が作成したマージツールを紹介します。 2.ファイルマージツール 2-1.ソースコード 概要で説明しましたが、バッチファイルによる簡単なサンプルを載せておきます。下記のサンプルですが、 必要に応じて、9行目のタイトル名と17行目の処理対象ファイルの拡張子(ワイルドカード)とマージ後の出力ファイル名 を適時修正して利用して下さい。マージ対象ファイルが格納されているディレクトリーは指定していませんので、 追加するか、同一ディレクリ―にバッチファイルを置いて実行させて下さい。どこにでもある簡単なものですみません。 雛形として利用して頂けたらと思います。バッチの命令としては、 type命令 か copy命令 で同等の処理ができますが、 copy命令 の方が やや高速に処理 できるようです。 @echo off setlocal cd /d %~dp0

TOP