投稿

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

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

イメージ
1.概要 HSP3やExcel VBAによるCOMオブジェクトの活用事例としての第四弾です。 今回は、前回記事に引き続き、FileSystemObjectによるドライブ情報の取得、ファイルのサイズや属性等の詳細情報を取得して見ます。 また、ファイル関連の情報ばかりでは、つまらないので、少し変わった所として、XMLHTTPによるサーバーからGMT(グリニッジ標準時)を取得 するを取り上げて見ました。COMオブジェクトについては、まだまだ紹介しきれない部分も多々あるのですが、 今回の記事で終わりです。 2.サンプル 2-1.ドライブ情報を取得する ドライブの情報の取得には、FileSystemObjectを使います。Driveオブジェクトはドライブを表すオブジェクトで GetDriveメソッド、Drivesプロパティ、FileオブジェクトとFolderオブジェクトのDriveプロパティから取得でき ます。Driveオブジェクトには以下の12種類のプロパティがります。 ドライブ名、ドライブの種類、ディスクの空きスペースの大きさなどが取得できます。 ドライブ情報取得プロパティ プロパティ 機 能  AvailableSpace  利用可能な空きスペースの大きさを取得する  DriveLetter  ドライブ名(「C」など)を取得する  DriveType  ドライブの種類を取得する  FileSystem  ドライブのファイルシステムを取得する  FreeSpace  利用可能な空きスペースの大きさを取得する  AvailableSpace  ディスクの空きスペースの大きさを取得する  IsRead  ドライブが準備できているかどうかを取得する  Path  コロン付きのドライブ名を取得する  RootFolder  プロパティルートフォルダを表すFolderオブジェクトを取得する  SerialNumber  ディスクのシリアルナンバーを取得する  ShareName  ネットワーク・ドライブの共有名を取得する  TotalSize  ディスクの総容量を取

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

イメージ
1.概要 HSP3やExcel VBAによるCOMオブジェクトの活用事例としての第三弾です。 今回は、前回記事に引き続き、日付と時刻やタスクバーのプロパティを表示させます。 また、FileSystemObjectによるファイルやドライブの詳細情報の取得についても取り上げて見ます。 FileSystemObjectはメソッドやパラメータが豊富でファイル操作に係わることはたいていのことはできますが、 HSPやExcel自体もファイル操作命令や関数が備わっているため、実際の実装については、実用面からHSPやExcel標準の関数等 を利用した方が良いと思います。 2.サンプル 2-1.日付と時刻のプロパティを表示させる タスクトレイにある時計の日付と時刻の調整から起動される日付と時刻のプロパティをプ ログラム上から表示します。 WSHでは、シェルのSetTimeメソッドという便利なもが提供さ れています。 HSPでは、 newcom命令でShellApp変数とWshShell変数を COMオブジェクト型として初期化したのち、シェルのSetTime メソッドで日付と時刻のプロ パティを表示起動させます。 ;***** 日付と時刻のプロパティを表示 ***** newcom ShellApp, "Shell.Application" newcom WshShell, "WScript.Shell" ;▼日付と時刻のプロパティ ShellApp->"SetTime" wait 100 ret = WshShell("AppActivate", "日付と時刻") delcom WshShell delcom ShellApp stop '***** 日付と時刻のプロパティを表示 ***** Sub TimeDateprop() Dim wsh, ShellApp As Object Set wsh = CreateObject("Wscript.Shell") Set ShellApp = CreateObject("Shell.Application&

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

イメージ
1.概要 HSP3やExcel VBAによるCOMオブジェクトの活用事例としての第二弾です。 今回は、前回記事に引き続き、外部ファイルを任意の実行時モードで起動、ディレクトリ名を指定してエクスプローラを起動 するなどのサンプルを作成して紹介します。特殊フォルダのパス定義定数は0~21まであり、1つ1つのパスを取得・確認するために ボタンを配置して確認するようにしていますが、HSPとExcel VBAでは、等価の処理として記述するためにクリックしたボタン のボタンID(番号)で判別するようにしています。 2.サンプル 2-1.外部ファイルを任意の実行時モードで起動させる HSPの標準命令では、exec命令という実行時のモードに応じたアプリケーションの起動ができる便利な命令があります。 これは、外部ファイルを指定された実行時のモードで起動させることができるものです。モードは次のものが指定できます。 モード0 : HSPノーマル実行 モード2 : 最小化モードで実行 モード16 : 関連付けされたアプリケーションを実行 モード32 : 指定したファイルを印刷する このモードは、モード値を組合せて指定することもできますが、最大化した状態での起動や非表示での起動といったものができません。 ここでは、WSHの Runメソッドを利用して様々な実行時制御を実現させます。 また、プログラムの実行が終了するまでスクリプトを待機させるかどうかを示すブール値が指定できます。 HSPでは、newcom命令でWshShell変数をCOMオブジェクト型として初期化したのち、 Runメソッドで実行するコマンド ラインを示す文字列値である実行ファイルのファイル名を含む渡すべきパラメータを指定します。 そして、実行時モードの定数と、実行終了待ちをするかどうかのブール値を指定しています。 Runメソッドで指定できる実行時モードは、全部で11種類ありますが、サンプルにおいては主な6種類のモードを定義してあります。 実際の動作としては、メモ帳 (notepad.exe)を最大化状態で、かつ、終了実行待ちの状態で起動させます。 Runメソッドによる実行モード モード 意 味 0  タスクバーには表示されません。

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 ;* ;* ;

TOP