// mk_workspace1.uws // 左クリックしたウィンドウのワークスペース(ウィンドウの位置・大きさ)を // uwsファイルとしてデスクトップに書き出します(ファイル名 workspace1.uws)。 // タイトルバーにフルパスやファイル名が表示されている場合、" - "より前の部分は無視します。 // 例) "新規ドキュメント 1 - Inkscape" → " - Inkscape" // デスクトップに書き出されたworkspace1.uwsを実行すると、いつでもそのウィンドウが記録時 // の位置に復元します(作成されたuwsは別の場所に移動してもokです)。 // 記録時にクリックしたウィンドウが存在しなければ無視します。 // workspace1.uwsが既にデスクトップに存在した場合、メッセージで「はい」を押すと内容が破棄 // されて上書きされます。用途別にファイル名をリネームされる事をおすすめします。 // 一応重複チェックを行いますが、window1 -> window2 -> window1といった形で別の行を跨いで // 同じウィンドウが登録されても重複した行は削除されないのでご注意ください。 // ※長年使用したマウスの接点不良やクリックの仕方によって重複して書き込まれる場合があります。 if MsgBox("OKボタンを押した後、ワークスペースを保存するウィンドウのタイトルバーを<#cr>"+_ "1回ずつクリックしてください。<#cr>[Tab]キーを押すとデスクトップにworkspace1.uwsを作成します。",_ Btn_ok or Btn_abort)=Btn_abort then Exit bs="\" mk_workspace=Copy(GET_APPDATA_DIR,1,pos(bs,GET_APPDATA_DIR,-1))+"デスクトップ\workspace1.uws" ifb Fopen(mk_workspace,F_exists)=1 ifb MsgBox("既存の"+mk_workspace+"が存在します。上書きしますか?<#cr><#cr>",Btn_yes or Btn_abort,,Btn_abort)=Btn_abort Exit endif endif fid=Fopen(mk_workspace,F_write) while true Sleep(0.2) ifb Getkeystate(VK_LBUTTON) caption=Status(GetID(Get_active_win),St_title) if pos(" - ",caption)>1 then caption=Copy(caption,pos(" - ",caption,-1),(val(length(caption)))-(val(pos(" - ",caption,-1))-1)) if pos(": XMLエディタ(X) (Shift+Ctrl+X)",caption)>1 then caption=": XMLエディタ(X) (Shift+Ctrl+X)" caption="<#dbl>"+caption+"<#dbl>," w_class=Status(GetID(Get_active_win),St_class) if (w_class="TFOya.UnicodeClass") or (w_class="") then Continue w_class="<#dbl>"+w_class+"<#dbl>)," w_ofs_x=Status(GetID(Get_active_win),St_x)+"," w_ofs_y=Status(GetID(Get_active_win),St_y)+"," w_width=Status(GetID(Get_active_win),St_width)+"," w_height=Status(GetID(Get_active_win),St_height)+",200)" Fput(fid,"ACW(GETID("+caption+w_class+w_ofs_x+w_ofs_y+w_width+w_height) elseif Getkeystate(VK_TAB) Fclose(fid) Sleep(0.2) break endif wend fid=Fopen(mk_workspace,F_read or F_write) lines=1 while True Sleep(0.2) if Fget(fid,lines)="" then break ifb Fget(fid,lines)<>Fget(fid,val(lines)+1) lines=val(lines)+1 Continue else Fdelline(fid,val(lines)+1) Sleep(0.2) endif wend Fclose(fid) Sleep(3) MsgBox("done")