2017年4月22日土曜日

HTML5でGetObjectを利用する方法

msdnに記載されている通り、GetObject関数はIE9(標準モード)以降ではサポートされていません。 → MSDN:GetObject関数

HTML5を利用するためにHTAでレンダリングモードを変更するとGetObjectが使えなくなり、WMIからデータを取得したりすることができません。
HTML5を利用しつつGetObjectを使うためのサンプルを作成しました。

2017年4月21日金曜日

循環参照や参照の重複に対応したJSON化関数

先日公開したJSON化関数では、循環参照を含むオブジェクトを与えられると無限ループにはまってしまう問題がありました。また、複数のプロパティから単一のオブジェクトを参照しているケースではプロパティごとに異なるオブジェクトとして扱ってしまう問題がありました。

上記の問題を解消する方法を思いつき、サンプルを作成したので公開します。

2017年4月20日木曜日

排他アクセス対象ファイルのひな形

先日公開した関数を使えば任意のファイルに対して排他的書き込みなどができます。
ただし、データそのものはただのテキストファイルですし関数も同じルールに従う関数同士でのみ仕組みが成り立つ内容になっています。

数年前に作成したプログラムで扱っているファイルに対して新たにプログラムを作成することになったのですが、排他的書き込みをコントロールしているプログラムファイルの所在が分からず(でもどこかで使われてはいる)、どういうルールだったか失念してしまい対応に苦慮しました。

そんな事が再発しないように、テキストファイル自体に書き込み用関数を入れて、いつどんなプログラムからでもその関数を使って書き込めば排他的書き込みが成立する、という雛形を作成しました。

2017年4月19日水曜日

リロードじゃなければウィンドウサイズを変更する

F5キーを押すとHTAのウィンドウを閉じることなく再起動させることができます。
便利です。

resizeToという関数を使うとウィンドウのサイズを変更できます。
HTAは何も指定しなければモニタサイズに応じて大きく表示されますので、この関数を使わないとムダに大きく表示されてしまい不便なことがしばしばあります。
resizeToも便利です。

しかしresizeToを行うHTAでF5キーを使うと、リロード前に調整していたサイズから強制的にウィンドウサイズが変更されてしまい、わりと不便です。

できればresizeToを実行するのはHTA起動時のみにして、リロード時はリロード前のウィンドウサイズを保って欲しい…と思ったのでそれを叶える関数を作成しました。

2017年4月18日火曜日

HDDやSSD、SDカード等のデータを完全に消去するプログラム

先日埋め尽くす.htaというプログラムを公開しましたが、そのプログラムの中から「ストレージの中身を完全に消去するための処理」だけ抽出して、処理完了までの残り時間を計算する機能を追加したプログラムを作成しました。

2017年4月17日月曜日

HTML5の機能で画像ファイルを埋め込みイメージタグに変換するサンプル

base64エンコードという処理をするとHTMLファイルに画像ファイルなどを埋め込むことが可能になります。
そのbase64エンコードをやってくれるwebサービスなどもありますが、ブラウザでHTML5の機能だけでやることも可能です。
その変換用サンプルを作成しました。

2017年4月16日日曜日

エラー事例:タグ名間違い要因のエラーメッセージが「未知の実行時エラー」

タグ名を間違えているエレメントのinnerTextプロパティを変更しようとしたら「未知の実行時エラー」が発生しました。

分かってしまえばどうということは無い内容ですが、初めて遭遇した時は問題のある箇所が全く見当たらず困惑しました。

時間が経つと忘れて同じ失敗を繰り返してしまうかもしれないので備忘録としてエラー事例を記録します。

2017年4月15日土曜日

miniライブラリにグループ機能追加

旧バージョンを使って情報を追加していくうちに、HTA・WSH・HTA&WSH・DOSコマンドのようなキーワードで項目を分類したいと感じました。
それに対応するものを作成しました。

2017年4月13日木曜日

一時フォルダとファイルとそれを削除するメソッドを作成する関数

一時的なファイルやフォルダを作成して、用が済んだら削除したいと思う時が何度もあります。頻度が高いので関数化しました。

2017年4月12日水曜日

miniライブラリ用オブジェクト

自分用のライブラリとして作成しているものの現在の内容を公開します。
項目をディレクトリ構造にするかグループ分けできるようにすることを検討中です。

2017年4月11日火曜日

JSON形式テキスト作成用関数

用途・目的
JSON形式テキストを作成する関数は先日作成済みでしたが、変数名などがゴチャゴチャしているのが気になっていました。
イチから書き直して関数や変数の名前と流れを整理して少しだけ短くシンプルに出来ました。

