
실행 시 무조건 로그인을 해야하는 우리 프로그램을 윈도우 시작할 때 자동으로 실행될 때는 그냥 트레이에만 나타나게 해달라는 요청이 있었다.
이럴 때는 NSIS에서 레지스트리에 시작프로그램으로 등록하고 실행될 때 파라미터와 함께 실행되도록 스크립트를 작성한 다음, 프로그램 시작 시 파라미터가 조건을 만족하면 다이얼로그를 생성하지 않도록 하면된다.
WriteRegStr으로 다음과 같이 작성하면 된다.
CurrentVersion/Run에 등록하면 시작프로그램에 등록이 되는데 이 때 WriteRegStr의 마지막 파라미터는 해당 실행파일의 위치를 문자열로 전달해주는데 어차피 커맨드창에서 해당 스트링을 복사해서 붙여넣은 후 실행하는 것이나 마찬가지 지이므로 "파일경로 파라미터" 이런 식으로 파일 경로 한 칸 띄고 파라미터(ex: /hide)로 레지스트리에 저장하면 된다.
// 레지스트리 등록
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" "String Value" "$INSTDIR\ExecutiveFile.exe parameter"
// 레지스트리 삭제
DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" "String Value"
이 때 MFC 단에서 해당 프로젝트명으로 생성된 클래스의 변수를 정의한 곳이 있다.
C프로젝트명App theApp; // 이렇게 정의된 곳
그 곳의 InitInstance에서 구분할 토큰(나 같은 경우에는 백슬래시(\))으로 구분하여 두번째 인자를 받아낸다.
토크나이저 사용법은 아래를 참고
https://docs.microsoft.com/en-us/cpp/atl-mfc-shared/reference/cstringt-class?view=vs-2019#tokenize
CString strCmdLine = GetCommandLine();
CString exePath, arg1;
int iStart = 0;
exePath = strCmdLine.Tokenize(_T("토큰"), iStart);
arg1 = strCmdLine.Tokenize(_T("토큰"), iStart);
arg1.Trim(_T(" "));
이제 얻어진 arg1으로 하고 싶은대로 처리하면 된다.
'개발 관련 이야기' 카테고리의 다른 글
OpenCV로 영상 녹화 (0) | 2022.08.08 |
---|---|
명령어 모음 - Ubuntu 18.04 (0) | 2022.08.07 |
Window - 환경변수 설정 없이 Visual Studio에서 OpenCV 사용하기 (0) | 2022.08.04 |
MFC - Border 속성이 Resizing이 아닌데도 계속 리사이징 될 때 (0) | 2022.08.03 |
Thread 내에서 Toast 띄우기 (0) | 2022.08.02 |
댓글