ラベル JScript の投稿を表示しています。 すべての投稿を表示
ラベル JScript の投稿を表示しています。 すべての投稿を表示

2017年4月20日木曜日

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

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

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

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

2017年2月17日金曜日

ScriptControlでVBScriptのカプセル化

グローバル領域に影響しない形でVBScriptが利用できることが分かったので、VBScriptでしか利用できない機能をまとめてみました。

※昨日の「JScriptからデストラクタを利用する」もこれで利用できるようにしようとしましたが、ScriptControllを使用した場合はVBScriptとJScriptを跨ぐとClass_Terminateが実行されませんでした。。。


2017年2月16日木曜日

グローバル領域を汚さずにvbscriptを併用する

scriptタグを2つ用意して、それぞれのlanguageをvbscript、jscriptとするやり方だと相互にアクセスするものはグローバル領域に宣言しなければいけない…と思っていましたが、ScriptControlというコンポーネントを利用すれば、グローバル領域を綺麗に保ったままにできるようです。

ソースは以下

2017年2月15日水曜日

JScriptからVBScript経由でデストラクタ利用

ただしVBScriptで「obj = Nothing」を実行した瞬間にobjに入っていたものが解放される…という感じのことはJScriptからは無理でした。
JScriptからは、スクリプト終了時にClass_Terminateを自動実行させることが限界のようです。

色々試して悪あがきして上記の結論に至ったソースは以下。

2017年2月14日火曜日

VBScriptではClass_Terminateが利用できる。。

でも私の大好きなJScriptでは利用できないようです。悲しい。MSからエコヒイキされているVBScriptが羨ましくてたまらない。

Class_Terminateとは、クラスが解放される時に発生するイベントです。
以下のソースを実行すると、二つのExcelが起動して、VBScriptから起動された方のExcelだけが、スクリプト終了時にQuitされます。

2016年5月24日火曜日

[WSH]Administratorsグループのメンバーをリストアップ

使用中のPCでAdministratorsグループに登録されているメンバーを表示するサンプル。
これなんてJScriptの存在意義あるの?と思いそうなサンプルだけど、これに関してはJScriptで出来るのはコレだけだったという記録のために入れてあります。

VBScriptが苦手なのでできれば使いたくなくて、JScriptだけ使いたいのですがGetObjectもFor EachもVBScriptでなければ動作しなかったんです。。
JScriptではfor inとかEnumeratorとか使ってみたんですが、駄目でした。

VBScriptはWindowsに対して特権がある…けど好きになれません。