<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Estoy intentando escribir un script para calcular correctamente la potencia para diseños de unidades divididas en Custom Designer y Design Evaluator.El problema es que no se utilizan los grados de libertad correctos y, si bien ahora se pueden cambiar, cada vez que se cambian los grados de libertad o la relación señal-ruido, los cuadros de contorno para el análisis de potencia colapsan y hay muchos clics innecesarios en los botones. en.Además, no puedo determinar cómo calcular el parámetro de no centralidad para diseños de unidades divididas, por lo que no puedo simplemente escribir un script para hacer los cálculos desde cero.En JMP 10, el parámetro de no centralidad es una columna oculta en el Análisis de potencia que puedo obtener como matriz.
Lo que quiero poder hacer es escribir un script que un usuario pueda ejecutar mientras está en Custom Designer o Design Evaluator y hacer que calcule la potencia utilizando varias relaciones señal-ruido a la vez.Para hacer esto, mi script debe poder cambiar la relación señal-ruido en la plataforma JMP y hacer que CD o DE vuelvan a calcular el NCP.
Puedo cambiar el valor de NumberColEditBox, pero no logro que la plataforma vuelva a calcular el NCP.
ganar = Ventana("DOE - Diseño personalizado"); //Se conecta a la ventana para realizar pruebas
ganar[OutlineBox(15)] << Cerrar(0); //Este es el cuadro de esquema de Análisis de potencia
ganar[NumberColBox(9)] << Ocultar(0); //Esta es la columna NCP
ncp1 = win[NumberColBox(9)] << Obtener como matriz; //Guarda la columna NCP
ganar[NumberColEditBox(4)] << SetValues([4]); //Esto cambia el valor de la relación señal/ruido en el cuadro a 4
¿Cómo puedo simular una pulsación de tecla Intro para que la plataforma vuelva a calcular?
Notaré que cuando cambio el valor en el cuadro del script y simplemente hago clic en el cuadro y presiono Enter, no sucede nada.Cuando escribo el número al que lo acabo de cambiar y presiono Enter, no sucede nada.Si luego escribo cualquier otro número, funciona correctamente.(esa secuencia sería como, win[NumberColEditBox(4)] << SetValues([4]); presione enter, nada -> Escriba 4 en el cuadro, presione enter, nada -> Escriba 3 en el cuadro, presione enter, obras)
Algunos ejemplos de fideos con función de pulsación de tecla: función Windoze keybd_event con VK_RETURN
Espero que esto ayude.
Mejor,
-Mate
// keypress_example.jsl
// Matt Flynn -
// precaución al experimentar con claves: puede resultar interesante
// 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 = hexadecimal a número ("0000001B");
VK_H = hexadecimal a número ("00000048");
VK_E = hexadecimal a número ("00000045");
VK_L = hexadecimal a número ("0000004C");
VK_O = hexadecimal a número ("0000004F");
VK_F = hexadecimal a número ("00000046");
VK_R = hexadecimal a número ("00000052");
VK_M = hexadecimal a número ("0000004D");
VK_J = hexadecimal a número ("0000004A");
VK_M = hexadecimal a número ("0000004D");
VK_P = hexadecimal a número ("00000050");
VK_SPACE = hexadecimal a número ("00000020");
VK_SHIFT = hexadecimal a número ("00000010");
VK_RETURN = hexadecimal a número ("0000000D");
VK_1 = hexadecimal a número ("00000031");
KEYEVENTF_EXTENDEDKEY = Hexadecimal a número ("00000001"); //&H1
KEYEVENTTF_KEYDOWN = 0;
KEYEVENTF_KEYUP = hexadecimal a número ("00000002"); //&H2
kernel32 = Cargar Dll( "kernel32" );
kernel32 << DeclareFunction( "Dormir", Convención (STDCALL), Alias( "Dormir"),
Arg( Int32, "dwMillisegundos"),
Devoluciones (nulo)); //Si la función tiene éxito, el valor devuelto es distinto de cero.
usuario32 = Cargar Dll ("Usuario32");
usuario32 << DeclareFunction( "FindWindowA", Convención( STDCALL ), Alias( "FindWindow2" ),
Arg(UInt32, entrada, "lpClassName"),
Arg( AnsiString( 200 ), entrada, "lpCaption" ),
Devuelve (UIntPtr)
); // hWnd
usuario32 << DeclareFunction( "SetForegroundWindow", Convención (STDCALL), Alias( "SetForegroundWindow"),
Arg( UIntPtr, "hWnd"),
Devuelve ( UInt32 )
);
usuario32 << DeclareFunction( "keybd_event", Convención( STDCALL ), Alias( "keybd_event" ),
Arg( UInt8, "bVk" ), //[in] Especifica un código de clave virtual. El código debe ser un valor en el rango de 1 a 254. Para obtener una lista completa, consulte Códigos de clave virtual.
Arg( UInt8, "bScan"),
Arg( UInt32, "dwFlags"),
Arg( UIntPtr, "dwExtraInfo"),
Devoluciones (nulo));
usuario32 << DeclareFunction( "GetKeyState", Convención( STDCALL ), Alias( "GetKeyState"),
Arg( Int32, "nVirtKey" ), //[in] Especifica una clave virtual. Si la clave virtual deseada es una letra o un dígito (de la A a la Z, de la a a la z o del 0 al 9), nVirtKey debe configurarse en el valor ASCII de ese carácter. Para otras claves, debe ser un código de clave virtual.
Devuelve (Int32)); //El valor de retorno especifica el estado de la clave virtual especificada, de la siguiente manera:
// Si el bit de orden superior es 1, la clave está presionada; de lo contrario, está arriba.
//Si el bit de orden inferior es 1, la clave se alterna. Una tecla, como la tecla BLOQ MAYÚS, se activa si está activada. La clave está apagada y no alternada si el bit de orden inferior es 0. La luz indicadora de una tecla de alternancia (si la hay) en el teclado se encenderá cuando se alterna la tecla y se apagará cuando se desactive la tecla.
shell32 = Cargar Dll ("shell32");
shell32 << DeclareFunction( "ShellExecuteA", Convención( STDCALL ), Alias( "ShellExecute" ),
Arg( UIntPtr, entrada, "hWnd"),
Arg( AnsiString( 20 ), "lpOperación" ),
Arg( AnsiString( 256 ), "lpFile" ),
Arg( AnsiString( 256 ), "lpParameters" ),
/* Arg( UInt32, "lpParameters"), */
Arg( UInt32, "lpDirectorio"),
Arg(UInt32, "nShowCmd"),
Devuelve ( UInt32 )
); //Si la función tiene éxito, devuelve un valor mayor que 32.
Guardar archivo de texto ("C:\temp\deleteme.txt", "'Hola mundo' de JMP");
nombredir = "C:\temp";
fname = "C:\temp\deleteme.txt";
// abrir en el Bloc de notas
rc = shell32 << ShellExecute( 0, "Abrir", "notepad.exe", " ", 0, 1);
lpCaption = "Sin título - Bloc de notas";
rc = kernel32 << Dormir( 2 ); // pausa para dejar que se abra el bloc de notas
// abrir en Excel
//rc = shell32 << ShellExecute( 0, "Abrir", "Excel.exe", " ", 0, 1);
//lpCaption = "Microsoft Excel - Libro1";
// espera a que se abra
rc = kernel32 << Dormir( 200 ); // pausa para dejar que se abra el bloc de notas
hWnd = usuario32 << FindWindow2( 0, lpCaption );
rc = usuario32 << SetForegroundWindow( hWnd );
tecla = función( { l_key },
usuario32 << keybd_event( l_key, 0, 0, 0 ); //presiona la tecla
usuario32 << keybd_event( l_key, 0, KEYEVENTF_KEYUP, 0 ); // liberar clave
);
usuario32 << keybd_event( VK_SHIFT, 0, 0, 0 ); //presiona la tecla
clave (VK_H);
usuario32 << keybd_event( VK_SHIFT, 0, KEYEVENTF_KEYUP, 0 ); // liberar clave
clave (VK_E);
clave (VK_L);
clave (VK_L);
clave (VK_O);
clave (VK_SPACE);
clave (VK_F);
clave (VK_R);
clave (VK_O);
clave (VK_M);
clave (VK_SPACE);
usuario32 << keybd_event( VK_SHIFT, 0, 0, 0 ); //presiona la tecla
clave (VK_J);
clave (VK_M);
clave (VK_P);
clave (VK_1);
usuario32 << keybd_event( VK_SHIFT, 0, KEYEVENTF_KEYUP, 0 ); // liberar clave
clave (VK_RETURN);
usuario32 << DescargarDll( );
shell32 << DescargarDll( );
kernel32 << DescargarDll( );