投稿

HSPとExcel VBAで情報取得 (その1)

イメージ
1.概要 クライアント環境で保持されている固有情報の取得や特殊フォルダーのパスの取得、ウィンドウを任意の表示モードで整列など WScript.ShellのメソッドとShell.Applicationメソッドの各プロパティによるパラメータを渡して 情報の取得・参照や操作を行います。WScript.Shellのメソッドは、ショートカットの作成やアプリケーションの実行、 レジストリの操作などの機能が提供されています。今回は、上記の機能についてHSPとExcel VBAでサンプルを作成して 比較して行きたいと思います。 2.サンプル 2-1.クライアント環境で保持されている固有情報を取得する 環境変数とは、OSのシェルなどに設定されているシステムの各種情報を保持している文字列変数のことです。 これらの情報は設定や変更、追加が可能です。プログラムから参照するためにクライアントの固有情報として 取得しておくと 利用環境に左右されにくい処理を行なうことが可能となります。 取得方法ですが、 WSHのExpandEnvironmentStringsメソッドを使います。 このメソッドは、PROCESS 環境領域に定義された環境変数のみを展開し、環境変数名を "%" で囲むことによって 値を取得することができます。 また、環境変数名は、大文字と小文字は区別されません。 環境変数%OS%ですが、HSPおよびExcel VBAでもWindows NTと取得されますので、Windows APIなど別の方法で 取得するしかありません。 ;***** 環境変数の取得 ***** newcom WshShell, "WScript.Shell" sdim Env,6,512 Env(0) = WshShell("ExpandEnvironmentStrings","comspec : %COMSPEC%") Env(1) = WshShell("ExpandEnvironmentStrings","SystemRoot : %SystemRoot%") Env(2) = WshShell("ExpandEnvir

HSPとExcel VBAで情報取得 (COMオブジェクトの活用)

イメージ
1.概要 HSP3やExcel VBAでは、COM(コンポーネント・オブジェクト・モデル)が操作できます。 比較的簡単なパラメータを与えるだけで、Windows が持つシステムコンポーネントやフリーで公開されている 各種コンポーネントの機能を利用することでき ます。 HSP3が提供している命令群では、 COMオブジェクトの作成とインターフェースの取得、インターフェース ポインタからのメソッドの呼び出しなど豊富なオブジェクトアクセ ス手段が 提供されています。Excelにおいても、同じです。今回は、HSP3とExcel VBAを比較しながら 機能の確認をするためにCOM操作の入門として比較的移植や理解のしやすい WSH (Windows Script Host(以下WSH) を取り上げて見ました。WSHは、Windowsが標準でサポートするスクリプト環境で、テキストベースのスクリプトを 記述することで、従来のバッチに代わるものとして、GUI環境に頼らずにWindows環境でさ まざまな処理を実行できます。 尚、 具体的なサンプル例などについては、何回かに分けて紹介していく予定 です。 2.WSH(VBScript)の活用法について WSHではスクリプト言語として、VBライクな言語であるVBScriptや、 JavaScriptライクなJScriptを標準で利用できます。 どちらのスクリプト言語を利用しても機能的には大き な違いはありません。HSP3からは、次のCOM関連命令を使って制御します。 HSP3のCOMオブジェクト操作関連命令 No. 命令 役割 1  newcom命令  COMオブジェクト型変数の新規作成 2  delcom命令  COMオブジェクト型変数の破棄 3  comres命令  メソッド返値代入変数を設定する 4  mcall命令  メソッドの呼び出し 5  comevent命令  COMイベントの取得開始 6  querycom命令  COMオブジェクト型変数の作成 7  axobj命令  ActiveXコントロールの配置 8  sarrayconv命令  Variant型との一括変換を行なう

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.概要 ブラウザでネットサーフィンしているとお気に入りが溜まって、だんだん整理したくなくなります。大きな地震や大雨など 日々の天気予報なども気にして、気象関連などのサイトも良く閲覧しています。今回、防災関連に特化したカテゴリでの 整理したツリー形式のリンク集を作って、いざという時に素早く情報が取得できるように備えます。 2.利用方法 eqlink.exe を起動します。3つのカテゴリである「防災」、「交通機関」、「河川防災」のボタンで リンク一覧を切替ます。リンクデータは、データベース化しており、ボタンクリック毎にツリー形式のデータIDで親、子、孫を判別してテーブルより読み込んでいます。 また、終了時にウィンドウ位置を保存して、起動時に反映させています。 リンク集データは、だいぶ以前に作ってメンテしていないので、この機会にメンテして最新としています。 3.ソースコード ソースコードは、HSPスクリプト言語で作成しています。ツリーメニューは、JavaScriptで記述していて、データベースのテーブルより リンク名とURLをコードに挿入しています。バッファにソースコードを生成して格納後、一時ファイルを作成して起動させています。 終了時にウィンドウの位置を設定情報としてデータベースに書き込み、一時ファイルを削除して終了します。 ;**************************************************************************** ;* ;* 防災関連リンク (eqlink.hsp) Ver1.1 ;* ;* <処理の概要> ;* 本プログラムは、防災関連リンク集をJavascriptを利用したツリーメニュー ;* 形式をIEオブジェクトを利用して表示するものである。 ;* リンクの作成は、階層化したデータベースのメニューテーブルより展開し ;* ており、メニューテーブルをメンテすれば、カスタマイズ可能である。 ;* ;**************************************************************************** #include "sqlele.hsp&quo

TOP