メッセージボックスによるスリープ移行のNo.35829
nernstian さん 09/03/10 20:16
 
はじめまして.
さっそくですが質問させて下さい.

account.bin に書き込み属性を付して、鶴亀メールを終了あるいは
起動したままスタンバイまたは休止モードに移行しようとすると、
以下のメッセージボックスが現れてスリープへの移行を
ブロックしてしまいますよね?

「ファイルへのアクセスが拒否されたため、処理が続行できません。たぶん、他のプ
ロセスがファイルに排他制御をかけています。
ファイル名=…\account.bin
発生場所=config.cpp (4504)」

このメッセージを表示しない、あるいはスリープに制御を返すように
する設定はありますでしょうか?

OS:Windows XP SP2
鶴亀メール:version 5.15

ノートPCは外の環境での「account.bin」で固定したいため、
書込み禁止で運用しています.そうすると、
・液晶を閉める→・スリープのはずが、上の状態で止まる
→・PC起動したまま持ち運び&バッテリ切れで強制シャットダウン
となってしまい、肝を冷やしたことが数度あります.

[ ]
RE:35829 メッセージボックスによるスリーNo.35833
秀まるお2 さん 09/03/11 09:11
 
 account.binの書き込み禁止を解除すればいいと思いますけど、そういう訳に
はいかないのでしょうか。

 account.binの内容が書き換えられるのがいやでしたら、account.binファイル
をどこか別の所にバックアップしておいて、それを秀丸メール起動時にコピーす
るような、そういうバッチファイルを作っておけばいいと思います。

 そういう作戦でどうでしょ?

[ ]
RE:35833 メッセージボックスによるスリーNo.35837
nernstian さん 09/03/11 14:38
 
返信ありがとうございます.

ノートPCは時々しか使わないので、
出かける前にメールのホームディレクトリを
メインPCからミラーリングしています.

このとき、メインPCとノートPCでメールの設定
が異なる(例えばSMTPサーバ、ノートからはサーバーの
メールを消さない→帰ってからメインPCで受信)ので、
ノートPCの方は account.bin を上書きしないように
しています.

おっしゃるように、毎回書き戻す方法も考えたのですが、
起動中にミラーリングしたときにどうなるか?が
気になっていました.鶴亀メール実行中に account.bin を
再読み込みすることはありますか?
(起動するタイミングでしか読み込まないのであれば、
 その方法で対処することにいたします)

ただいずれにせよ、ノートPCの場合、スリープを
ブロックしてしまう仕様は致命傷になり兼ねないので、
今後、検討して頂ければと存じます.

[ ]
RE:35837 メッセージボックスによるスリーNo.35838
秀まるお2 さん 09/03/11 15:12
 
 account.binファイルは、一度読み込んだらずっとメモリ上にキャッシュして
います。

 秀丸メール動作中にaccount.binファイルが裏で書き換わったとしても、それ
は秀丸メールはまったく関知しないので、動作には支障無いはずだと思います。

 (実際やってみた訳では無いので絶対大丈夫とは断言出来ませんが)

 あと、account.binファイルには、フォルダの折りたたみ/展開状態なども保
存されるので、アカウント毎の設定を特にいじらなくても勝手に書き換えられる
ことはあります。

--------------------------------
 エラーメッセージが出てるとスリープしないっていうWindowsの動作自体を変
更出来ればもっといいんだと思いますけど…。僕にはよく分かりません。

[ ]
RE:35837 メッセージボックスによるスリーNo.35840
Iranoan さん 09/03/11 16:19
 
 nernstian さん今日は、Iranoan です。
 横から失礼します。
> このとき、メインPCとノートPCでメールの設定
> が異なる(例えばSMTPサーバ、ノートからはサーバーの
> メールを消さない→帰ってからメインPCで受信)
 設定を切り替えるマクロを用意して、それで切り替えてはどうでしょう。自
