내 프로그램 (C#)은 작업 표시 줄이며 해당 메뉴에서 호환 가능한 XP를 8.1로 시작할 수 있습니다. 특정 응용 프로그램 (OpenOffice, LibreOffice ...)이 처음 시작할 때 평평하게 시작하는 응용 프로그램이 거의 없기 때문에 특정 창 크기의 응용 프로그램을 시작하고 싶습니다.특정 크기를 응용 프로그램의 창에 프로그래밍 방식으로 설정하십시오.
ShellExecute(IntPtr.Zero, "open", executablePath, executableParam, "", ShowCommands.SW_MAXIMIZE);
을하지만 윈도우의 "복원"버튼을 클릭하면, 윈도우가 평평 같은 문제가 :
나는 ShowCommands.SW_MAXIMIZE 매개 변수 ShellExecute이 창을 최대화하기 위해 테스트했습니다.
"복원 된"크기는 수동 크기 조정으로 구성되지 않지만 사용 된 값은 각 응용 프로그램마다 다릅니다.
대신 ShellExecute, 나는 크기 지정 CreateProcess를 사용
const uint NORMAL_PRIORITY_CLASS = 0x0020;
STARTUPINFO si = new STARTUPINFO();
si.dwY = 50;
si.dwX = 50;
si.dwXSize = 200;
si.dwYSize = 800;
si.dwFlags = 0x00000006; //STARTF_USESIZE + STARTF_USEPOSITION
PROCESS_INFORMATION pi = new PROCESS_INFORMATION();
CreateProcess(programPath, programParams, IntPtr.Zero, IntPtr.Zero, true, NORMAL_PRIORITY_CLASS, IntPtr.Zero, null, ref si, out pi);
를하지만 한 가지 문제가있다, 우리는 파일 -> 새와 함께 다른 오픈 오피스/LibreOffice와 프로세스를 시작할 수 있습니다 -> ...이에서 내 기본 크기가 적용되지 않도록 응용 프로그램이 내 프로그램에서 실행되지 않는 경우
내가 전에이 값을 변경 한 후 Windows 레지스트리를 확인했지만, 두 개의 키가 변경됩니다
전에 :
"MRUListEx"=hex:00,00,00,00,04,00,00,00,01,00,00,00,05,00,00,00,03,00,00,00,02,\00,00,00,ff,ff,ff,ff
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU\reg]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count]
이러한 키는 헥사 값 (첫 번째 키)를 포함
이후 :
"MRUListEx"=hex:01,00,00,00,00,00,00,00,04,00,00,00,05,00,00,00,03,00,00,00,02,\00,00,00,ff,ff,ff,ff
내 이해할 수없는, 그래서 응용 프로그램의 특정 창 크기/모든 응용 프로그램 또는 Windows 레지스트리에 설정할 다른 사양 프로그래밍 방식으로 존재하는 경우 여전히 찾고 있어요. 나는 이미 SetWindowPos처럼 시작된 창 크기를 조정하거나 이동하기위한 솔루션을 찾고 있지 않습니다.
그러나 많은 웹 사이트가 윈도우의 크기를 정의하는 하나의 해결 방법이 있습니다 설명 : "크기로 창을 끌은 다음 창을 닫고 다시 시작"
http://help.wfu.edu/public/computers/standard-load-software/windows-7---set-default-window-size http://www.tomshardware.co.uk/forum/28659-45-change-default-window-size
이 답변은 최종 솔루션을 사용하거나 프로그래밍 방식으로 수행하는 방법이 있습니까?
미리 감사드립니다.
편집 : 윈도우가 복원 될 때 사용자가 죽일 때까지
는 사실, 내가 처음에만 크기를 조정합니다. 내 프로그램은 모든 윈도우의 핸들을 boolean으로 객체에 유지하여 false로 초기화하여 내 윈도우의 크기를 조정했는지 여부를 지정합니다. 나는 GetForegroundWindow을 사용한 다음 GetWindowPlacement을 사용합니다. WINDOWPLACEMENT .flags가 == WindowPlacementFlag.WPF_NONE인지 확인합니다.이 경우 부울 값이 항상 false 인 경우 GetWindowRect 및 SetWindowPos를 사용하여 같은 크기의 특정 크기를 설정하고 내 부울을 true로 할당합니다.우리가 크기 조정을 본 내가 생각
좋은 솔루션입니다,하지만 사용자가 저장된 위치를 풀어 ... (윈도우의 크기가 특정 값에 따라하지만 여전히 문제는 때 나는 그것을 할 수 있습니다)
각 응용 프로그램은 자체 방식으로 창 위치를 결정합니다. 응용 프로그램의 결정을 재정의하는 표준은 없습니다. –
그건 내가 두려워하는거야. 귀하의 답변에 감사드립니다. – OhMyGeo