기 타 (추가) Cmd에 백업,복원 버튼 메세지박스를 활용하여 보았습니다.
2018.04.27 11:28
추가입니다
메세지에서 버튼을 클릭했을때 값을..cmd로 가져오는것을 할줄 몰라서 오토쿨에서 질문을 하고..할수없이...버튼 클릭값을
txt로 저장후..cmd에서 이 txt를 읽어서 백업,복원을 구분해서 진행을 했습니다..사용기에 있는 내용입니다
사용기를 쓰고나서..오토쿨에 가보았지만..답글이 없어서..마움을 비우고 이것저것 검색을 하였더니..외국의 유명하신분이..
정답을 알려주신글이 있네요...죽어라 찾을때에는 안보이더니..다하고 나니까..보이네요..
오토쿨에 글과 사진을 올렸습니다만...로그인은 해야 합니다..그래서..혹시 참고하실분들이 있으실지도 몰라서..
같은 내용을 여기에도 소개를 하게 되었습니다..참고하여 주십시요
Exit(6) 이렇게 ()안에..cmd로 넘겨줄 값을 넣으면..cmd에서 %errorlevel%로 값을 받을수가 있습니다..
이제는 txt로 저장할 필요가 없게 되었습니다
https://www.autoitscript.com/forum/topic/119171-how-to-get-return-value-from-exe-file/
위의 예제와 다르게 6으로 하여 보았습니다
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=Test.exe
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
$msg = MsgBox(4, "Return Code", "Give Exit Code true back?")
If $msg = 6 Then
Exit(6)
Else
Exit(0)
EndIf
cmd에서 아래처럼 실행후..메세지에서 확인을 클릭하였습니다
@echo off
test.exe
echo %errorlevel%
pause>nul
메세지에서 버튼 클릭에 따라서 다른 값을 %errorlevel%에 넘겨 줍니다..
1. cmd에 실제로 활용한 내용입니다
MessageBoxB.exe "R" "48" " 왕초보' IFW Cmd v7.1" " 윈도우 파티션 (%Windrv%:) %sWinVol% & 백업용 파티션 (%Backdrv%:) %sBackVol% & 백업 파일 %sFilePath% (%sBackFiliYes%) && 백원,복원을 신중하게 선택하여 주십시요"
SET sButton=%errorlevel%
:: 복원 1
IF "%sButton%" EQU "1" ( goto :RecoveryStart )
:: 백업 2
IF "%sButton%" EQU "2" ( goto :BackupStart )
:: 종료 3
IF "%sButton%" EQU "3" ( goto :End )
2. 백업중입니다..
3. 백업을 하였지만..이제는 txt 파일이 필요가 없습니다...
4. 어제 여기저기 찾아보았지만..안보이던것이..갑자기 나타나서..바로 적용을 하여보았습니다
오늘은..운이 많이 따르는것 같습니다.
윈포 회원님들께서 행운이 여신이 함께 하시길 바라니다..
즐거운 금요일 되세요..
---------------------------------------------------------------------------------------------
하이이잌님께서 한글화를 하여주신 MessageBox_KOR.exe에서....버튼에 예,아니오,취소로 나오는것은..제가 백업,복원,종료로
해보고 싶어서..ResourceHacker 해커로 어떻게 해볼까 하였지만...역시..초보의 상상으로 끝이 났습니다
그래서..작전을 바꾸어 오토잇이나..오토핫키에서 메세지를 관련한 자료를 찾아 보았습니다.
다행히...메세지 버튼은 백업,복원,종료로 할수 있는 소스가 있어서...활용을 하여 보았습니다..그래도..아쉬운 점이 있기는 합니다
MessageBox_KOR.exe 처럼..cmd에서..메세지 박스에..필요한 내용을 전달할수는 있지만..MessageBox_KOR.exe 처럼..버튼을 클릭했을때
어떤 버튼을 클릭했는지...변수값으로 cmd에 다시 가져오지 못합니다...
cmd에서..값을 exe에 넘기는것만 해보아서..다시 cmd로 변수값으로 가져오는것은 찾아 보아도 눈에 보이지를 않네요 할수 없이..버튼을
클릭하는 값은...txt에서 저장해서..이것을 읽어오는것으로 처리를 하였습니다.
기존에 있는..파일들을 활용해서..cmd 백업,복구에 활용하는것이 목적이었는데..결국은..오토잇으로 메세지를 만들어 활용하게 되었네요
바이러스 검출이 많이 되어서..영..아니네요
초보가...메세지박스에 백업,복원,종료 버튼이 있는것을 활용을 하였네 하여 주십시요
1. 메세지 박스에서 버튼을 클릭하면..버튼에 해당하는 문자를 Button.txt에 저장을 합니다...바로 cmd에 넘기면 좋은데..역시 초보의 한계입니다
간단 버전답게...사고 방지를 위해서 백업시 한단계 거치던것을 빼고 바로 메세지에서 백업,복원을 하도록 하였습니다.
MessageBoxA.exe "R" "48" " 왕초보' IFW Cmd v7.0" " 윈도우 파티션 (%Windrv%:) %sWinVol% & 백업용 파티션 (%Backdrv%:) %sBackVol% & 백업 파일 %sFilePath% (%sBackFiliYes%) && 백원,복원을 신중하게 선택하여 주십시요" >Button.txt
for /f "usebackq tokens=1" %%a in (Button.txt) do (SET sButton=%%a)
:: 복원
IF "%sButton%" EQU "R" ( goto :RecoveryStart )
:: 백업
IF "%sButton%" EQU "B" ( goto :BackupStart )
:: 종료
IF "%sButton%" EQU "E" ( goto :End )
2. 윈도우 파티션 선택창입니다. 이미 다 아시는 사진이죠..백업파일 저장 사진은 생략하였습니다.
3. cmd에서 정도를 보여주듯이..윈도우파티션,백업파일용 파티션 및 백업파일 경로를 보여주도록 하였습니다..
메세지 버튼이..백업,복원,종료입니다.. 메세지를 빙자한..윈도우폼 같기도 합니다 아이콘도..제목줄에 아이콘도 보입니다
항상 Backup폴더에 저장을 하다보니까..아래처럼 백업파일 경로에 공백이 있는것을 생각지 못했습니다..잊고 있었다는것이 맞을것 같습니다
지인분이 안되신다고 하여서..확인하여보았더니.." " 를 빼먹었네요..
4. 백업중입니다..
5. 백업파일 경로에 공백이 있어서..백업파일 유무를 제대로 표시하여 줍니다...지인분이 아니셨으면..전 생각도 못하고 있었을 것입니다
6. 복원중입니다.. 메세지에서 바로 백업, 복원이 되어서..프로그램 시작후..3번만 클릭하면 되네요..
7. 이번에는..엄청 걸렸네요..바이러스 회사에서 오토잇이 점점더 미움을 받나 봅니다..그 어렵다는 C++을 배워야 하나요...
8. 마무리
cmd에서 키보드로 입력하는것이나..마우스로 클릭하는것이나..백업,복구 프로그램을 많이 사용하지를 않아서...큰 차이는 없습니다..
Win.tag나 Backup폴더등 설정을 하지 않고..클릭3번으로 백업,복원을 하는것에..의미를 두어야 할것 같습니다.
제한이 없다는것은 그만큼 편한것이죠..원클릭이 아니고 3번 클릭을 해야하는것이..좀 그럴수는 있을것 같습니다
개인적으로는..마우스 클릭이 좀더 편한것 같습니다
메세지 박스에 예,아니오일 경우 추가 설명내용도 있어서 불편합니다.그래서..백업,복원 버튼을 활용하여 보았습니다
역사적인 날이죠..
모든 사람이 원하시는 좋은 성과가 있기를 기원드립니다..
댓글 [4]
-
ehdwk 2018.04.27 11:43
-
lakeside 2018.04.27 18:21
왕*보님 글을 꾸준히 읽어 보고는 있는데....어휴, 점점 어려워지네요....
잘 보았습니다 ^^
-
조임삼33 2018.04.27 18:26
언제나 수고 많으십니다.. ^^..
PE에서 .net 설치가 되었으시면.. C#으로 한번 도전해보세요..
제가 요즘 간간히 C# 배우고 있는되요. 정말 mfc보다 편하고
지원되는 것이 많아요.. (물론 조금 무거운 것 같지만요..)
많은 자료형과 특히 DB 및 스트링 사용이 편하더라고요..
(mfc 는 오토잇보다 string 사용에 좀더 복잡합니다..)
요즘 업무보조용 간단한 프로그램 만들려고 하고있습니다..
특히 DataTable 및 DB지원은 정말... Autoit 구현하려면 너무 복잡한것도
C#은 몇줄이면 되는 것들이....
C++ 보다 C# 추천합니다.
Youtube 에 C# 강좌 많습니다.
-
왕초보 2018.04.27 20:31
이렇게 뵙게 되어서 너무 반갑습니다..댓글까지 남겨주시다니 영광입니다
윈포에서도 PE에 닷넷을 추가하는 작업이 있었습니다..많은 분들이 노력을 하신 덕분에 RS4에도 잘 추가가 된것 같습니다
컴퓨터 성능은 대한민국이 최고여서...아마 닷넷이 추가되어도 이제는 웬만한 컴퓨터에서 부담이 없을것으로 생각이 됩니다..
오토쿨에서 C# 강좌가 시작되는것을 보고 마음은 배우고 싶습니다만..지금 알고 있는것들도..소스를 찾아서 복사해서
사용하는 수준이다보니까 겁부터 나던데요..
신중하게 생각을 하여 보도록 하겠습니다...대세가 C#인가 봅니다.
편안하신 저녁시간 되세요..
수고하셨습니다.