|
えええええええええええええええええ!!!!!
あの〜作ってくれちゃったんですか……
取り急ぎ、御礼申し上げます!!!
試させていただきますね
> そのマクロの存在場所はちょっと分からないので、とりあえず僕の作った添付フ
>ァイル圧縮マクロを少し改良してパスワード通知メールも生成するようにしてみま
>した。そんなのでどうでしょうか。
>
>-------------マクロ内容--------------------------------
>// 添付ファイル圧縮-7zip-パスワード別便通知.mac by 斉藤秀夫
>// 2012.02.24
>// 2012.04.02 秀丸メール本体ウィンドウ上で実行してうまくいかないバグ修正。
>// 2013.02.28 既に.zip単独ファイルになってる物は圧縮しない。
>// 2018.10.09 パスワード別便通知
>// 7-zipのダウンロード先: http://sevenzip.sourceforge.jp/
>
>
> //パスワード付きにする場合はここにパスワードを設定しておく。
> //パスワード無しにするなら""を代入する。
> //パスワードを毎回入力したい場合は $password = "*"としておく。
> //パスワードの中には空白は入れないでください。
> //受信したメールの添付ファイルを圧縮する場合についてはパスワードの指定
>は効きません。常にパスワード無しで圧縮されます。
> //
> // 例:
> // $password = ""; ... パスワード無し
> // $password = "pass"; ... パスワードを"pass"にする。
> // $password = "*"; ... パスワードを毎回入力する。
> $password = "*";
>
> loaddll "tkinfo.dll";
> $7zip = "C:\\Program files\\7-Zip\\7z.exe";
> if( ! existfile( $7zip ) ) {
> $7zip = "C:\\Program files (x86)\\7-Zip\\7z.exe";
> if( ! existfile( $7zip ) ) {
> message "7-Zipのプログラム用ファイルが見つかりません。7-Zipをイ
>ンストールしてください。\n\n" +
> "7-Zipは、C:\\Program files\\7-Zip またはC:\\Program fi
>les (x86)\\7-Zip にインストールされてる必要があります。";
> endmacro;
> }
> }
> openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
> $home = getregstr( "HomeDir" );
> closereg;
> $account = dllfuncstr("CurrentAccount");
> if( dllfunc("IsTuruKameMain") ) {
> question "現在選択しているメール(複数も可)の添付ファイルを圧縮し
>ます。よろしいですか?";
> if( result == yes ) goto CompressAll;
> endmacro;
> }
>
> if( dllfunc("MailType") == 3 ) {
> message "受信したメールの添付ファイル・圧縮は、秀丸メール本体上でし
>か実行できません。";
> endmacro;
> }
> if( readonly ) {
> #n = dllfunc("EnableEdit");
> }
> #cAttach = 0;
> while(1) {
> $aAttach[#cAttach] = dllfuncstr("CurrentHeader2", "X-Attach"
> , #cAttach );
> if( $aAttach[#cAttach] == "" ) break;
> #cAttach = #cAttach + 1;
> }
> if( #cAttach == 0 ) {
> message "添付ファイルは1つもありません。";
> endmacro;
> }
> if( #cAttach == 1 ) {
> if( rightstr( $aAttach[0], 4 ) == ".zip" ) {
> message "添付ファイルは既に圧縮されてます。";
> endmacro;
> }
> $dest = $aAttach[0] + ".zip";
> } else {
> $dest = $aAttach[0] + "など.zip";
> }
> while(1) {
> #n = strstr( $dest, "\\" );
> if( #n < 0 ) {
> break;
> }
> $dest = midstr( $dest, #n + 1, 256 );
> }
> $dest = input( "圧縮して作成するファイル名は?", $dest );
> if( $dest == "" ) {
> endmacro;
> }
> if( $password == "*" ) {
> $password = input( "パスワードは?" );
> if( $password == "" ) {
> question "パスワード無しにしますか?";
> if( result != yes ) {
> endmacro;
> }
> }
> }
> if( $password != "" ) {
> $7zip = $7zip + " -p" + $password;
> }
> $tmp = getenv("temp");
> if( $tmp == "" ) {
> $tmp = getenv("tmp");
> }
> if( rightstr($tmp, 1) != "\\" ) {
> $tmp = $tmp + "\\";
> }
> $destbase = $dest;
> $dest = $tmp + $dest;
> #n = dllfunc("Bypass_SetFileAttributes", $dest, 0x00000020);
> #n = dllfunc("Bypass_DeleteFile", $dest);
> //添付ファイル圧縮-7zip.macで修正。
> //$cmd = "-j \"" + $dest + "\"";
> $cmd = "a \"" + $dest + "\"";
> #i = 0;
> while( #i < #cAttach ) {
> $cmd = $cmd + " \"" + $home + $account + "\\" + $aAttach[#i] + "\"";
> #i = #i + 1;
> }
> //添付ファイル圧縮-7zip.macで修正。
> //#n = dllfunc("Zip", hidemaruhandle(0), $cmd);
> runsync2 $7zip + " " + $cmd;
> if( !result ) {
> message "7zipの実行に失敗しました。";
> endmacro;
> }
> #n = dllfunc( "AddAttach", $dest );
> // ファイルの削除
> #n = dllfunc("Bypass_DeleteFile", $dest);
> #i = 0;
> while( #i < #cAttach ) {
> #n = dllfunc( "UndoAttach", $aAttach[#i] );
> #i = #i + 1;
> }
> if( $password != "" ) {
> $to = dllfuncstr("CurrentHeader", "To");
> $subject = dllfuncstr("CurrentHeader", "Subject");
> #n = dllfunc("NewMail");
> #n = dllfunc("SetHeader", "To", $to );
> #n = dllfunc("SetHeader", "Subject", "パスワードの通知 - " + $subje
>ct );
> gofiletop;
> beginsel;
> gofileend;
> delete;
> insert "添付ファイル(" + $destbase + ")の解凍用のパスワードは、
>「" + $password + "」です。\n";
> }
> endmacro;
>
>
>// 受信したメールの添付ファイルを圧縮する処理。
>CompressAll:
> #n = dllfunc("LockSelection");
> #cCompressed = 0;
> #cCompressedMail = 0;
> while( dllfunc("EnumSelection", 1) != 0 ) {
> #attachcount = dllfunc("CountCurrentHeader", "X-Attach");
> if( #attachcount != 0 ) {
> if( #attachcount == 1
> && dllfuncstr("ToLower", rightstr( dllfuncstr("CurrentHeader",
> "X-Attach"), 4 ) ) == ".zip" ) {
> //スキップ
> if( #warningshown == 0 ) {
> #warningshown = 1;
> message "既にzip形式になってる添付ファイルが1つだけあ
>るメールをスキップします。";
> }
> } else {
> #n = dllfunc("BeginEditMail");
> #WantSave = 1;
> #i = 0;
>
> //2006.4.14 複数ファイルをまとめて1つにするバージョン
> $attach = dllfuncstr("CurrentHeader", "X-Attach");
> $path = $home + $account + "\\" + $attach;
> if( #attachcount == 1 ) {
> $lzh = $attach + ".zip";
> $pathLzh = $path + ".zip";
> } else {
> $lzh = $attach + "など.zip";
> $pathLzh = $path + "など.zip";
> }
> //添付ファイル圧縮-7zip.macで修正。
> //$cmd = "-j \"" + $pathLzh + "\"";
> $cmd = "a \"" + $pathLzh + "\"";
> while(1) {
> $attach = dllfuncstr("CurrentHeader2", "X-Attach", #i);
> if( $attach == "" ) {
> break;
> }
> $path[#i] = $home + $account + "\\" + $attach;
> $cmd = $cmd + " \"" + $path[#i] + "\"";
> #i = #i + 1;
> #count = #i;
> #cCompressed = #cCompressed + 1;
> }
> #cCompressedMail = #cCompressedMail + 1;
>
> //添付ファイル圧縮-7zip.macで修正。
> //#n = dllfunc("Zip", hidemaruhandle(0), $cmd);
> runsync2 $7zip + " " + $cmd;
> if( !result ) {
> message "7zipの実行に失敗しました。マクロを中断します。";
> endmacro;
> }
> if( ! existfile( $pathLzh ) ) {
> message "Zip圧縮に失敗しました。(圧縮によって生成され
>たはずのファイルがありません。)";
> #WantSave = 0;
> } else {
> #n = dllfunc("Bypass_SetFileAttributes", $pathLzh, 0x00
>000021); //ReadOnly属性に設定。
> #i = 0;
> while( #i < #count ) {
> #n = dllfunc("Bypass_SetFileAttributes", $path[#i],
> 0x00000020); // ReadOnlyを解除。
> #n = dllfunc("Bypass_DeleteFile", $path[#i]);
> #i = #i + 1;
> }
> while( #i > 0 ) {
> #i = #i - 1;
> #n = dllfunc("DeleteHeader2", "X-Attach", #i);
> }
> #n = dllfunc("SetHeader", "X-Attach", $lzh);
> }
> if( #WantSave ) {
> #n = dllfunc("SaveEditMail", 0);
> } else {
> #n = dllfunc("CancelEditMail");
> }
> }
> }
> }
> #n = dllfunc("UnlockSelection", 1);
> if( #cCompressedMail == 0 ) {
> message "圧縮した添付ファイルはありませんでした。";
> } else {
> message str(#cCompressedMail) + "通のメールの、 " + str(#cCompresse
>d) + "個の添付ファイルを圧縮しました。";
> }
> endmacro;
|
|