비모달 창을 디스플레이 중앙에 배치안녕하세요. 창을 사용자 디스플레이 중앙으로 이동하는 가장 빠른 방법을 찾으려고 합니다.
모달 창은 자동으로 화면 중앙에 배치되므로 JMP가 창을 어디에 배치할지 알 수 있다는 것을 알고 있지만 비모달 창에서 이 작업을 수행하는 데 비교적 느린 해결 방법을 찾았을 뿐입니다. 다음은 현재 화면 크기를 결정하고 새 창을 중앙에 배치하는 데 사용하고 있는 jsl 스크립트입니다.
더 빠른 방법이 있나요? 감사해요!
win2 = NewWindow("Test Window");
winSize = win2 << GetWindowSize();
win2 << ShowWindow(0);
testwin = NewWindow("test", << ShowWindow(0));
testwin << Maximize Window(1);
dispsize = testwin << Get Window Size;
testwin << CloseWindow();
win2 << MoveWindow(dispsize[1]/2 - winsize[1]/2, dispsize[2]/2 - winsize[2]/2);
win2 << ShowWindow(1);자동화 및 스크립팅윈도우Re: 디스플레이의 중앙에 비모달 창을 놓습니다.이게 바로 제가 찾던 호커스포커스네요 ㅎㅎ 짐과 조던에게 감사드립니다! 두 가지 옵션을 모두 시도해 보고 어느 것이 더 빠르고/또는 더 안정적인지 알아보겠습니다.
Re: 디스플레이의 중앙에 비모달 창을 놓습니다.내 경험상 <<창 크기 가져오기 방법은 신뢰할 수 없습니다.문제는 <<창 크기 가져오기 물리적 픽셀이 아닌 논리적 픽셀(Windows 디스플레이 크기 조정의 영향을 받음)을 반환합니다. <<창 이동( x, y ) 물리적 픽셀을 사용합니다.또한 JMP는 일반적으로 <<창 크기 가져오기 특히 Windows 디스플레이 크기 조정이 변경되면 업데이트되지 않습니다(예를 들어 사용자가 노트북에서 JMP를 시작하고 나중에 모니터를 연결하는 경우).
JMP에서 다음 PowerShell 스크립트를 실행하여 실제 화면 해상도를 얻고 이 정보를 사용하여 창을 적절하게 배치합니다. -ExecutionPolicy 우회 :
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class PInvoke {
[DllImport("user32.dll")] public static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("gdi32.dll")] public static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
}
"@
$hdc = [PInvoke]::GetDC([IntPtr]::Zero)
[PInvoke]::GetDeviceCaps($hdc, 118) # width
[PInvoke]::GetDeviceCaps($hdc, 117) # height
Re: 디스플레이의 중앙에 비모달 창을 놓습니다.귀하의 방법은 제가 일반적으로 사용하는 방법입니다.
Re: 디스플레이에 비모달 창을 가운데에 배치안녕하세요,
팁 정말 감사합니다! 몇 년이 지났지만 여전히 유용한 정보입니다. Run Program을 사용하여 PowerShell에서 JMP로 화면 크기에 대한 정보를 어떻게 전송하나요?
Re: 디스플레이에 비모달 창을 가운데에 배치텍스트를 Read 함수() 로 사용하고 words()를 사용하여 문자열을 분할할 수 있습니다.
powershell_code ="
Add-Type -AssemblyName System.Windows.Forms
$primary = [System.Windows.Forms.Screen]::PrimaryScreen
Write-Output $primary.Bounds.Width
Write-Output $primary.Bounds.Height
";
result = Run Program(
Executable( "powershell.exe" ),
Options( {"-Command", powershell_code} ),
Read Function( "text" )
);
{w, h} = Transform Each( {str}, Words( result, "\!n\!r" ), Num( str ) );