動でメインとノートを見分けるのは無理だと思いますが、例えば、
・変更するのが最初のアカウントだけ (他のアカウントを変えるといけないので)
・メイン PC で使う SMTP が smtp.main.co.jp
・ノート PC で使う SMTP が smtp.note.co.jp
・それ以外で切り替えるのは、ノート PC でメールを消さない (残すのが 1)
だとすると、次のようになります。
//------------------------------------------------------------
loaddll "tkinfo.dll";
$account = dllfuncstr( "CurrentAccount" );
if( $account != dllfuncstr( "Account", 0 ) )goto End;
if( !dllfunc( "LoadAccountProp", $account ) )
  call Error "アカウント情報取得失敗";
$smtp = dllfuncstr( "GetAccountProp", "szSmtpServer" );
if( $smtp == "smtp.main.co.jp" )call Change "smtp.note.co.jp", 0;
else if( $smtp == "smtp.note.co.jp" )call Change "smtp.main.co.jp", 1;
else call Error "SMTP がどの設定とも一致しない";
if( !dllfunc( "SaveAccountProp" ) )call Error "アカウント情報保存失敗";
goto End;

Error:
  message $$1;
End:
  freedll;
  endmacro;

Change:
  if( !dllfunc( "SetAccountProp", "szSmtpServer", $$1 ) )
    call Error "SMTP 書き換え失敗";
  if( !dllfunc( "SetAccountProp", "fSaveOnServer", ##2 ) )
    call Error "サーバに残す設定切り替え失敗";
  return;

[ ]
RE:35838 メッセージボックスによるスリーNo.35843
nernstian さん 09/03/11 17:12
 
返信ありがとうございました.

> 秀丸メール動作中にaccount.binファイルが裏で書き換わったとしても、それ
>は秀丸メールはまったく関知しないので、動作には支障無いはずだと思います。

分かりました、ありがとうございました.
それではそのように運用いたします.

> エラーメッセージが出てるとスリープしないっていうWindowsの動作自体を変
>更出来ればもっといいんだと思いますけど…。僕にはよく分かりません。

OS側の問題でしたか、それは失礼しました、
だとすると、スリープのタイミングでメッセージボックスを出す
アプリケーションは須く注意しなくてはならないのですね….

ありがとうございました.

[ ]
RE:35840 メッセージボックスによるスリーNo.35844
nernstian さん 09/03/11 17:21
 
Iranoan様

すみません、せっかく返信を頂いたのに、更新しておらず
見落としていました.

マクロありがとうございます.とても参考になります.

>自動でメインとノートを見分けるのは無理だと思いますが、例えば、
これも自分のPCに限定すれば不可能ではなさそうですね.

ただ今回は、
・他にもPOP before SMTP のアカウント・パスワードなど
 いくつか書き換える
・出張前や出先でバタバタしているので、なるべく手数を減らしたい
というのがありますので、account.bin まるごと変更で対応したいと
思います.


ありがとうございました.

[ ]
RE:35844 メッセージボックスによるスリーNo.35845
Iranoan さん 09/03/11 18:40
 
 nernstian さん今日は、Iranoan です。
> ・他にもPOP before SMTP のアカウント・パスワードなど
>  いくつか書き換える
に関しては、
> > if( $smtp == "smtp.main.co.jp" )call Change "smtp.note.co.jp", 0;
の引数 (下線部分) の数を増やす事と              ^^^^^^^^^^^^^^^^^^^^^
>   if( !dllfunc( "SetAccountProp", "szSmtpServer", $$1 ) )
>     call Error "SMTP 書き換え失敗";
>   if( !dllfunc( "SetAccountProp", "fSaveOnServer", ##2 ) )
の "szSmtpServer" や "fSaveOnServer" の部分を書き直して適宜増やしてい
くと、それ程苦労せずに書き直す事も出来ます。どういった文字列になるかは、
マクロ・ヘルプに書いて有ります。
 もしプログラムを書くことにそれ程違和感が無いときのご参考までに。

 P.S どれの変更が必要か? が解れば、投稿できます。

[ ]
RE:35845 メッセージボックスによるスリーNo.35847
nernstian さん 09/03/11 19:33
 
Iranoan様

返答ありがとうございます.

> P.S どれの変更が必要か? が解れば、投稿できます。
ありがとうございます.ところが、実は自分でも
把握しておらず、とりあえず動いているので、
「もう account.bin をPCごと固定でいいや!」という発想
に至ってしまった、というのもあります.

もう1つには、POP before SMTPのパスワードを書き換えなければ
ならないのですが、マクロに書き込むとなると平文に
なってしまうのですよね?
これがあまり気持ち良いものではなくて….

マクロを書くというのは正攻法ですので使わない手はありませんし、
将来的に今以上の環境の切り替えの必要も出てきた場合は
ありがたく頂いたマクロをベースにさせて頂こうと思いますが、
とりあえずは 秀まるお2 さんの提案の方が、
私にとっては有用のようです.

ご助言感謝いたします.

[ ]
RE:35847 メッセージボックスによるスリーNo.35850
Iranoan さん 09/03/11 20:30
 
 nernstian さん今日は、Iranoan です。
> ところが、実は自分でも
> 把握しておらず、とりあえず動いているので、
> 「もう account.bin をPCごと固定でいいや!」という発想
> に至ってしまった、
 ありがちですね(^^)。

> マクロを書くというのは正攻法ですので使わない手はありませんし、
> 将来的に今以上の環境の切り替えの必要も出てきた場合は
 以下この時の話です。その時の参考にでもしてください。
> POP before SMTPのパスワードを書き換えなければ
> ならないのですが、マクロに書き込むとなると平文に
> なってしまうのですよね?
> これがあまり気持ち良いものではなくて….
は確かに気になります。account.bin が幾らバイナリだとしても、「どの程度
解りにくくしているのか?」と比べないと、どちらが安全化は不明ですが....。
 私が思いつく対処法は、PGP/GPG との併用です。やり方が解らなければ、外
の気にまた聞いて頂ければ良いですが、大雑把な流れとしては次の通りです。
(1) アカウント毎に、account_name.ini といった名前で、
    [DATA]
    password="kore_ha_himituno_password"
    send_account_password="kore_ha_soushinnyou"
    smtp_password="smtp_pass"
    といった暗号化しておきたい内容のファイルを作成し、PGP/GPG で暗号化
    しておく。→account_name.ini.gpg といったファイルが出来る
(2) account_name.ini は削除しておく
(3) マクロでこれらの情報が必要なら、マクロ から PGP/GPG を起動して、
    account_name.ini.gpg を複合
     PGP はもう使っていないので詳細は解りませんが、GPG の場合、
    run "cmd.exe /c C:\\GnuPG\\gpg.exe " + $1;
    とすれば、コマンド・プロンプトが現れ、パスフェースが入力できる。
(4) 複合したファイルから、getinistr() 関数を使ってデータを取得
(5) Bypass_DeleteFile() を使って複合化したファイルを削除

[ ]
RE:35850 メッセージボックスによるスリーNo.35859
nernstian さん 09/03/12 13:21
 
Iranoan様

なるほど、PGPを使うのですね.
確かにファイルとしてパスワードは残りませんが…
復元にパスフレーズが必要なのであれば、
直接POPパスワードを打ち込むのと
あまり変わらない気がしますが…?
(私の理解不足であれば申し訳ありません)

>は確かに気になります。account.bin が幾らバイナリだとしても、「どの程度
>解りにくくしているのか?」と比べないと、どちらが安全化は不明ですが....。
おっしゃる通り、どうやったって、気休めではあるんですよね.

今のところは、私にとって account.bin の書き換えが
運用上は最適と判断しますが、今後参考にいたします.
また、コードが他の方の参考にもなると良いですね.

[ ]
RE:35859 メッセージボックスによるスリーNo.35860
Iranoan さん 09/03/12 14:05
 
 nernstian さん今日は、Iranoan です。
> 直接POPパスワードを打ち込むのと
> あまり変わらない気がしますが…?
 今確かめたら、パスワードの設定を空にしても、「秀丸メール終了時までパ
スワードを保持する」があるので殆ど変わりませんね。
 持ち出しキットで使う場合、キー・ロガーが仕組まれていたりするとかえっ
て怖いので、パスワードを保存して使っている為気が付きませんでした(^^;。

[ ]