マクロ作成依頼、"特定フォルダ・メールへNo.00057
エイト さん 02/05/09 21:21
 
 こういう場所でこういったお願いをしてよいのか解らず
書込みをしております。
 場所違い等ございましたら、御指摘ください。

 ユーザ特定のフォルダにすばやく飛ぶ為のマクロを
作成していただきたいです。
 主な仕様は下記の通りです。

・特定のフォルダを複数登録する事が可能で、登録されたフォルダは
 メニューで選択する事が可能。
・メニューで選択されたフォルダにカーソルが飛ぶ。
・登録処理は、同一メニュー内に登録処理が存在し、選択可能。
・登録したメニュー上のフォルダを、メニュー一覧から削除する事が可能。
・アカウント毎でフォルダの登録が可能。
 つまり、アカウント毎で登録されたフォルダメニューが変わる。

 また同様に、ユーザ特定のメールに対してすばやく飛ぶ為の
マクロも作成していただきたいです。
 機能的にはフォルダ版と同様です。

 大変おこがましいお願いではございますが、どなたか
作成していただければ、大変助かります。
 鶴亀メールマクロライブラリを一通り見たのですが
それらしきものがありませんでした。
 しかし、既に公開済みでしたら、ご紹介ください。

 以上、どうか宜しくお願いいたします。

[ ]
RE:00057 マクロ作成依頼、"特定フォルダNo.00060
プックン さん 02/05/10 11:18
 
エイトさん、こんにちは。

ご希望のマクロ通りになっているかどうかわかりませんが、
ざっくりと作ってみました。
メールの移動のマクロはちょっと、時間の都合でつくれないです。

例外処理がまだ完全にできてませんが、とりあえず使ってみてください。
田楽DLLを使用していますので、田楽DLLを秀丸ディレクトリにおいて
からマクロを実行してください。

登録作業を実施すると、アカウントフォルダの下に、INIファイルを
作成します。
アンインストールするときは、(1),(2)を削除してください。
(1)登録ファイル
  "puku_folder.ini"
(2)本マクロ

//               TURU_MOV.MAC
//////-----------切り取り---------------///
//--------------------------------------------------------------------------//
//マクロ名称  :  TURU_MOV.MAC//
////
//機能概要 :  登録したフォルダに移動する//
////
// 注意事項 :  1.puku_folder.iniファイルの以下の内容を使用//
//セクション名[Dir],キー名[#0_Title〜#35_Title]//
//   キー名[#0_File〜#35_File]//
//   書式 #n_Title=タイトル//
//    #n_File=ファイル//
//2.田楽(でんがく)DLLを使用しています。//
//(ファイル名の指定でダイアログから選択するのに使用)//
//このマクロを実行するためには、杉浦まさき氏作の//
//田楽DLLを使用させていただいています。//
//著作権 杉浦まさき氏 xxxxxxx@ceres.dti.ne.jp//
//http://www.ceres.dti.ne.jp/~sugiura/hidemaru/macros/dgserver///
//作 成 者 :  プックン2002年05月10日//
////
//修正履歴 ://
// 修正日   修正者修正概要//
// ------------------------------------------------------------------------ //
// XXXX/XX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//
// 2002.05.10プックン初期作成//
//TAKA氏(RXB07020)作成HINA.MAC +//
//プックン作成 HINAKUN.MAC +//
//プックン作成 BASIC.MACを流用して作成//
//--------------------------------------------------------------------------//

//仕様
// ユーザ特定のフォルダにすばやく飛ぶ為のマクロ
// 主な仕様は下記の通りです。
//
//・特定のフォルダを複数登録する事が可能で、登録されたフォルダは
// メニューで選択する事が可能。
//・メニューで選択されたフォルダにカーソルが飛ぶ。
//・登録処理は、同一メニュー内に登録処理が存在し、選択可能。
//・登録したメニュー上のフォルダを、メニュー一覧から削除する事が可能。
//・アカウント毎でフォルダの登録が可能。
// つまり、アカウント毎で登録されたフォルダメニューが変わる。
//
$$ver  = "1.00";
$$date = "2002.05.10";
$$author = "プックン" ;
$$fname = currentmacrobasename ;
$$info = "\n" + $$fname + " Ver " + $$ver+ "\n最終更新日付:"+$$date ;
$$info = $$info + "\n作者:"+$$author ;

$Def = "受信" ;

call Turukame $$info;

//鶴亀から起動されたかどうか確認
##n = dllfunc( "IsTuruKame" );
//移動できたかどうかの確認(値のチェック)
    call Res_check ##n,"マクロの実行が、鶴亀からされていません。\n" + $$info ;

//アカウント情報の取得
    $$account =dllfuncstr("CurrentAccount");
//アカウント情報の確認(文字列の確認)
    call Str_check $$account,"アカウント情報の取得に失敗しました。\n" + $$in
fo ;

//デバック用ファイル名
//$$debug_f = hidemarudir + "\\" + "debug\.ini"  ;
//call Debug$$fname ,$$debug_f;
//call Debug_del$$fname ,$$debug_f;

$ini = "puku_folder\.ini" ;
$Homedir = dllfuncstr("HomeDir") ;
$file = $Homedir + $$account + "\\" + $ini;
$sel = "Dir";
$key0 = "Title" ;
$key1 = "Folder" ;

