디스플레이의 중앙 비모달 창안녕하세요, 창을 사용자 디스플레이 중앙으로 이동하는 가장 빠른 방법을 찾고 있습니다.
모달 창은 자동으로 화면 중앙에 위치하므로 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 및 <<창 크기 가져오기 in specific은 Windows 디스플레이 배율이 변경될 때 업데이트되지 않습니다(예: 사용자가 랩톱에서 JMP를 시작하고 나중에 모니터를 연결하는 경우).
JMP에서 다음 PowerShell 스크립트를 실행하여 실제 화면 해상도를 얻고 이 정보를 사용하여 창을 적절하게 배치합니다(다음을 사용하여 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: 디스플레이의 비모달 창 중앙에제가 찾던 호쿠스포커스네요 ㅋㅋㅋㅋ 짐과 조던 감사합니다! 나는 두 가지 옵션을 모두 시도하고 어느 것이 더 빠르고 더 안정적인지 확인할 것입니다.