オブジェクトの種類 | カレントディレクトリの変更 |
---|---|
HTA自体 | 変更できない |
new ActiveXObject("Scripting.FileSystemObject"); で作ったオブジェクト | 変更できない |
new ActiveXObject("WScript.Shell"); で作ったオブジェクト | 変更できる |
頭がこんがらがったので自分用にまとめる。 HTA自体のオブジェクトと new ActiveXObject("Scripting.FileSystemObject"); で作ったオブジェクトと new ActiveXObject("WScript.Shell"); で作ったオブジェクト。 これらは独立して管理される。 そして new ActiveXObject("WScript.Shell"); で作ったオブジェクトは、カレントを変更することができる。 そのため、 HTA自体のカレント : C:\hta new ActiveXObject("Scripting.FileSystemObject"); で作ったオブジェクトのカレント : C:\hta(htaと同じ) new ActiveXObject("WScript.Shell"); で作ったオブジェクトのカレント : C:\shell という分散も可能だと思われる(意味あるのか?) てっきりWScript.Shellで作ったオブジェクトのCurrentDirectoryを設定すれば全て変更されるのかと思ってた・・・ そのためScripting.FileSystemObjectで作ったオブジェクトやHTMLのコードで不具合を生じてしまった。 さらにひょっとすると、またもう一つWScript.Shellのオブジェクトを作れば、別々のカレントとして動かせるか。 ひょっとしたらそれは使い道がそれなりにありそうな気も。 (たとえば別々のフォルダでWScript.Shellのオブジェクトを使うコードを使いまわせるとか。まぁそれだったらRun関数とかに食わせるファイルパス自体を引数にすればいいだけだが・・・) 以下はChatGPTに質問した時のやり取り。 途中で勘違いされてしまったが、疑問を投げ直したらしっかり解釈してくれた。
下に行くほど新しいコメントです