<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />カスタム デザイナーとデザイン エバリュエーターでスプリット ユニット デザインの消費電力を正しく計算するスクリプトを作成しようとしています。問題は、正しい自由度が使用されていないことです。自由度は変更できるようになりましたが、自由度または信号対雑音比が変更されるたびに、電力解析のアウトライン ボックスが崩れ、不必要なボタンのクリックが大量に発生します。の上。また、分割ユニット設計の非中心性パラメータの計算方法を決定できないため、最初から計算を行うスクリプトを書くこともできません。JMP 10 では、非中心性パラメータは電力解析の非表示列であり、行列として取得できます。
私ができるようにしたいのは、ユーザーが Custom Designer または Design Evaluator で実行できるスクリプトを作成し、複数の S/N 比を使用して電力を一度に計算できるようにすることです。これを行うには、スクリプトで JMP プラットフォームの信号対雑音比を変更し、CD または DE で NCP を再計算できるようにする必要があります。
NumberColEditBox の値を変更することはできますが、プラットフォームで NCP を再計算することができません。
win = Window("DOE - カスタム デザイン"); //テスト目的でウィンドウに接続します
win[OutlineBox(15)] << Close(0); //これは電力分析のアウトライン ボックスです
win[NumberColBox(9)] << Hide(0); //これは NCP 列です
ncp1 = win[NumberColBox(9)] << 行列として取得; //NCP列を保存します
win[NumberColEditBox(4)] << SetValues([4]); //これにより、ボックス内の信号対ノイズ比の値が 4 に変更されます。
Enter キーストロークをシミュレートしてプラットフォームを再計算するにはどうすればよいですか?
スクリプトからボックス内の値を変更し、ボックス内をクリックして Enter キーを押しても、何も起こらないことに注意してください。次に、変更したばかりの番号を入力して Enter キーを押しても、何も起こりません。他の数値を入力すると、正常に動作します。(そのシーケンスは次のようになります。 win[NumberColEditBox(4)] << SetValues([4]); Enter キーを押し、何も入力しません -> ボックスに 4 を入力し、Enter キーを押します、何も入力しません -> ボックスに 3 を入力し、Enter キーを押します、作品)
キー押下関数を使用したヌードリングの例 - VK_RETURN を使用した Windoze keybd_event 関数
お役に立てれば。
最高、
-マット
// keypress_example.jsl
// マット・フリン -
// キーを試すときは注意してください - 興味深い結果になる可能性があります
// http://msdn.microsoft.com/en-us/library/ms646301(VS.85).aspx
// http://msdn.microsoft.com/en-us/library/ms645540(VS.85).aspx
// http://msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx
// http://msdn.microsoft.com/en-us/library/ms645540(VS.85).aspx
// http://msdn.microsoft.com/en-us/library/ms646301(VS.85).aspx
VK_ESCAPE = 16 進数から数値へ( "0000001B" );
VK_H = 16 進数から数値へ( "00000048" );
VK_E = 16 進数から数値へ( "00000045" );
VK_L = 16 進数から数値へ( "0000004C" );
VK_O = 16 進数から数値へ( "0000004F" );
VK_F = 16 進数から数値へ( "00000046" );
VK_R = 16 進数から数値へ( "00000052" );
VK_M = 16 進数から数値へ( "0000004D" );
VK_J = 16 進数から数値へ( "0000004A" );
VK_M = 16 進数から数値へ( "0000004D" );
VK_P = 16 進数から数値へ( "00000050" );
VK_SPACE = 16 進数から数値へ( "00000020" );
VK_SHIFT = 16 進数から数値へ( "00000010" );
VK_RETURN = 16 進数から数値へ( "0000000D" );
VK_1 = 16 進数から数値へ( "00000031" );
KEYEVENTF_EXTENDEDKEY = 16 進数から数値へ( "00000001" ); //&H1
KEYEVENTTF_KEYDOWN = 0;
KEYEVENTF_KEYUP = 16 進数から数値へ( "00000002" ); //&H2
kernel32 = DLL をロード( "kernel32" );
kernel32 << DeclareFunction( "Sleep", Convention( STDCALL ), Alias( "Sleep" ),
Arg( Int32, "dwミリ秒" ),
戻り値( Void ) ); //関数が成功すると、戻り値はゼロ以外になります。
user32 = DLL をロード( "User32" );
user32 << DeclareFunction( "FindWindowA", Convention( STDCALL ), Alias( "FindWindow2" ),
Arg( UInt32, input, "lpClassName" ),
Arg( AnsiString( 200 ), 入力, "lpCaption" ),
戻り値( UIntPtr )
); // hWnd
user32 << DeclareFunction( "SetForegroundWindow", Convention( STDCALL ), Alias( "SetForegroundWindow" ),
Arg( UIntPtr, "hWnd" ),
戻り値( UInt32 )
);
user32 << DeclareFunction( "keybd_event", Convention( STDCALL ), Alias( "keybd_event" ),
Arg( UInt8, "bVk" ), //[in] 仮想キー コードを指定します。 コードは 1 ~ 254 の範囲の値である必要があります。 完全なリストについては、「仮想キー コード」を参照してください。
Arg( UInt8, "bScan" ),
Arg( UInt32, "dwFlags" ),
Arg( UIntPtr, "dwExtraInfo" ),
戻り値( Void ) );
user32 << DeclareFunction( "GetKeyState", Convention( STDCALL ), Alias( "GetKeyState" ),
Arg( Int32, "nVirtKey" ), //[in] 仮想キーを指定します。 必要な仮想キーが文字または数字 (A ~ Z、a ~ z、または 0 ~ 9) である場合、nVirtKey をその文字の ASCII 値に設定する必要があります。 他のキーの場合は、仮想キー コードである必要があります。
戻り値( Int32 ) ); //戻り値は、次のように、指定された仮想キーのステータスを示します。
//上位ビットが 1 の場合、キーは押されています。それ以外の場合はアップです。
//下位ビットが 1 の場合、キーはトグルされます。 CAPS LOCK キーなどのキーは、オンにすると切り替わります。 下位ビットが 0 の場合、キーはオフでトグルは解除されます。 キーボード上のトグル キーのインジケータ ライト (存在する場合) は、キーが切り替わると点灯し、キーが解除されると消灯します。
shell32 = DLLをロード( "shell32" );
shell32 << DeclareFunction( "ShellExecuteA", Convention( STDCALL ), Alias( "ShellExecute" ),
Arg( UIntPtr, 入力, "hWnd" ),
Arg( AnsiString( 20 ), "lpOperation" ),
Arg( AnsiString( 256 ), "lpFile" ),
Arg( AnsiString( 256 ), "lpParameters" ),
/* Arg( UInt32, "lpParameters" ), */
Arg( UInt32, "lpDirectory" ),
Arg( UInt32, "nShowCmd" ),
戻り値( UInt32 )
); //関数が成功すると、32 より大きい値が返されます。
テキスト ファイルを保存( "C:\temp\deleteme.txt", "JMP からの 'Hello World'" );
ディレクトリ名 = "C:\temp";
fname = "C:\temp\deleteme.txt";
// メモ帳で開きます
rc = shell32 << ShellExecute( 0, "Open", "notepad.exe", " ", 0, 1 );
lpCaption = "無題 - メモ帳";
rc = kernel32 << Sleep( 2 ); // メモ帳を開くために一時停止します
// Excelで開く
//rc = shell32 << ShellExecute( 0, "Open", "Excel.exe", " ", 0, 1 );
//lpCaption = "Microsoft Excel - Book1";
// 開くのを待ちます
rc = kernel32 << Sleep( 200 ); // メモ帳を開くために一時停止します
hWnd = user32 << FindWindow2( 0, lpCaption );
rc = user32 << SetForegroundWindow( hWnd );
key = function( { l_key },
user32 << keybd_event( l_key, 0, 0, 0 ); // キーを押す
user32 << keybd_event( l_key, 0, KEYEVENTF_KEYUP, 0 ); // キーを放します
);
user32 << keybd_event( VK_SHIFT, 0, 0, 0 ); // キーを押す
キー( VK_H );
user32 << keybd_event( VK_SHIFT, 0, KEYEVENTF_KEYUP, 0 ); // キーを放します
キー( VK_E );
キー( VK_L );
キー( VK_L );
キー( VK_O );
キー( VK_SPACE );
キー( VK_F );
キー( VK_R );
キー( VK_O );
キー( VK_M );
キー( VK_SPACE );
user32 << keybd_event( VK_SHIFT, 0, 0, 0 ); // キーを押す
キー( VK_J );
キー( VK_M );
キー( VK_P );
キー( VK_1 );
user32 << keybd_event( VK_SHIFT, 0, KEYEVENTF_KEYUP, 0 ); // キーを放します
キー( VK_RETURN );
user32 << UnloadDll( );
shell32 << UnloadDll( );
kernel32 << UnloadDll( );