외부 프로그램 실행 관련 질문

외부 프로그램을 실행한다고 했을 때 실행 파일의 사이즈를 지정할 수 있나요?
process.StartInfo.WindowStyle

이 것을 이용하는건가요?

좋아요 1

실행 파일의 사이즈를 지정한다는 의미를 좀 더 설명해주시면 좋겠습니다.

좋아요 1

창모드를 지원하지 않는 프로그램입니다 다만 강제로 해상도를 조정하는거를 제가 어렵게 말했네요 죄송합니다

좋아요 1

실행하는 파일이 Win32 프로세스이고, 기본 창 핸들을 지정하여 UI를 띄우는 애플리케이션이라면 WindowStyle 프로퍼티에서 지정한 설정대로 창을 ‘최소화’, ‘최대화’, ‘숨기기’ 상태로 띄울 수는 있습니다. 그러나 실행하는 애플리케이션이 이 설정을 반드시 존중한다고 볼 수는 없습니다.

  • 잘 작동한다고 보장할 수는 없지만, Win32 API를 후킹하는 방법도 리서치해보실 수는 있을 것 같습니다. Microsoft Detour 라이브러리의 사용도 검토해보시면 좋을 듯 합니다.

아마 원하시는 답은 아닐 것 같지만, “실행 파일의 사이즈” 라는 관점에서 추가로 의견을 드리면 다음과 같습니다. (나중에 같은 키워드로 검색하시는 분들을 위한 추가 답변입니다.)

다른 한편으로, EXE 파일의 크기를 변경하는 것은 완전히 다른 이야기입니다. 이미 만들어진 EXE 파일의 크기를 변경하는 것은 시중에 일부 공개된 Binary Compressor를 이용할 수는 있겠지만 권장할 만한 옵션이 아닙니다.

빌드 단계에서 EXE 파일의 크기를 조정하거나 변경하는 것은 주로 .NET Core, .NET 5, .NET 6 이후의 런타임에서 Single File Distribution을 만드는 것과 관련이 있고, .NET Framework의 경우에는 필요한 종속성을 이미 OS에서 모두 갖추었다고 전제하고 배포를 하므로 크기 문제를 고민할 것이 기본적으로는 거의 없습니다.

만약 포함하는 리소스 파일에 들어가는 파일의 크기가 고민이시라면, PKZIP이나 GZIP으로 파일을 압축하시고, 런타임에서 추가 파일을 만들지 않고 메모리에서 로드하는 방법을 고려하실 수 있습니다.

좋아요 3

제가 기억이 가물가물한데 win32 API인 FindWindow()를 통해 윈도우 핸들을 얻어 핸들로 윈도우 스타일을 변경 가능했던 것으로 기억합니다.

가령, 메모장을 최상위 윈도우로 변경하는 것은 다음의 글 처럼 가능합니다.

좋아요 3