|   |  
js 
 
DLLをloadした後、DLL関数をラッパー関数内でコールするとNGとなる。 
NGとなる関数はdllFuncStrの関数でNGでした。 
具体的にはdll_obj_str.GetKeyValue(existkey_v);をラッパー関数内でコールすると 
NG。 
ラッパー関数ではなく、DLLをloadした関数と同じ関数内ではOKでした。 
 
jsで動作確認できなかったので、vbsでも同じことが起こるのか確認しようとした所v 
bsでは別の問題が起きました。 
 
vbs 
DLLをloadした後、DLL関数を実行するとNG。 
NGとなる条件は、関数の引数に渡す文字列(sectionやkey)を変数の中にいれるとエラー 
関数の引数に文字列(sectionやkey)をベタ書きするとOKとなる。 
今まではベタ書きしていたのでわからなかったのですが 
変数に入れるとNGでした。 
ラッパー関数内でベタ書きして実行した場合はOKでした。 
引数をそのまま入れるとNGでした。 
 
 
//===jsソース================== 
Get_ini_info_test(); 
endMacro(); 
 
function Get_ini_info_test() 
{ 
 var dll; 
 var dll_obj_var; 
 var dll_obj_str; 
 var key_num_v; 
 var existkey_v; 
 var script_file_num_s; 
 var dllname_s; 
 var ini_file_fullpath; 
 var menu_num; 
 var inifile_section; 
 var inifile_key; 
 
 //初期化 
 dllname_s = "ht_tools.dll"; 
 
 //iniファイルがある場所をフルパスで取得 
 ini_file_fullpath = "G:\\tool\\test_INI.ini"; 
 inifile_section = "settings"; 
 inifile_key = "script_file_num"; 
 //DLLをロードしオブジェクトを取得 
 dll = loadDll(dllname_s); 
 //数値オブジェクト 
 dll_obj_var = dll.dllFunc; 
 //文字列オブジェクト 
 dll_obj_str = dll.dllFuncStr; 
  
 // keyの数 
 key_num_v = ini_ReadSectionKeys(inifile_section,  ini_file_fullpath, dll_ob 
j_var); 
 if(key_num_v < 0) 
 { 
  Echo("ReadSectionKeys:失敗"); 
  endMacro(); 
 } 
 
  
 //menuの数を文字列で取得 
 script_file_num_s = ini_GetKeyValue(inifile_key, dll_obj_var, dll_obj_str) 
// script_file_num_s = dll_obj_str.GetKeyValue(1); 
 Echo(script_file_num_s); 
 
} 
 
function ini_ReadSectionKeys(ini_section,  ini_fullpath, dll_obj_var) 
{ 
 var key_num_v; 
 
 //keyの数 
 key_num_v = dll_obj_var.ReadSectionKeys(ini_fullpath, ini_section); 
 if(key_num_v < 0) 
 { 
  Echo("ReadSectionKeys:失敗"); 
  endMacro(); 
 } 
  
 return key_num_v; 
 
} 
 
function ini_GetKeyValue(ini_key, dll_obj_var, dll_obj_str) 
{ 
 var existkey_v; 
 var ini_get_key_value; 
  
 existkey_v = dll_obj_var.ExistKey(ini_key); 
 if(existkey_v < 0) 
 { 
  Echo("ExistKey:失敗"); 
  endMacro(); 
  
 } 
 Echo(existkey_v); 
 
 //iniファイルから文字列を取得する 
 ini_get_key_value = dll_obj_str.GetKeyValue(existkey_v); 
 if(ini_get_key_value = "") 
 { 
  Echo("GetKeyValue:失敗"); 
  endMacro(); 
 } 
 Echo(ini_get_key_value); 
 return ini_get_key_value; 
 
} 
 
//===================== 
 
 
 
 
'===vbsソース================== 
 
 Dim existkey_v 
 Dim dll_obj_var 
 Dim dll_obj_str 
 Dim key_num_v 
 Dim script_file_num_s 
 Dim dllname_s 
 Dim dll 
 Dim ini_file_fullpath 
 Dim inifile_section 
 Dim inifile_key 
  
 '初期化 
 dllname_s = "ht_tools.dll" 
' dllname_s = "C:\\Program Files\\HmFilerClassic\\ht_tools.dll" 
 'iniファイルがある場所をフルパスで取得 
 ini_file_fullpath = "G:\\tool\\test_INI.ini" 
 inifile_section = "settings" 
 inifile_key = "script_file_num" 
 
 'DLLをロードしオブジェクトを取得 
 Set dll = loadDll(dllname_s) 
 '数値オブジェクト 
 Set dll_obj_var = dll.dllFunc 
 '文字列オブジェクト 
 Set dll_obj_str = dll.dllFuncStr 
 
' key_num_v = dll_obj_var.ReadSectionKeys("G:\\tool\\test_INI.ini", "setting 
s")'OK 
 key_num_v = dll_obj_var.ReadSectionKeys(ini_file_fullpath, inifile_section)'NG 
 
' existkey_v = dll_obj_var.ExistKey("script_file_num")'OK 
 existkey_v = dll_obj_var.ExistKey(inifile_key)'NG 
 
 script_file_num_s = dll_obj_str.GetKeyValue(existkey_v)'OK 
 
 endMacro() 
'===================== 
 
//====test_INI.ini================= 
[settings] 
menu_test=1 
script_file_num=2 
//===================== 
 
			 | 
		  
	 |