vbsでmenuArray、menuが期待通りに動きまNo.11464
tomato さん 25/03/03 14:26
 
秀丸ファイラースクリプトの勉強中でスクリプトが上手く動かなくて困っています。

(1)vbsでスクリプトを書いている時、menuArray、menuが期待通りに動きません。
jsではmenuArrayは期待通りに動きました。(menuは試していません)

(2)vbsでスクリプトを書いている時、DLLのロードが期待通りに動きません。
jsではDLLのロードはできました。

(3)これは質問なのですが、秀丸ファイラースクリプトから別ファイルの秀丸ファイ
ラースクリプトを
実行することができますか?(秀丸ファイラースクリプトから別ファイルのJscriptは
実行できました。)

下記は試行錯誤した時のvbsのソースコードです。
私のミスでしたらお騒がせして申し訳ありません。
=========================
 '変数の+宣言を強制します。
 Option Explicit
 
 Dim rc
 Dim dll
 Dim dllname_s
 Dim menu_taitle_s
 Dim dll_file_path_s
' dllname_s = "ht_tools.dll"
' dllname_s = "C:\Program Files\HmFilerClassic\ht_tools.dll"
 dllname_s = "C:\\Program Files\\HmFilerClassic\\ht_tools.dll"
' dllname_s = "DengakuDLL.dll"
 echo(dllname_s)

 'DLLをロードしオブジェクトを取得
' dll = loadDll(dllname_s)
' echo("ここ")
'
' echo(dll)
' dll_file_path_s = dll.loadDllFile
' echo(dll_file_path_s)

' menu_taitle_s = Array("test_1","test_2","test_3")
' menu_taitle_s = Array("\x01サブメニューA","項目A-1","項目A-2","","\x01サブ
メニューB","項目B-1","項目B-2","","項目C")
' echo(menu_taitle_s(0))
' echo(menu_taitle_s(1))
' echo(menu_taitle_s(2))

