サクラエディタのマクロでは無理ですが、
UWSC Free (http://www.uwsc.info/) とか使えばできますね。
# 当たり前ですけど
----- SAKCLOSE.UWS -----
// サクラエディタのウィンドウの状態をファイル SAK_BOOT.BAT に
// メモしながら全て閉じる。
// SAK_BOOT.BAT を実行すると、元と同じ状態で開かれる。
//# Windows 95系の場合、あらかじめ SAK_BOOT.BAT のプロパティの
//# [プログラム]タブにて
//# ・実行時の大きさ:[最小化の状態]
//# ・プログラム終了時にウィンドウを閉じる ← チェックON
//# に設定しておくのがお勧め。
// タブバーを、ウィンドウをまとめる設定で使用している場合、各ウィンドウグループ毎の
// 位置・サイズは復帰しない。(全て一つのタブグループにまとめて開かれる)
SakuraEditor = "C:\PROGRA~1\SAKURA\SAKURA.EXE" // サクラエディタのパス - 短いMS-DOSファイル名で
WM_COMMAND = $0111
// ↓ ssrc_2007-07-08\sakura_core\Funccode.h 参照
F_COPYPATH = 30620 //このファイルのパス名をクリップボードにコピー
F_COPYTAG = 30621 //このファイルのパス名とカーソル位置をコピー
F_COPYFNAME= 30622 //このファイル名をクリップボードにコピー
F_WINCLOSE = 31320 //ウィンドウを閉じる
F_EXITALL = 30195 // サクラエディタの全終了
FP = fopen("SAK_BOOT.BAT",F_WRITE) // バッチファイル
num = GETALLWIN() // 全てのウィンドウの一覧作成
For i = 0 to num-1 //{
ID = ALL_WIN_ID[i]
CLS = STATUS(ID,ST_CLASS) // クラス名
if ( CLS <> "TextEditorWindow" ) then continue // クラス名がサクラエディタではない
SendMessageA( IDTOHND(ID) , WM_COMMAND , F_COPYPATH , 0 ) //このファイルのパス名をクリップボードにコピー
sleep(0.5)
file = GETSTR(0) // クリップボード取得
// コマンドライン作成
cmdl = ""
cmdl = cmdl + "start " + SakuraEditor
cmdl = cmdl + " -WX=" + STATUS(ID,ST_X ) // ウィンドウ位置のX座標
cmdl = cmdl + " -WY=" + STATUS(ID,ST_Y ) // ウィンドウ位置のY座標
cmdl = cmdl + " -SX=" + STATUS(ID,ST_WIDTH ) // ウィンドウの幅
cmdl = cmdl + " -SY=" + STATUS(ID,ST_HEIGHT) // ウィンドウの高さ
cmdl = cmdl + " <#DBL>" + file + "<#DBL>" // 編集中ファイルのパス名
fput(FP,cmdl) // バッチに1行追記
SendMessageA( IDTOHND(ID) , WM_COMMAND , F_WINCLOSE , 0 ) //ウィンドウを閉じる
Next //}
fclose(FP)
// ↓タスクトレイも終了させる場合
// SendMessageA( IDTOHND(EXEC(SakuraEditor)) , WM_COMMAND , F_EXITALL , 0 ) // サクラエディタの全終了
exitexit
DEF_DLL SendMessageA(HWND,LONG,LONG,DWORD):LONG:user32.DLL
----------