2022年9月14日水曜日

JScriptで指定範囲の画面キャプチャ

 Jscriptで指定範囲の画面キャプチャ


同じフォルダにMouseEmulator.dllと設定ファイルPSC1.txtが必要です。

「WSH JScriptを使いこなそう ~マウス操作~」様

http://jscript.zouri.jp/Source/MouseCtrl.html



処理用ファイル

mouse.js

excel = WScript.CreateObject("Excel.Application")

function psc(str)
{
    //API Command for Mouse Control
    var s1 ="rundll32.exe MouseEmulator.dll, _";
    var s2 ="@16";
    var c1 ="SetMouseXY";
    var c2 ="DownLeft";
    var c3 ="UpLeft";

    //Get current mouse position
    var ret = excel.ExecuteExcel4Macro( "CALL(\"user32\",\"GetMessagePos\",\"J\")" );
    var strHex = ("00000000" + ret.toString(16).toUpperCase()).slice(-8);
    var y = parseInt("0x" + strHex.slice(0, 4),16);
    var x = parseInt("0x" + strHex.slice(-4),16);
    //WScript.Echo(x + "_" + y);

    var buf =str.split(",");

    //Send PrintSCreenKey
    excel.ExecuteExcel4Macro( "CALL(\"user32\",\"keybd_event\",\"JJJJJ\",44,121,1,0)" );
    excel.ExecuteExcel4Macro( "CALL(\"user32\",\"keybd_event\",\"JJJJJ\",44,121,3,0)" );
   
    WScript.Sleep( 900 );

    // MouseDrug
    var sh = new ActiveXObject( "WScript.Shell" );
    sh.Run( s1 + c1 + s2 + " "  + buf[0] + "," + buf[1] );
    sh.Run( s1 + c1 + s2 + " "  + buf[0] + "," + buf[1] );  //call twice to avoid errors
    sh.Run(  s1 + c2 + s2);

    WScript.Sleep( 100 );

    sh.Run( s1 + c1 + s2 + " " + buf[2] + "," + buf[3] );
    sh.Run(  s1 + c3 + s2);

    WScript.Sleep( 100 );
    sh.Run( s1 + c1 + s2 + " " + x + "," + y);
    WScript.Sleep( 100 );
    //WScript.Echo( "終了" );
    sh = null;
}


実行ファイル

test.js

理由はわかりませんが、ダブルクリックで実行するとミスりやすいです。ファイルを選択しておいて、エンターキーで実行すると取りこぼしが少ないようです。

a='100,200,300,400'
eval(WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile("mouse.js", 1).ReadAll());
psc(a);


実行ファイル作成用

Set_psc.js





0 件のコメント:

コメントを投稿