'rc = menuArray(menu_taitle_s,3)
'rc = menuArray(menu_taitle_s,9)
'rc = menuArray(menu_taitle_s)
'rc = menu("test_4","test_5","test_6")
rc = menu("\x01サブメニューA","項目A-1","項目A-2","","\x01サブメニューB","項
目B-1","項目B-2","","項目C")


echo(rc)


endMacro()

[ ]
RE:11464 vbsでmenuArray、menuが期待通りNo.11466
秀丸担当 さん 25/03/03 16:06
 
"\x01"というのは、JavaScriptやC言語の16進数の文字コード表現で、制御コード01
に相当する一文字のことでした。
vbsの場合はChr(1)というようにしてできるようでした。
例えば以下のようにしてできました。

rc = menu(Chr(1)+"サブメニューA","項目A-1","項目A-2","",Chr(1)+"サブメニュー
B","項目B-1","項目B-2","","項目C")

loadDllは、Set dll = loadDll(...のように書くといいようです。
Setとか書かなくてもよさそうな気がしますが、vbsの文法はちょっとわからないです。

別ファイルのスクリプトを呼び出すということはできないです。

vbsの例はもともとヘルプに無いものもありましたが、vbsはWindows標準ではインス
トールされなくなるかもしれなので、最近はvbsの説明はどんどん減らしていってい
ます。

[ ]
RE:11466 vbsでmenuArray、menuが期待通りNo.11467
tomato さん 25/03/04 11:56
 
>loadDllは、Set dll = loadDll(...のように書くといいようです。
>Setとか書かなくてもよさそうな気がしますが、vbsの文法はちょっとわからないです。

ありがとうございます。私の方でもloadできました。
Set dll_obj = dll.dllFunc
Set dll_obj_str = dll.dllFuncStr
上記2つもSetが必要でした。勉強になりました。


>別ファイルのスクリプトを呼び出すということはできないです。
ありがとうございます。

>rc = menu(Chr(1)+"サブメニューA","項目A-1","項目A-2","",Chr(1)+"サブメニ
>ューB","項目B-1","項目B-2","","項目C")
ありがとうございます。
menuの方は解決しました。

>vbsの例はもともとヘルプに無いものもありましたが、vbsはWindows標準ではインス
>トールされなくなるかもしれなので、最近はvbsの説明はどんどん減らしていってい
>ます。

次回から私もJSの方でスクリプト書くようにします。
ただ、menuArrayの方はどうしても解決できません。
こちらを最後にしますのでご教示お願いします。
色々試行錯誤しましたがダメでした。

=========
 '変数の+宣言を強制します。
 Option Explicit
 
 Dim rc
 Dim menu_taitle_s
' Dim menu_taitle_s(2)
 Dim objDic


 menu_taitle_s = Array("test_1","test_2","test_3")
' menu_taitle_s = Array(Chr(1)+"サブメニューA","項目A-1","項目A-2","",Chr(1)
+"サブメニューB","項目B-1","項目B-2","","項目C")
 echo(menu_taitle_s(0))
 echo(menu_taitle_s(1))
 echo(menu_taitle_s(2))

'rc = menuArray(menu_taitle_s,9)
rc = menuArray(menu_taitle_s)
'rc = menu(Chr(1)+"サブメニューA","項目A-1","項目A-2","",Chr(1)+"サブメニ
ューB","項目B-1","項目B-2","","項目C")
'rc = menu(menu_taitle_s(0),menu_taitle_s(1),menu_taitle_s(2))

echo(rc)


endMacro()

'======
 '変数の+宣言を強制します。
 Option Explicit
 
 Dim rc
 Dim menu_taitle_s(2)


 menu_taitle_s(0) = "test_1"
 menu_taitle_s(1) = "test_2"
 menu_taitle_s(2) = "test_3"

 echo(menu_taitle_s(0))
 echo(menu_taitle_s(1))
 echo(menu_taitle_s(2))

rc = menuArray(menu_taitle_s,3)
'rc = menuArray(menu_taitle_s)
'rc = menu(Chr(1)+"サブメニューA","項目A-1","項目A-2","",Chr(1)+"サブメニ
ューB","項目B-1","項目B-2","","項目C")
'rc = menu(menu_taitle_s(0),menu_taitle_s(1),menu_taitle_s(2))


echo(rc)


endMacro()

'========
 '変数の+宣言を強制します。
 Option Explicit
 
 Dim rc
 Dim menu_taitle_s
' Dim menu_taitle_s(2)
 Dim objDic

 Set objDic = createobject("Scripting.Dictionary")
 objDic.Item(0) = "test_1"
 objDic.Item(1) = "test_2"
 objDic.Item(2) = "test_3"
 menu_taitle_s = objDic.Items



' menu_taitle_s = Array(Chr(1)+"サブメニューA","項目A-1","項目A-2","",Chr(1)
+"サブメニューB","項目B-1","項目B-2","","項目C")
 echo(menu_taitle_s(0))
 echo(menu_taitle_s(1))
 echo(menu_taitle_s(2))

'rc = menuArray(menu_taitle_s,3)
rc = menuArray(menu_taitle_s)
'rc = menu(Chr(1)+"サブメニューA","項目A-1","項目A-2","",Chr(1)+"サブメニ
ューB","項目B-1","項目B-2","","項目C")
'rc = menu(menu_taitle_s(0),menu_taitle_s(1),menu_taitle_s(2))


echo(rc)


endMacro()



[ ]
RE:11467 vbsでmenuArray、menuが期待通りNo.11469
秀丸担当 さん 25/03/04 13:52
 
menuArrayについて調べてみたところ、最近のバージョンでうまくいっていませんで
した。
V1.98で内部的にほぼ入れ替えがあったのですが、そのときからだめでした。
情報いただき助かりました。
今後のバージョンで修正させていただきます。

[ ]
RE:11469 vbsでmenuArray、menuが期待通りNo.11471
tomato さん 25/03/05 15:27
 
>menuArrayについて調べてみたところ、最近のバージョンでうまくいっていませんで
>した。
>V1.98で内部的にほぼ入れ替えがあったのですが、そのときからだめでした。
>情報いただき助かりました。
>今後のバージョンで修正させていただきます。

ありがとうございます。
よろしくお願いします。

[ ]