UWSCでショートカットをいじる
公式掲示板で、「ファイルを開く」ダイアログのショートカット動作が変わった、という質問を見た。
ということで、解決方法を考えてみた。
(本当にUWSCが原因で変わったのかは知らないけど)
あと、.lnkファイルについて調べてみた。(UWSCというより、WSHだけど)
まずは回答
以下の面倒なことをする必要があるのは、「ファイルを開く」ダイアログ内のショートカットを右クリック「開く」で、移動出来なかった場合が良いと思われます。
- 以下のスクリプトを、ショートカットのあるフォルダに作成する
- UWSCの読み込みボタンを押下する
- 「ファイルを開く」ダイアログ内の本スクリプトを右クリックし「開く」で実行する
- ショートカットの一覧が出るので、選ぶ
- 切り替わる、、、はず
OPTION EXPLICIT HASHTBL list // ショートカットの一覧を作る DIM num = GETDIR(".", "*.lnk") - 1, i FOR i = 0 TO num //PRINT GETDIR_FILES[i] list[i] = GETDIR_FILES[i] NEXT // ショートカットを選択 i = POPUPMENU(list, G_MOUSE_X, G_MOUSE_Y) DIM dir = Link.Get(list[i]) IF COPY(dir, LENGTH(dir)) <> "\" THEN dir = dir + "\" // ファイルを開くダイアログに送る DIM wid = GETID("ファイルを開く","#32770") SENDSTR(wid, dir, 1, TRUE) CLKITEM(wid, "開く") SENDSTR(wid, "", 1, TRUE) // 空欄にするのが優しさかもしれない MODULE Link DIM _wsh PROCEDURE Link _wsh = CREATEOLEOBJ("WScript.Shell") FEND PROCEDURE Create(path, target) DIM lnk = _wsh.CreateShortcut(path) lnk.TargetPath = target lnk.Save FEND FUNCTION Get(path) DIM lnk = _wsh.CreateShortcut(path) RESULT = lnk.TargetPath FEND PROCEDURE Delete(path) DIM fso = CREATEOLEOBJ("Scripting.FileSystemObject") fso.DeleteFile(path) FEND ENDMODULE