MODE:
$menu[0]="□選択□";
$menu[1]="&E "+"実行";
$menu[2]="&R "+"登録";
$menu[3]="&M "+"移動";
$menu[4]="&D "+"削除";
$menu[5]="&V "+"Version";
#menu_su= 6;
menuarray $menu, #menu_su;
if(result==0){goto LEND;}
else if (result==1){goto MODE;}
else if (result==2){goto JIKKOU;}
else if (result==3){goto TOUROKU;}
else if (result==4){goto IDOU;}
else if (result==5){goto SAKUJO;}
else if (result==6){goto VERSION;}

LEND:
freedll;
endmacro;

TOUROKU:
//田楽DLLのロード実施
call DengakuDll ;

//フォルダ選択
$$AccFol = $Homedir +  $$account + "\\" + $Def;
call DIROPEN $$AccFol ;
$$SelFolder = $$return ;

//message "選択されたフォルダは\n"+$$SelFolder;
//existfile=ファイルが存在するかどうか
#wk = existfile( $$SelFolder );
if( !#wk ){
message $$SelFolder +"が存在しません。";
goto LEND;
}
call ChkFolder $$AccFol ,$$SelFolder ;
$RecFolder = $$return ;

//コメント登録
$$mes = "登録するフォルダ:\n" +
$RecFolder + "\n" +
"のコメントを入力してください";
$m_name = input ($$mes,"デフォルト") ;
if(!result){goto LEND;}

