|
マクロ作ってみました。
秀丸メール起動時コマンドラインで、「/x マクロ名」って形でマクロ実行さ
せたらいいと思います。
呼び出す側のプログラムとしては、
1.レジストリを見て秀丸メールのホームディレクトリを取り出し、
それを元にiniファイルのパスを作成する。
2.iniファイルに各種情報を書き込む。
3.秀丸メールがまだ起動してない場合はturukame.exe起動の処理をして、
ウィンドウが出てくるまで待つような処理をする。
ウィンドウは、クラス名"TuruKameFrame"でFindWindowすればいいです。
4.turukame.exe /x ".....\\....\\test.mac"みたいな感じでマクロ起動
する。(マクロファイル名はフルパス指定で)
その後プロセスが終了するのを待つ。
C++言語の場合なら、CreateProcessしてからPROCESS_INFORMATION中の
hProcessをMsgWaitForMultipleObjectsでウェイトする、あるいは
タイマーを使ってhProcessを監視するのが普通かと思います。
5.秀丸メールのプロセスが終了したら、iniファイル中の"Error="部分を
見る。
ってな具合でいけると思います。
------------------サンプルマクロ------------------------
loaddll "tkinfo.dll";
openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
$home = dllfuncstr("HomeDir");
$ini = $home + "TestMacroIni.ini";
closereg;
#edit = getininum( $ini, "Data", "edit");
$account = getinistr( $ini, "Data", "account" );
$folder = getinistr( $ini, "Data", "folder" );
$pack = getinistr( $ini, "Data", "pack" );
writeinistr $ini, "Error", "Error", "";
if( $account == "" ) {
#n = dllfunc("SelectFolder", dllfuncstr("Account",0),"");
$pack = $pack + ", subfolder=1, inmail=3";
} else if( $folder == "" ) {
#n = dllfunc("SelectFolder", $account, "" );
$pack = $pack + ", subfolder=1, inmail=2";
} else {
#n = dllfunc("SelectFolder", $account, $folder );
if( #n != 0 ) {
#n = dllfunc("SetViewArea", 0 );
#n = dllfunc("SelectPane", 1 );
#n = dllfunc("SimulateKeyStroke", 0x24, 0, 0, 0 );
}
$pack = $pack + ", subfolder=0, inmail=0";
}
if( #n == 0 ) {
message "フォルダ選択に失敗しました。";
writeinistr $ini, "Error", "Error", "フォルダ選択に失敗しました。";
endmacro;
}
#n = dllfunc("SetFindPack", $pack );
if( #n == 0 ) {
message "FindPackエラー";
writeinistr $ini, "Error", "Error", "FindPackエラー";
endmacro;
}
#n = dllfunc("FindDownInclude");
if( #n == 0 ) {
message "見つかりません。";
writeinistr $ini, "Error", "Error", "Not found";
endmacro;
}
if( #edit != 0 ) {
#n = dllfunc("OpenMail");
}
writeinistr $ini, "Error", "Error", "OK";
endmacro;
|
|