2017年4月10日月曜日

テキストエリア内のカーソル位置に追従して水平線を移動する

4Kモニタのように、高解像度で精密な映像を表示するモニタを使っている時はテキストエディタ画面上で点滅しているテキストカーソルも小さめに表示されるため、たまに見失うことがあります。
カーソルがどこにあるのか分かり易くするために、カーソルに水平線を追従させるサンプルを作成してみました。


2017年4月9日日曜日

lineHeightが未定義のテキストエリアからlineHeightを取得するサンプル

1行あたりの高さを表すのがlineHeightプロパティですが「<textarea></textarea>」のようにlineHeightが定義されていないエレメントだと「lh = elem.lineHeight」のようにしても変数に入るのは長さ0のカラ文字列です。offsetWidthのような感じのプロパティはlineHeightにはありません。

それでもlineHeightが必要な場合があるので、取得するためのサンプルを作成しました。

2017年4月8日土曜日

RGB値に対応する表示色を確認しながら調整するHTA

赤・緑・青の3要素の値を0~255の範囲で変えて任意の色を表現することができます……と言っても具体的にどういうことなのかイメージできない人も居ますし、できる人でも数値から実際の色を想起できる人は少数派のような気がしますので、値を変えつつ実際の色を確認しながらカラーコードを出力するサンプルを作成しました。


2017年4月7日金曜日

任意の文字列を含む名前のファイルやフォルダのリストを取得する

コマンドラインを使いこなせる方なら「dir /B C:\folder\*abc*.* > c:\temp\1.txt」のように入力するだけで良いのですが、使いこなせる人ばかりでもないのでインターフェースを作成しました。

2017年4月6日木曜日

時間の長さに応じた単位をつけた文字列を返す関数(詳細表示版)

用途・目的
ミリ秒単位の数値を、値の大きさに合わせて「1.5分」とか「2.1時間」などのように表示する関数を先日記事にしましたが、「○ヵ月○日○時間○分○秒」のような表示が欲しいケースもあるので、それに対応する関数を作成しました。

2017年4月5日水曜日

時間帯を色分けするhtaを改良

前verからの変更内容は以下の通りです。
・カウント中に積算時間が表示されるようにした。
・設定・記録内容を保存・読み込みできるようにした。
・指定した日時に終了・開始の記録を追加できるようにした。
・画面内レイアウト変更
などなど。


2017年4月4日火曜日

改行コードが「LF」のみのテキストの表示を整える

用途・目的
改行コードには2タイプあり「CR(キャリッジリターン)+LF(ラインフィード)」のタイプと「LF」のみのタイプがあります。
Windowsのメモ帳で作成したテキストは、「CR+LF」のタイプになります。
「LF」のみのタイプのファイルをメモ帳で開くと以下のようになってしまいますが、CRが無いためにこのような表示になっているだけであり、改行の情報が失われているわけではないので開き方を工夫すれば正しく改行されます。
正しく表示されるようにするサンプルを作成しました。

2017年4月3日月曜日

時間帯を色分けするhta

毎日の活動内容をざっくり分類して、各活動の種類ごとに色を設定して、活動内容が変わるタイミングで対応する色を選択していき、最終的に各色ごとの合算時間を表示するHTAプログラムを作成しました。


2017年4月2日日曜日

時間の長さに適した単位をつけた文字列を返す関数

用途・目的
Dateオブジェクトを扱う際は単位がミリ秒の数値を扱うことが多いですが、ユーザーに見せる内容はミリ秒単位だと値が大きすぎてスケールが把握しづらいです。
分単位なのか、時間単位なのか、もっと大きな単位の数字なのかが分かり易い文字列を返す関数を作成しました。

2017年4月1日土曜日

一時画像フォルダ

資料作成のために一時的に画像ファイルをいくつか作成して、用が済んだら削除したい時があります。

今までは以下のやり方をしていました。
プリントスクリーン→ペイント起動→Ctrl + V→Ctrl + S→名前を入力して保存
わりと面倒です。名前が重複しないように気を付けることとか、ペイントを他の用途で使って保存先フォルダの表示が変わると保存後のファイルを使う時や後始末する時に面倒だと感じます。

以下の方法で複数の画像を保存し、用が済んだらウィンドウを閉じるだけで勝手に削除されるようにするプログラムを作成しました。
一時フォルダを開く→「+」ボタンを押してpngファイルを追加→pngファイルを右クリック→Eキーでペイント編集開始→Ctrl + V→Ctrl + S