2019年10月13日日曜日

現在窓の位置を複数記憶(UserDataバージョン)


現在窓の位置を複数記憶し、再現できるようにする。
以前の記事では同じことをエイリアスを使用して行ったが、今回はユーザーデータを使用する。

Script


以前のSetDimensions.jsとほぼ同じだが、区切り文字を「,」から「;」に変更している。

SetDimensions2.js

//!*script 
// 窓の位置と大きさを変更する
// 第一引数:"x;y;width;height"
// PPXMES.DLLとPPXWIN.DLLが必要

// 引数がなければ終了
if (PPx.Arguments.Length < 1){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var hoge = PPx.Arguments.Item(0).split( ";" );

// 実行元が一体型PPcかそれ以外かで分岐
if (PPx.GetComboItemCount != 0&&PPx.Extract('%n').substr(0,1)=="C"){
  PPx.Execute("*windowposition %*findwindowclass\(\"PaperPlaneCombo\"\)"+","+hoge[0]+","+hoge[1]); // 位置の変更
  PPx.Execute("*windowsize %*findwindowclass\(\"PaperPlaneCombo\"\)"+","+hoge[2]+","+hoge[3]); // 大きさの変更
} else {
  PPx.Execute("*windowposition %N"+","+hoge[0]+","+hoge[1]); // 位置の変更
  PPx.Execute("*windowsize %N"+","+hoge[2]+","+hoge[3]); // 大きさの変更
}


窓の位置を登録


*script %0\Script\setSeqUserData.js,ppvpos,%*windowrect(,l);%*windowrect(,t);%*windowrect(,w);%*windowrect(,h)

これを実行するたび、ppvpos0 ppvpos1 ppopos2…に現在窓の位置と大きさ(x;y;width;height)を登録する。

窓の位置を変更


*script %0\Script\SetDimensions2.js,%*script(%0\Script\getSeqUserData.js,ppvpos)

getSeqUserData.jsを実行するたび、順次ppvpos0 ppvpos1 ppopos2…の中身を返すので、その値を使いSetDimentions2.jsで窓の位置と大きさを変更する。

登録例


僕はPPVに2ストロークキーで登録。


  • C_s,s 登録
  • C_s,C_s 実行
  • C_s,e エディタで編集

-|K_SetPPvDimensions =

KV_main = { ; PPvメイン窓
^S ,*setnextkey K_SetPPvDimensions
}

K_SetPPvDimensions = { ** comment **
S , *script %0\Script\setSeqUserData.js,ppvpos,%*windowrect(,l);%*windowrect(,t);%*windowrect(,w);%*windowrect(,h)
^S ,*script %0\Script\SetDimensions2.js,%*script(%0\Script\getSeqUserData.js,ppvpos)
E , *ppb -c *string o,name=%%*script(%%0\Script\SeqUserData2file.js,ppvpos) %%: %%Obsq xyzzy %%so"name" %%: *script %%0\Script\file2SeqUserData.js,ppvpos,%%so"name"
}


0 件のコメント:

コメントを投稿