$sget = $key0 ;//Title
call MENU_SU $sel ,$sget, $file;
#menu_su = ##return;
writeinistr $file, $sel, "#" + str( #menu_su ) +"_"+ $sget, $m_name ;

$sget = $key1 ;//Macro
writeinistr $file, $sel, "#" + str( #menu_su ) +"_"+ $sget, $RecFolder ;
message "登録完了";
goto LEND;

JIKKOU:
$sget = $key0 ;//Title
$add = "□フォルダ移動の実行□";
call MENU_SU $sel ,$sget, $file , $add ;
#menu_su = ##return;
if(#menu_su == 0){
message "マクロ未登録";
goto LEND;
}
JIKKOUMENU:
//------------------//
//マクロ選択//
//------------------//
//種類の選択 menu1

menuarray $menu, #menu_su;
//menu1結果による分岐

if     (result == 0){
message "Cancelしました";
goto LEND;
}
else if(result == #menu_su){
goto JIKKOUMENU ;
}
else {
$sget = $key1  ;//Macro
$RecFolder = getinistr( $file, $sel, "#" + str( result - 1 ) + "_"+ $sget );
if($RecFolder==""){message "フォルダ名取得失敗";goto LEND}
}
//execmacro $mac;
call Exec_Move $$account,$RecFolder;

goto LEND;

IDOU:
$sget = $key0 ;//Title
$add = "□移動元のフォルダ指定□";
call MENU_SU $sel ,$sget, $file ,$add;
#menu_su = ##return;
if(#menu_su == 0||#menu_su == 1){
message "移動するフォルダ登録がありません";
goto LEND;
}
$add ="";
//------------------//
//マクロ選択//
//------------------//
//種類の選択 menu1
call IDOUMENU ;
#sel = ##return ;//移動元

$add = "■移動先のフォルダ指定■";
call MENU_SU $sel ,$sget, $file ,$add;
$add ="";
call IDOUMENU "on";
#mov = ##return ;//移動先

//登録の移動
if     (#sel == #mov)
goto LEND ;
else if(#sel <  #mov){
$sget = $key0  ;//Title
$wk1 = getinistr($file,$sel,"#" + str( #sel - 1 ) + "_"+ $sget);
$sget = $key1  ;//Macro
$wk2 = getinistr($file,$sel,"#" + str( #sel - 1 ) + "_"+ $sget);
call MOVE #sel ,#mov-1 ;
$sget = $key0  ;//Title
writeinistr $file, $sel, "#" + str( #mov - 2 ) + "_"+ $sget, $wk1 ;
$sget = $key1  ;//Macro
writeinistr $file, $sel, "#" + str( #mov - 2 ) + "_"+ $sget, $wk2 ;
}
else{//if(#sel >  #mov){
$sget = $key0  ;//Title
$wk1 = getinistr($file,$sel,"#" + str( #sel - 1 ) + "_"+ $sget);
$sget = $key1  ;//Macro
$wk2 = getinistr($file,$sel,"#" + str( #sel - 1 ) + "_"+ $sget);
call MOVE_R #sel ,#mov ;
$sget = $key0  ;//Title
writeinistr $file, $sel, "#" + str( #mov - 1 ) + "_"+ $sget, $wk1 ;
$sget = $key1  ;//Macro
writeinistr $file, $sel, "#" + str( #mov - 1 ) + "_"+ $sget, $wk2 ;
}
//goto JIKKOU;
goto LEND;

SAKUJO:
$sget = $key0 ;//Title
$add = "□フォルダの登録削除□";
call MENU_SU $sel ,$sget, $file , $add;
#menu_su = ##return;
if(#menu_su == 0){
message "削除するフォルダ登録がありません";
goto LEND;
}
//------------------//
//マクロ選択//
//------------------//
//種類の選択 menu1

menuarray $menu, #menu_su;
//menu1結果による分岐
if     (result == 0){
message "Cancelしました";
goto LEND;
}
#res = result ;
//登録の削除
#menu_su = #menu_su - 1;
$sget = $key0  ;//Title
writeinistr $file, $sel, "#" + str( #res - 1 ) + "_"+ $sget, "" ;
$sget = $key1  ;//Macro
writeinistr $file, $sel, "#" + str( #res - 1 ) + "_"+ $sget, "" ;
if (#res != #menu_su){//削除した番号が最後の番号でないとき
call MOVE #res ,#menu_su ;
}
//goto JIKKOU;
goto LEND;

VERSION:
message $$account + $$info ;
goto LEND;

MENU_SU:
$$wk1 = $$1;
$$wk2 = $$2;
$$wk3 = $$3;
$$wk4 = $$4 ;//menu の臨時追加
##menu_su = 0;
while( ##menu_su < 36 )
{
$title = getinistr( $$wk3, $$wk1, "#" + str( ##menu_su ) +"_"+ $$wk2 );
if( $title == "" )
{
break;
}

//---- 選択用のキーを求める ----//
if( ##menu_su < 10 )
{
$wk = str( ##menu_su );
}
else
{
$wk = char( 0x61 + ##menu_su - 10 );
}
$menu[##menu_su] = "&" + $wk + " " + $title;
##menu_su = ##menu_su + 1;
}
if($$wk4 != ""){
$menu[##menu_su] = $$wk4;
##menu_su = ##menu_su + 1;
}
return ##menu_su ;

MOVE:
##sel_no = ##1;//選択した番号
##men_no = ##2;//メニュー数
##a = ##sel_no;
while( ##men_no != ##a ) {
// $key0,$key1=Title,Macroを移動する
##i = 2;
while( ##i > 0 ) {
if(##i == 2){$sget = $key0  ;}//Title
else        {$sget = $key1  ;}//Macro
//read
$$wk = getinistr( $file, $sel, "#" + str( ##sel_no ) + "_"+ $sget );
if($$wk==""){message "フォルダ名取得失敗_"+str(##a)+str(##i);goto LEND}
//write
writeinistr $file, $sel, "#" + str( ##sel_no -1 ) + "_"+ $sget, $$wk ;
//移動元を削除
writeinistr $file, $sel, "#" + str( ##sel_no  ) + "_"+ $sget, "" ;
##i = ##i - 1;
}

##a = ##a + 1;
##sel_no = ##sel_no + 1;
}
return ;

MOVE_R:
##sel_no = ##1;//選択した番号
##men_no = ##2;//移動先の番号
##a = ##sel_no - ##men_no ;
while( ##a != 0) {
// $key0,$key1=Title,Macroを移動する
##i = 2;//2回繰り返す
while( ##i > 0 ) {
if(##i == 2){$sget = $key0  ;}//Title
else        {$sget = $key1  ;}//Macro
//read
$$wk = getinistr( $file, $sel, "#" + str( ##sel_no - 2) + "_"+ $sget );
if($$wk==""){message "フォルダ名取得失敗"+str(##a)+str(##i);goto LEND}
//write
writeinistr $file, $sel, "#" + str( ##sel_no -1) + "_"+ $sget, $$wk ;
##i = ##i - 1;
}

##a = ##a - 1;
##sel_no = ##sel_no - 1;
}
return ;


IDOUMENU:
$$wk1 = $$1 ;
menuarray $menu, #menu_su;
//menu1結果による分岐
if(result == 0){
message "Cancelしました";
goto LEND;
}
else if(result == #menu_su )
if($$wk1 == "")
goto IDOUMENU ;//タイトル選択時の処理

##res = result ;
return ##res ;

Exec_Move:
//引数渡し
$$account = $$1;
$$MoveFolder = $$2;
##n = dllfunc( "SelectFolder", $$account, $$MoveFolder );
    call Res_check ##n,"フォルダの移動に失敗しました\n" + $$info ;

return ;

Turukame:   //鶴亀メール起動チェック&DLLロード
$$info = $$1;
//鶴亀インストールフォルダを取得する。
call Get_ins $$info;
$$TuruKameDir = $$return ;

    // DLL を Load する
    loaddll $$TuruKameDir + "\\tkinfo.dll";
    if( !result ) {
    message "DLLロードに失敗\n"+$$info;
    endmacro;
    }
return ;

DengakuDll:   //DengakuDll ロード
$$info = $$1;
    // DLL を Load する
$$DLL = "DengakuDLL.dll" ;
loaddll hidemarudir + "\\" + $$DLL;
    if( !result ) {
    message $$DLL + "のロードに失敗\n"+$$info;
$$mes = "田楽DLLが存在しません。\n"+
"田楽DLLを\n" +
hidemarudir + "\n"+
"ディレクトリにインストールしてください\n";
message $$mes;
    endmacro;
    }
return ;

Get_ins:
$$info = $$1;
    openreg "CURRENTUSER","Software\\Hidemaruo\\TuruKame\\Config";
    if( !result ) {
    message "鶴亀がインストールされてないです (^^;)\n"+$$info;
    closereg ;
    goto LEND;
    }

$$TuruKameDir = getregstr( "TuruKameDir" );
    closereg ;
return $$TuruKameDir;

Res_check:
//処理:処理の判定&メッセージ表示
//引数渡し
##num = ##1;$$mes = $$2 ;
if(##num != 1){
message $$mes ;
goto LEND;
}
return ;

Str_check:
//処理:文字列の判定&メッセージ表示
//引数渡し
$$str = $$1;$$mes = $$2 ;
if($$str == ""){
message $$mes ;
goto LEND;
}
return ;

Debug:
//DEBUG用に各情報を秀丸ディレクトリの下の"debug.ini"ファイルに書き込む
//引数渡し
$$fname = $$1 ;//実行マクロファイル名
$$debug_f = $$2 ;//デバック情報書き込みファイル名

$$date= date + " " time ;
##IsTuruKame=  dllfunc( "IsTuruKame") ;
##IsTuruKameMain= dllfunc( "IsTuruKameMain") ;
##CurrentPane= dllfunc( "CurrentPane");
    $$CurrentAccount= dllfuncstr("CurrentAccount");
    $$CurrentFolder= dllfuncstr( "CurrentFolder" );
    ##IsThreadView= dllfunc("IsThreadView");
    ##MailIndex= dllfunc("MailIndex");
##ViewArea= dllfunc("ViewArea");

writeinistr $$debug_f, $$fname, "Date", date + " " time ;
writeinistr $$debug_f, $$fname, "Fname", $$fname ;
writeininum $$debug_f, $$fname, "IsTuruKame", ##IsTuruKame ;
writeininum $$debug_f, $$fname, "IsTuruKameMain", ##IsTuruKameMain ;
writeininum $$debug_f, $$fname, "CurrentPane", ##CurrentPane ;
writeinistr $$debug_f, $$fname, "CurrentAccount", $$CurrentAccount ;
writeinistr $$debug_f, $$fname, "CurrentFolder", $$CurrentFolder ;
writeininum $$debug_f, $$fname, "IsThreadView", ##IsThreadView ;
writeininum $$debug_f, $$fname, "MailIndex", ##MailIndex ;
writeininum $$debug_f, $$fname, "ViewArea", ##ViewArea ;
return;

Debug_del:
//引数渡し
$$fname = $$1 ;//実行マクロファイル名
$$debug_f = $$2 ;//デバック情報書き込みファイル名

writeinistr $$debug_f, $$fname, 0, 0 ;
return;

DIROPEN:
//「フォルダの指定」ダイアログのテスト
//引数渡し
$$Homedir = $$1;
//message $$Homedir ;

$$name = dllfuncstr("GETDIRNAME",
hidemaruhandle(0),//オーナーウィンドウのウィンドウハンドル
"「フォルダの指定」ダイアログのテスト",//タイトル
$$Homedir//初期フォルダ名(ここでは秀丸フォルダを指定)
);
if ($$name == "") {
message "キャンセルされました。";
goto LEND;
}
//else message "選択されたフォルダは\n" + $$name + "\nです。";
return $$name ;

ChkFolder:
//「フォルダの指定」ダイアログのテスト
//引数渡し
$$AccFol = $$1;
$$SelFolder = $$2;
//文字列長の取得
##str_len1 = strlen($$AccFol) ;//定義文字列の長さを取得
$$get_str = leftstr($$SelFolder,##str_len1) ;
//指定したフォルダが実行したアカウント下であることを確認する。
if($$AccFol != $$get_str){
$$mes = "指定したフォルダが、実行アカウントの" + $Def +
"フォルダ下ではありません!\n" +
$$AccFol + "\n" +
"フォルダの下を指定してください\n\n"+
"選択されたフォルダ:\n"+
$$SelFolder ;
message $$mes ;
goto LEND;
}
else{
//message "ok";
}

//受信フォルダ下の情報を取得
$$get_str = midstr($$SelFolder,##str_len1,strlen($$SelFolder)-##str_len1) ;
$$get_str = $Def + $$get_str ;

return $$get_str ;
//////-----------切り取り終わり---------------///

[ ]
RE:00060 マクロ作成依頼、"特定フォルダNo.00061
エイト さん 02/05/10 23:49
 
 プックンさん、お忙しい中マクロを提供していただきまして
ありがとうございます。

 公開していただいたマクロ、有意義に使わせて頂いてます。

 一点、ご教授ください。

 "未送信・送信済み・草稿・受信ログ・送信ログ"のフォルダにも
飛びたいのですが、現在は"受信"のみでチェックしており
また、チェックをはずして強引に登録しても、カーソルを飛ばす事が
出来ないようです。

 上記の点についてのみ、対応方法をご教授ください。
 もしくは、上記仕様を満たす版のマクロの公開をお願いいたします。


 おこがましいとは思いますが、気長に待ちますので
どうか宜しくお願いいたします。

[ ]
RE:00061 マクロ作成依頼、"特定フォルダNo.00067
プックン さん 02/05/15 09:16
 
エイトさん、こんにちは。

エラー処理が十分ではないですが、"受信フォルダ"以外にも移動できるように
修正しました。

//--------------------------------------------------------------------------//
//  マクロ名称  :  TURU_MOV.MAC                                             //
//                                                                          //
//  機能概要 :  登録したフォルダに移動する                                  //
//                                                                          //
//  注意事項 :  1.  puku_folder.iniファイルの以下の内容を使用               //
//                  セクション名[Dir],キー名[#0_Title〜#35_Title]           //
//                                    キー名[#0_Folder〜#35_Folder]         //
//                 書式 #n_Title=タイトル                                   //
//                      #n_Folder=フォルダ                                  //
//              2.  田楽(でんがく)DLLを使用しています。                     //
//                  (ファイル名の指定でダイアログから選択するのに使用)      //
//                  このマクロを実行するためには、杉浦まさき氏作の          //
//                  田楽DLLを使用させていただいています。                   //
//                  著作権 杉浦まさき氏 xxxxxxx@ceres.dti.ne.jp             //
//          http://www.ceres.dti.ne.jp/~sugiura/hidemaru/macros/dgserver/   //
//  作 成 者 :  プックン            2002年05月10日                          //
//                                                                          //
//  修正履歴 :                                                              //
// 修正日   修正者          修正概要                                        //
// ------------------------------------------------------------------------ //
// XXXX/XX/XX   XXXXXXXX    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX //
// 2002.05.10 プックン  1.00    初期作成                                    //
//                              TAKA氏(RXB07020)作成HINA.MAC +              //
//                              プックン作成 HINAKUN.MAC +                  //
//                              プックン作成 BASIC.MAC      を流用して作成  //
// 2002.05.15 プックン  1.01    移動先を受信フォルダ以外に移動できるように  //
//                              修正。例外処理は未作成。                    //
//--------------------------------------------------------------------------//

//仕様
// ユーザ特定のフォルダにすばやく飛ぶ為のマクロ
// 主な仕様は下記の通りです。
//
//・特定のフォルダを複数登録する事が可能で、登録されたフォルダは
// メニューで選択する事が可能。
//・メニューで選択されたフォルダにカーソルが飛ぶ。
//・登録処理は、同一メニュー内に登録処理が存在し、選択可能。
//・登録したメニュー上のフォルダを、メニュー一覧から削除する事が可能。
//・アカウント毎でフォルダの登録が可能。
// つまり、アカウント毎で登録されたフォルダメニューが変わる。
//
//例外処理(未作成).
//(1)
//鶴亀が表示していないフォルダを登録しても、エラー処理していない。
//(2)
//下記のような場合、登録先フォルダ名の先頭が、Homedir+アカウント名と
//同じなのでエラー判別ができない。
//登録先フォルダ="d:\turu\abcd",
//鶴亀homedir   ="d:\turu\" + アカウント名="a"
$$ver  = "1.01";
$$date = "2002.05.15";
$$author = "プックン" ;
$$fname = currentmacrobasename ;
$$info = "\n" + $$fname + " Ver " + $$ver+ "\n最終更新日付:"+$$date ;
$$info = $$info + "\n作者:"+$$author ;

//$Def = "受信" ;

    call Turukame $$info;

    //鶴亀から起動されたかどうか確認
    ##n = dllfunc( "IsTuruKame" );
    //移動できたかどうかの確認(値のチェック)
    call Res_check ##n,"マクロの実行が、鶴亀からされていません。\n" + $$info ;

    //アカウント情報の取得
    $$account =dllfuncstr("CurrentAccount");
    //アカウント情報の確認(文字列の確認)
    call Str_check $$account,"アカウント情報の取得に失敗しました。\n" + $$in
fo ;

    //デバック用ファイル名
//  $$debug_f = hidemarudir + "\\" + "debug\.ini"  ;
//  call Debug      $$fname ,$$debug_f;
//  call Debug_del  $$fname ,$$debug_f;

    $ini = "puku_folder\.ini" ;
    //最古に"\"マーク付きフォルダ情報
    $Homedir = dllfuncstr("HomeDir") ;
    //アカウント情報の確認(文字列の確認)
    call Str_check $Homedir,"ホームディレクトリの取得に失敗しました。\n" + $
$info ;
    $file = $Homedir + $$account + "\\" + $ini;
    $sel = "Dir";
    $key0 = "Title" ;
    $key1 = "Folder" ;

    MODE:
    $menu[0]="□選択□";
    $menu[1]="&E "+"実行";
    $menu[2]="&R "+"登録";
    $menu[3]="&M "+"移動";
    $menu[4]="&D "+"削除";
    $menu[5]="&V "+"Version";
    #menu_su= 6;
    menuarray $menu, #menu_su;
    if(result==0){goto LEND;}
    else if (result==1){goto MODE;}
    else if (result==2){goto JIKKOU;}
    else if (result==3){goto TOUROKU;}
    else if (result==4){goto IDOU;}
    else if (result==5){goto SAKUJO;}
    else if (result==6){goto VERSION;}

LEND:
    freedll;
    endmacro;

TOUROKU:
    //田楽DLLのロード実施
    call DengakuDll ;

    //フォルダ選択
//  $$AccFol = $Homedir +  $$account + "\\" + $Def;
    $$AccFol = $Homedir +  $$account ;
    call DIROPEN $$AccFol ;
    $$SelFolder = $$return ;
    //選択フォルダの確認(文字列の確認)
    call Str_check $$SelFolder,"選択したフォルダに異常がありました。\n" + $$
info ;

//  message "選択されたフォルダは\n"+$$SelFolder;
    //existfile=ファイルが存在するかどうか
    #wk = existfile( $$SelFolder );
    if( !#wk ){
        message $$SelFolder +"が存在しません。";
        goto LEND;
    }
    call ChkFolder $$AccFol ,$$SelFolder ;
    $RecFolder = $$return ;

    //コメント登録
    $$mes = "登録するフォルダ:\n" +
            $RecFolder + "\n" +
            "のコメントを入力してください";
    $m_name = input ($$mes,$RecFolder) ;
    if(!result){goto LEND;}
   
    $sget = $key0 ; //Title
    call MENU_SU $sel ,$sget, $file;
    #menu_su = ##return;
    writeinistr $file, $sel, "#" + str( #menu_su ) +"_"+ $sget, $m_name ;

    $sget = $key1 ; //Macro
    writeinistr $file, $sel, "#" + str( #menu_su ) +"_"+ $sget, $RecFolder ;
    message "登録完了";
    goto LEND;

JIKKOU:
    $sget = $key0 ; //Title
    $add = "□フォルダ移動の実行□";
    call MENU_SU $sel ,$sget, $file , $add ;
    #menu_su = ##return;
    if(#menu_su == 0){
        message "マクロ未登録";
        goto LEND;
    }
JIKKOUMENU:
    //------------------//
    //      マクロ選択     //
    //------------------//
    //種類の選択 menu1
   
    menuarray $menu, #menu_su;
    //menu1結果による分岐
   
    if     (result == 0){
        message "Cancelしました";
        goto LEND;
    }
    else if(result == #menu_su){
        goto JIKKOUMENU ;
    }
    else {
        $sget = $key1  ;    //Macro
        $RecFolder = getinistr( $file, $sel, "#" + str( result - 1 ) + "_"+
$sget );
        if($RecFolder==""){message "フォルダ名取得失敗";goto LEND}
    }
    //execmacro $mac;
    call Exec_Move $$account,$RecFolder;
   
    goto LEND;
   
IDOU:
    $sget = $key0 ; //Title
    $add = "□移動元のフォルダ指定□";
    call MENU_SU $sel ,$sget, $file ,$add;
    #menu_su = ##return;
    if(#menu_su == 0||#menu_su == 1){
        message "移動するフォルダ登録がありません";
        goto LEND;
    }
    $add ="";
    //------------------//
    //      マクロ選択     //
    //------------------//
    //種類の選択 menu1
    call IDOUMENU ;
    #sel = ##return ;   //移動元
   
    $add = "■移動先のフォルダ指定■";
    call MENU_SU $sel ,$sget, $file ,$add;
    $add ="";
    call IDOUMENU "on";
    #mov = ##return ;   //移動先

    //登録の移動
    if     (#sel == #mov)
        goto LEND ;
    else if(#sel <  #mov){
        $sget = $key0  ;    //Title
        $wk1 = getinistr($file,$sel,"#" + str( #sel - 1 ) + "_"+ $sget);
        $sget = $key1  ;    //Macro
        $wk2 = getinistr($file,$sel,"#" + str( #sel - 1 ) + "_"+ $sget);
        call MOVE #sel ,#mov-1 ;
        $sget = $key0  ;    //Title
        writeinistr $file, $sel, "#" + str( #mov - 2 ) + "_"+ $sget, $wk1 ;
        $sget = $key1  ;    //Macro
        writeinistr $file, $sel, "#" + str( #mov - 2 ) + "_"+ $sget, $wk2 ;
    }
    else{   //if(#sel >  #mov){
        $sget = $key0  ;    //Title
        $wk1 = getinistr($file,$sel,"#" + str( #sel - 1 ) + "_"+ $sget);
        $sget = $key1  ;    //Macro
        $wk2 = getinistr($file,$sel,"#" + str( #sel - 1 ) + "_"+ $sget);
        call MOVE_R #sel ,#mov ;
        $sget = $key0  ;    //Title
        writeinistr $file, $sel, "#" + str( #mov - 1 ) + "_"+ $sget, $wk1 ;
        $sget = $key1  ;    //Macro
        writeinistr $file, $sel, "#" + str( #mov - 1 ) + "_"+ $sget, $wk2 ;
    }
//  goto JIKKOU;
    goto LEND;

SAKUJO:
    $sget = $key0 ; //Title
    $add = "□フォルダの登録削除□";
    call MENU_SU $sel ,$sget, $file , $add;
    #menu_su = ##return;
    if(#menu_su == 0){
        message "削除するフォルダ登録がありません";
        goto LEND;
    }
    //------------------//
    //      マクロ選択     //
    //------------------//
    //種類の選択 menu1
   
    menuarray $menu, #menu_su;
    //menu1結果による分岐
    if     (result == 0){
        message "Cancelしました";
        goto LEND;
    }
    #res = result ;
    //登録の削除
    #menu_su = #menu_su - 1;
    $sget = $key0  ;    //Title
    writeinistr $file, $sel, "#" + str( #res - 1 ) + "_"+ $sget, "" ;
    $sget = $key1  ;    //Macro
    writeinistr $file, $sel, "#" + str( #res - 1 ) + "_"+ $sget, "" ;
    if (#res != #menu_su){  //削除した番号が最後の番号でないとき
        call MOVE #res ,#menu_su ;
    }
//  goto JIKKOU;
    goto LEND;

VERSION:
    message $$account + $$info ;
    goto LEND;

MENU_SU:
    $$wk1 = $$1;
    $$wk2 = $$2;
    $$wk3 = $$3;
    $$wk4 = $$4 ;   //menu の臨時追加
    ##menu_su = 0;
    while( ##menu_su < 36 )
    {
        $title = getinistr( $$wk3, $$wk1, "#" + str( ##menu_su ) +"_"+ $$wk2 );
        if( $title == "" )
        {
            break;
        }

        //---- 選択用のキーを求める ----//
        if( ##menu_su < 10 )
        {
            $wk = str( ##menu_su );
        }
        else
        {
            $wk = char( 0x61 + ##menu_su - 10 );
        }
        $menu[##menu_su] = "&" + $wk + " " + $title;
        ##menu_su = ##menu_su + 1;
    }
    if($$wk4 != ""){
        $menu[##menu_su] = $$wk4;
        ##menu_su = ##menu_su + 1;
    }
return ##menu_su ;

MOVE:
    ##sel_no = ##1; //選択した番号
    ##men_no = ##2; //メニュー数
    ##a = ##sel_no;
    while( ##men_no != ##a ) {
        // $key0,$key1=Title,Macroを移動する
        ##i = 2;
        while( ##i > 0 ) {
            if(##i == 2){$sget = $key0  ;}  //Title
            else        {$sget = $key1  ;}  //Macro
            //read
            $$wk = getinistr( $file, $sel, "#" + str( ##sel_no ) + "_"+ $sge
t );
            if($$wk==""){message "フォルダ名取得失敗_"+str(##a)+str(##i);got
o LEND}
            //write
            writeinistr $file, $sel, "#" + str( ##sel_no -1 ) + "_"+ $sget,
$$wk ;
            //移動元を削除
            writeinistr $file, $sel, "#" + str( ##sel_no  ) + "_"+ $sget, "" ;
            ##i = ##i - 1;
        }
       
        ##a = ##a + 1;
        ##sel_no = ##sel_no + 1;
    }
return ;

MOVE_R:
    ##sel_no = ##1; //選択した番号
    ##men_no = ##2; //移動先の番号
    ##a = ##sel_no - ##men_no ;
    while( ##a != 0) {
        // $key0,$key1=Title,Macroを移動する
        ##i = 2;    //2回繰り返す
        while( ##i > 0 ) {
            if(##i == 2){$sget = $key0  ;}  //Title
            else        {$sget = $key1  ;}  //Macro
            //read
            $$wk = getinistr( $file, $sel, "#" + str( ##sel_no - 2) + "_"+ $
sget );
            if($$wk==""){message "フォルダ名取得失敗"+str(##a)+str(##i);goto
 LEND}
            //write
            writeinistr $file, $sel, "#" + str( ##sel_no -1) + "_"+ $sget, $
$wk ;
            ##i = ##i - 1;
        }
       
        ##a = ##a - 1;
        ##sel_no = ##sel_no - 1;
    }
return ;


IDOUMENU:
    $$wk1 = $$1 ;
    menuarray $menu, #menu_su;
    //menu1結果による分岐
    if(result == 0){
        message "Cancelしました";
        goto LEND;
    }
    else if(result == #menu_su )
        if($$wk1 == "")
            goto IDOUMENU ; //タイトル選択時の処理
       
    ##res = result ;
return ##res ;

Exec_Move:  
//引数渡し
$$account = $$1;
$$MoveFolder = $$2;
    ##n = dllfunc( "SelectFolder", $$account, $$MoveFolder );
    $$mes = "フォルダの移動に失敗しました\n" +
            "移動先アカウント:" + $$account + "\n" +
            "移動先フォルダ:" + $$MoveFolder + "\n" + $$info ;
    call Res_check ##n, $$mes;
   
return ;

Turukame:   //鶴亀メール起動チェック&DLLロード
$$info = $$1;
    //鶴亀インストールフォルダを取得する。
    call Get_ins $$info;
    $$TuruKameDir = $$return ;

    // DLL を Load する
    loaddll $$TuruKameDir + "\\tkinfo.dll";
    if( !result ) {
    message "DLLロードに失敗\n"+$$info;
    endmacro;
    }
return ;

DengakuDll:   //DengakuDll ロード
$$info = $$1;
    // DLL を Load する
    $$DLL = "DengakuDLL.dll" ;
    loaddll hidemarudir + "\\" + $$DLL;
    if( !result ) {
        message $$DLL + "のロードに失敗\n"+$$info;
        $$mes = "田楽DLLが存在しません。\n"+
                "田楽DLLを\n" +
                hidemarudir + "\n"+
                "ディレクトリにインストールしてください\n";
        message $$mes;
    endmacro;
    }
return ;

Get_ins:
$$info = $$1;
    openreg "CURRENTUSER","Software\\Hidemaruo\\TuruKame\\Config";
    if( !result ) {
    message "鶴亀がインストールされてないです (^^;)\n"+$$info;
    closereg ;
    goto LEND;
    }

    $$TuruKameDir = getregstr( "TuruKameDir" );
    closereg ;
return $$TuruKameDir;

Res_check:
//処理:処理の判定&メッセージ表示
    //引数渡し
    ##num = ##1;    $$mes = $$2 ;
    if(##num != 1){
        message $$mes ;
        goto LEND;
    }
return ;

Str_check:
//処理:文字列の判定&メッセージ表示
    //引数渡し
    $$str = $$1;    $$mes = $$2 ;
    if($$str == ""){
        message $$mes ;
        goto LEND;
    }
return ;

Debug:
//DEBUG用に各情報を秀丸ディレクトリの下の"debug.ini"ファイルに書き込む
    //引数渡し
    $$fname = $$1 ;         //実行マクロファイル名
    $$debug_f = $$2 ;       //デバック情報書き込みファイル名

    $$date                      = date + " " time ;
    ##IsTuruKame            =  dllfunc( "IsTuruKame") ;
    ##IsTuruKameMain            = dllfunc( "IsTuruKameMain") ;
    ##CurrentPane               = dllfunc( "CurrentPane");
    $$CurrentAccount            = dllfuncstr("CurrentAccount");
    $$CurrentFolder             = dllfuncstr( "CurrentFolder" );
    ##IsThreadView              = dllfunc("IsThreadView");
    ##MailIndex                 = dllfunc("MailIndex");
    ##ViewArea                  = dllfunc("ViewArea");

    writeinistr $$debug_f, $$fname, "Date", date + " " time ;
    writeinistr $$debug_f, $$fname, "Fname", $$fname ;
    writeininum $$debug_f, $$fname, "IsTuruKame", ##IsTuruKame ;
    writeininum $$debug_f, $$fname, "IsTuruKameMain", ##IsTuruKameMain ;
    writeininum $$debug_f, $$fname, "CurrentPane", ##CurrentPane ;
    writeinistr $$debug_f, $$fname, "CurrentAccount", $$CurrentAccount ;
    writeinistr $$debug_f, $$fname, "CurrentFolder", $$CurrentFolder ;
    writeininum $$debug_f, $$fname, "IsThreadView", ##IsThreadView ;
    writeininum $$debug_f, $$fname, "MailIndex", ##MailIndex ;
    writeininum $$debug_f, $$fname, "ViewArea", ##ViewArea ;
return;

Debug_del:
    //引数渡し
    $$fname = $$1 ;         //実行マクロファイル名
    $$debug_f = $$2 ;       //デバック情報書き込みファイル名

    writeinistr $$debug_f, $$fname, 0, 0 ;
return;

DIROPEN:
//  「フォルダの指定」ダイアログのテスト
//引数渡し
$$Homedir = $$1;
//  message $$Homedir ;

$$name = dllfuncstr("GETDIRNAME",
            hidemaruhandle(0),  //  オーナーウィンドウのウィンドウハンドル
            "「フォルダの指定」ダイアログのテスト", //  タイトル
            $$Homedir   //  初期フォルダ名(ここでは秀丸フォルダを指定)
        );
if ($$name == "") {
    message "キャンセルされました。";
    goto LEND;
}
//else message "選択されたフォルダは\n" + $$name + "\nです。";
return $$name ;

ChkFolder:
//  「フォルダの指定」ダイアログのテスト
//引数渡し
$$AccFol = $$1;
$$SelFolder = $$2;
    //文字列長の取得
    ##str_len1 = strlen($$AccFol) ;                     //定義文字列の長さを
取得
    $$get_str = leftstr($$SelFolder,##str_len1) ;
    //指定したフォルダが実行したアカウント下であることを確認する。
    if($$AccFol != $$get_str){
//      $$mes = "指定したフォルダが、実行アカウントの" + $Def +
        $$mes = "指定したフォルダ:" + $$SelFolder +
                "\nが、実行アカウント" + $$AccFol +
                "フォルダ下ではありません!\n" +
                $$AccFol + "\n" +
                "フォルダの下を指定してください\n\n"+
                "選択されたフォルダ:\n"+
                $$SelFolder ;
        message $$mes ;
        goto LEND;
    }
    else{
//      message "ok";
    }

//  setclipboard str(strlen($$AccFol)) ;
    //例:
    // $$AccFol=D:\uty\TuruKame\kfukuda
    // strlen($$AccFol)=23
    // $$SelFolder=D:\uty\TuruKame\kfukuda\受信ログ
    // strlen($$SelFolder)=32
    // D:\uty\TuruKame\kfukuda\受信ログ
    // 0         1         2         3         4
    // 01234567890123456789012345678901234567890
    // midstr($$SelFolder,24,9) ;

    //受信フォルダ下の情報を取得
    $$get_str = midstr($$SelFolder,##str_len1+1,strlen($$SelFolder)-##str_le
n1) ;
//  $$get_str = $Def + $$get_str ;
    $$get_str = $$get_str ;

return $$get_str ;

[ ]
RE:00067 マクロ作成依頼、"特定フォルダNo.00068
エイト さん 02/05/15 20:50
 
 いつもお世話になっております。

公開していただいたマクロ、まさに当方の望むものです。

 私も勉強がてら、公開していただいたマクロを自分流に
改造したりして利用させていただきます。

今回は、本当にありがとうございました!

[ ]