<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Custom Designer 및 Design Evaluator에서 분할 장치 설계에 대한 전력을 올바르게 계산하는 스크립트를 작성하려고 합니다.문제는 올바른 자유도가 사용되지 않고 이제 변경할 수 있지만 자유도 또는 신호 대 잡음비가 변경될 때마다 전력 분석에 대한 개요 상자가 축소되고 불필요한 버튼 클릭이 많이 발생한다는 것입니다. 에.또한 분할 장치 설계에 대한 비중심성 매개변수를 계산하는 방법을 결정할 수 없으므로 처음부터 수학을 수행하는 스크립트를 작성할 수 없습니다.JMP 10에서 비중심성 매개변수는 행렬로 얻을 수 있는 검정력 분석의 숨겨진 열입니다.
내가 할 수 있기를 원하는 것은 사용자가 Custom Designer 또는 Design Evaluator에서 실행할 수 있는 스크립트를 작성하고 동시에 여러 신호 대 잡음비를 사용하여 전력을 계산하도록 하는 것입니다.이를 위해서는 내 스크립트가 JMP 플랫폼에서 신호 대 잡음비를 변경하고 CD 또는 DE가 NCP를 다시 계산하도록 할 수 있어야 합니다.
NumberColEditBox 값을 변경할 수 있지만 플랫폼에서 NCP를 다시 계산할 수는 없습니다.
win = Window("DOE - 맞춤 디자인"); //테스트 목적으로 창에 연결합니다.
win[OutlineBox(15)] << 닫기(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", 컨벤션( STDCALL ), Alias( "Sleep" ),
Arg( Int32, "dwMilliseconds" ),
반환( 무효 ) ); //함수가 성공하면 반환 값은 0이 아닙니다.
user32 = Dll 로드( "User32" );
user32 << DeclareFunction( "FindWindowA", 규칙( STDCALL ), Alias( "FindWindow2" ),
Arg( UInt32, 입력, "lpClassName" ),
Arg( AnsiString( 200 ), 입력, "lpCaption" ),
반환(UIntPtr)
); // hWnd
user32 << DeclareFunction( "SetForegroundWindow", 규칙( STDCALL ), Alias( "SetForegroundWindow" ),
Arg(UIntPtr, "hWnd" ),
반환(UInt32)
);
user32 << DeclareFunction( "keybd_event", 규칙( STDCALL ), 별칭( "keybd_event" ),
Arg( UInt8, "bVk" ), //[in] 가상 키 코드를 지정합니다. 코드는 1~254 범위의 값이어야 합니다. 전체 목록을 보려면 가상 키 코드를 참조하세요.
Arg(UInt8, "bScan" ),
Arg(UInt32, "dwFlags" ),
Arg(UIntPtr, "dwExtraInfo" ),
반환( 무효 ) );
user32 << DeclareFunction( "GetKeyState", 규칙( STDCALL ), 별칭( "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", 규칙( 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'" );
dirname = "C:\temp";
fname = "C:\temp\deleteme.txt";
// 메모장에서 열기
rc = shell32 << ShellExecute( 0, "Open", "notepad.exe", " ", 0, 1 );
lpCaption = "제목 없음 - 메모장";
rc = kernel32 << Sleep( 2 ); // 메모장이 열리도록 잠시 멈춥니다.
//엑셀에서 열기
//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 );
키 = 함수({ 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( );