|
舩橋です。
マクロサーバのsetcurdirがうまく働きません。
以下のディレクトリを指定したとき、カレントディレクトリが移動しません。
(カレントディレクトリがサブディレクトリの時)
・ カレントディレクトリの1階層上のディレクトリ
・ カレントディレクトリの1階層下のディレクトリ
・ カレントディレクトリの同じ階層のディレクトリ
以下の場合は、正常に移動することを確認しています。
・ カレントディレクトリの1階層上のディレクトリど同じ階層の別ディレクトリ
・ドライブ直下を指定
・別ドライブ上のディレクトリ
マクロにミスがあるのでしょうか?
動作確認を行ったマクロを以下に示します。
(田楽DLLも使用しています)
run "macserv.exe /h";
ddeinitiate "HideMacroServer", "FileService";
$curdir = dderequest( "getcurdir" );
ddeexecute "exit";
loaddll "DengakuDll";
$dir1 = dllfuncstr("GETDIRNAMEEX",hidemaruhandle(0),"フォルダを指定して下さ
い",$curdir,1);
if( $dir1=="" ){
freedll;
endmacro;
}
freedll;
run "macserv.exe /h";
ddeinitiate "HideMacroServer", "FileService";
ddeexecute "setcurdir "+$dir1;
$curdir = dderequest( "getcurdir" );
ddeexecute "enumfile *.*";
insert "#"+$dir1+";"+$curdir;
insertreturn;
#i = 0;
while(1) {
$name[#i] = dderequest( "findnext" );
if( $name[#i] == "" ) break;
insert $name[#i];
insertreturn;
#i = #i + 1;
}
ddeexecute "enumdir *.*";
#i = 0;
while(1) {
$dirname[#i] = dderequest( "findnext" );
if( $dirname[#i] == "" ) break;
if( $dirname[#i] == "." ) continue;
if( $dirname[#i] == "..") continue;
insert $dir1 +"\\" + $dirname[#i];
insertreturn;
#i = #i + 1;
}
#i = 0;
#j = 0;
while(1) {
if( $dirname[#i] == "" ) break;
ddeexecute "exit";
run "macserv.exe /h";
ddeinitiate "HideMacroServer", "FileService";
ddeexecute "setcurdir "+$dir1+"\\"+$dirname[#i];
ddeexecute "enumfile *.*";
while(1) {
$name[#j] = dderequest( "findnext" );
if( $name[#j] == "" ) break;
insert $dirname[#i]+"\\"+$name[#j];
insertreturn;
#j = #j + 1;
}
#i = #i + 1;
}
ddeexecute "exit";
|
|