소프트웨어 usb 해지할 때 명령어를 집어넣을 방법이 어떤게 있을가요?
2011.11.29 23:44
다름이 아니라 이번에 설계 주제 관련해서
'사용자가 컴퓨터를 끄고 가지 않았을 경우 몇분후 시스템이 종료되도록 하자' 라는 주제를 가지고
프로젝트를 진행하고 있는데요.. 회로적인 부분에 대해서는 어떻게든 하고 있는데...
도통 컴퓨터 프로그래밍 적에 관해서는 답이 안나와서 정보좀 얻고자 이곳에 질문 드립니다.
우선 계획한 내용으로는
...
i) usb가 연결이 되면 시스템 예약 종료를 취소한다.
ii) usb가 해지가 되면 10분뒤에 시스템 예약 종료가 실행된다.
우선적으로 i)에 대해서는 usb를 연결하면 자동실행인 autorun.inf 맞죠? 이곳에다가 cmd 명령어로
[shutdown -a] 를 작성해서 '예약종료 취소.exe' 란것을 만들고 오토런으로 이것을 실행하도록 하면 될거 같은데..
문제는 ii) 에 대해서 답을 못구하겠습니다.
usb가 해지되면 보통 해지되었습니다. 라는 문구가 작업표시줄에 뜨던데, 요런거를 응용할 수 있을거 같은데..
그 방법은 모르겠지만... 가능할까 싶기도 하고..
그래서 궁금한점이 usb가 해지되었을 경우에...
[shutdown -s -t 600] 이라는 10분뒤 자동종료 또는 특정한 '*.exe' 파일이 실행되도록 하는 방법이 있을가요?
...
추가로 하나만 더 여쭤보고 싶은데..
간단한 생각으로 컴퓨터의 입력(마우스, 키보드)이 몇분간 없을경우에 화면보호기가 뜨는것을 응용하여
위와같이 몇분간 입력이 없을경우에 특정한 '*.exe' 파일이 실행되도록 구성하고 싶은데... 어떤식으로 하면 될지..
조언좀 부탁드립니다.
...
프로그래밍쪽에 심히 약하여.. 여러자료를 찾아보려 노력해봤지만... 전문(?)용어의 한계에 약간은 힘겨워서..
도움좀 얻고자 글을 올리게 되었습니다. 혹시나 아시는 한도 내에서 답변 주시면 감사드리겠습니다.
늦은 시간이니 댓글이 달려있다면 내일 필히 확인토록 하겠습니다. 좋은 밤 되십시오 ^^;
댓글 [4]
-
메리아 2011.11.30 13:23
-
AirPocket 2011.11.30 23:13
이렇게 정성스럽고 좋은 답변 감사드립니다. 문제라면은 저의 이해도겠군요.
알려주신 macro 익스프레스에 대해서 한번 연구해봐야겠네요.
좋은 하루 되시기 바랍니다. ^^
-
메리아 2011.12.01 12:13
하시려는거 잘되시길 바랍니다.그리고 추가질문에 대한 시간설정이 좀 복잡합니다.앞부분 시간을 A, 뒷부분 시간을 B라고 하겠습니다.Help에 따르면 B시간동안 마우스,키보드 입력 없으면 조건이 발동되고, A시간만큼 기다렸다가 실행된다고 합니다.(그래서 제가 경험적으로 A+B시간이 걸린다고 알고 있었나봅니다.)문제는 계속 마우스,키보드 입력이 없으면 A시간 주기로 이 매크로가 계속 반복실행된다고 하는군요.(그래서 A를 함부로 적게 주지도 못했었네요. ㅠㅠ)마우스,키보드 입력이 되면, 다시 맨처음 조건으로 돌아가구요.그러므로 입력없는 대기타임 중 '맨처음 한번만 하겠다'고 한다면 상당히 골치아파집니다.변수를 유지하지 못하면 체크가 어려워지죠.(변수저장은 있습니다만, 다른 매크로에서도 동일한 변수를 써야하므로 주의해서 써야됩니다. 매익은 변수가 전부 '전역변수'입니다. 그것도 정수100개 문자열100개 실수100개만 사용가능합니다.)그래서 제안하는 방법은 '매크로 2개'를 쓰는 것인데, 조금 복잡해져서 초보분들에게는 어려워서 이해하실수 있으려나 모르겠습니다만,그래도 알려는 드리겠습니다.1) 위에서 만들어놓은 매크로 이름을 '매클A'라고 가정. 새로 만들 매크로 이름은 '매클B'라고 가정.2) 매클A의 대기시간을 10분으로 할 셈이면, 위의 Timeout 설정에서 앞부분은 1분, 뒷부분은 9분으로 설정.(실제 조건 발동은 9분후, 실제 실행은 10분후가 됨. 필요에 따라 조정. 앞부분은 반복실행이므로 최소 1분은 하는게 좋음.)3) No Activation으로 매클B를 새로 작성.4) 에디터로 들어가 커맨드목록창에서 Macro Control-Macro Enable을 더블클릭하고 목록에서 '매클A'를 찾아 선택하고 OK누름.5) 이번에는 Macro Control-Macro Disable을 더블클릭하고 목록에서 '매클B'(자기자신)을 선택하고 OK누름.6) 매클B의 Activation설정으로 들어가서 Mouse Click을 체크하고, 세팅으로 들어가서 left,Area on Screen을 선택하고, 범위는 0,0,해상도가로최대값,해상도세로최대값 넣음(최대값에 그냥 9999,9999이렇게 넣어도됨)7) 저장..하는데, 저장 후 '마우스왼쪽클릭'에 모두 반응하므로, 저장하기전에 5)가 제대로 되었는지 꼭 확인할것. 이게 안되면 마우스 좌클릭 누를때마다 실행되므로 개판됨. 최초 No Activation으로 한 이유가 그것.8) 이번엔 매클A의 에디터로 들어감.(현재 프로그램 실행명령 하나 있는상태)9) 그 밑으로 다시 4),5)와 똑같이 명령을 입력하는데 이번엔 enable-매클B, disable-매클A(자기자신)으로 함.10) 매클A저장하면 구성완료.두 개의 매크로를 이용해서 서로 한번씩만 실행되도록 스위칭하는 방법입니다.작성된 매크로는 disable시키면 모든 실행조건이 취소되기 때문에 그걸 응용한 방법이죠.그리고 다른건 몰라도 매클B만들때 상당히 주의하셔야합니다. 마우스 좌클릭에 모두 반응하게 해야하므로,반드시 명령부터 제대로 다 입력해놓고 Activation조건을 추가해야합니다.지금 대강 생각나는대로 써서 세부적으로는 잘 안될수도 있으니, 막히시면 스스로 논리적 구조를 잘 생각해보세요.좀 복잡하고 어려워도 꼭 해야되는 일이라면, 고민하셔야합니다.어차피 매크로 대신 프로그래밍적인 API를 이용한다고 하더라도 똑같은 과정을 거쳐야하만 합니다.Low Level인만큼 더 복잡한 프로그래밍이 되겠죠. 물론 그게 편하면 그걸 하셔도 좋구요.도움이 되시길 바랍니다. ^^ps) Timeout에서 A시간을 0으로 주면 어떻게 되는지 궁금하실까봐 알려드립니다. 먼젓번 댓글에서 Disable Screen Saver체크해제했던 화면 기억하시나요?거기보면 '10초'로 설정된 부분 있습니다. 스케쥴 타이밍 체크주기인데요, 매크로 스케쥴은 이 시간단위로 운용됩니다. 3초에 한번씩 실행하는 매크로를 작성해도, 이 시간이 10초면 10초에 한번만 실행됩니다.그러므로 Timeout A시간을 0으로 주면 바로 이 주기에 따릅니다. 10초에 한번씩 매번 조건을 만족하는거죠.그러므로 이 시간을 늘리거나 줄이면 달라지게 됩니다.그리고 또 주의하셔야할것은 매크로를 익히시면 알게 되시겠지만,매크로 실행중의 딜레이가 있는데, 이것은 위의 스케쥴과는 다른 종류의 딜레이입니다. '스케쥴이 아니라 딜레이'입니다.그러므로 이것을 이용하면 스케쥴시간,세팅과 관계없이 3초든, 1초든 짧은시간마다 원하는 동작을 실행하는 매크로도 작성가능합니다.단, 쓰레드같은 멀티태스킹이 안되기 때문에, 매크로 하나가 실행중이면 다른 매크로는 취소된다는 점을 유의하셔야합니다. -
꼬마야 2011.11.30 17:37
오홋.. 눈팅하다가 모르던것 배워가네요.. 감사합니다.
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
13790 | 소프트웨어| 카카오톡 이미지 삽입하는것 | hskdl | 2097 | 09-17 |
» | 소프트웨어| usb 해지할 때 명령어를 집어넣을 방법이 어떤게 있을가요? [4] | AirPocket | 2097 | 11-29 |
13788 | 소프트웨어| CMD 작성 때 goto 명령에 관한 질문입니다. [10] | 나끼 | 2096 | 05-13 |
13787 | 소프트웨어| Volume License Service Center (VLSC) [2] | 통나무 | 2096 | 12-06 |
13786 | 소프트웨어| 노턴 안티바이러스 사용하시는 분 질문 좀요. [5] | 버게시 | 2095 | 02-17 |
13785 | 소프트웨어| 120프레임 동영상도 있나요? [2] | 꿈과하늘 | 2095 | 03-17 |
13784 | 소프트웨어| 두개의 문서간에 달라진점 찾는 유틸 ? [4] | 김무 | 2095 | 11-07 |
13783 | 소프트웨어| 간편한 DVD굽는 프로그램 추천좀해주세요. [8] | 클레멘타인 | 2095 | 11-25 |
13782 | 소프트웨어| firefox 6.0.2 버전 버그인가요? [4] | 천사와의데 | 2094 | 09-07 |
13781 | 소프트웨어| 결국 이 오류문제는 포기해야하는건가요? [5] | Heaven4u | 2093 | 01-13 |
13780 | 소프트웨어| svchost.exe가 다른컴퓨터로부터.. [4] | bono19 | 2093 | 02-01 |
13779 | 소프트웨어| 윈도우 64비트용으로 사용가능한 HP 프린터 드라이버 | 라스트맨 | 2093 | 07-13 |
13778 | 소프트웨어| 하드가 모자라서 약간 업그래이드를 하려는데요... [2] | b1115 | 2093 | 08-13 |
13777 | 소프트웨어| 팀뷰어 오류 관련 질문 [2] | 고스트ghost | 2093 | 10-13 |
13776 | 소프트웨어| Vm8.0에서 게스트 시스템이 이유 없이 느려졌어요.. [5] | 윤발이 | 2092 | 02-03 |
13775 | 소프트웨어| arcsoft TotalMedia Theatre 5 에서 자막 크기 키... [2] | 귀신 | 2092 | 09-11 |
13774 | 소프트웨어| 이미지 해상도 짝퉁 구별하는 프로그램 혹시 있을까요? [4] | 윈도면도 | 2092 | 01-19 |
13773 | 소프트웨어| dxva 적용하는게, 소비전력, 발열 측면에서 이득인가요? [5] | 연세대약대 | 2092 | 05-25 |
13772 | 소프트웨어| 포터블 VirtualBox 사용법 문의 [1] | 스위스 | 2091 | 01-18 |
13771 | 소프트웨어| 증분백업과 차분백업의 차이 [4] | 메리아 | 2091 | 05-07 |
일단 저도 usb관련해서 그런부분을 손본적이 없어서 잘 모르기에,
아는 한도내에서 드리는 말씀이니 참고만 하세요.
일단 autorun.inf 안은 포기하시는게 좋을듯 싶습니다.
왜냐하면 많은 분들이 USB자동실행은 악성코드와 바이러스가 전파경로가 된다고 생각해서 autorun.inf 실행자체를 막는분들이 많으십니다.
물론 님이 하시려는 작업이, 님 혼자 혹은 다른 사람이라도 컴퓨터 상태를 직접 세팅이 가능한 사람들만 쓰게 할거라면 autorun.inf 쓰는게 간편한건 사실입니다만,
불특정 다수를 대상으로 하거나 ii) 문제를 해결하려면 어차피 바꾸는김에 같이 바꾸는 게 좋다고 봅니다.
일단 구글링으로 '(님이사용하시는 언어) detect usb'라고 검색해보세요.
예를들면 'vb6 detect usb'정도가 되겠죠.
그러면 usb연결과 해제를 감지하는 코드가 나올겁니다.
그거보고 적당히 맞춰쓰시면 되겠죠.
만약 이게 복잡하고 어렵고 여의치 않다 싶으시면,
'드라이브 감시'도 좋습니다.
예를들면 타이머를 써서 10초에 한번씩, 지정한 드라이브를 읽을수 있는지 없는지 검사하는거죠.
제가 자주 쓰는 vb6로는 이렇게 씁니다
If LenB(Dir("h:")) = 0 Then Msgbox "드라이브 없음"
dir명령만 쓸수 있으면 어떤 언어든 저런방식이 가능합니다.
다만, 'usb'드라이브를 감시하는게 아니라 그냥 '특정 드라이브'를 감시하는 것이기에, 사용자에게 그것을 주지시키고 세팅시켜야만 합니다.
혹은 '볼륨명'으로도 가능합니다.
다시 VB6로 예를들면,
Dim i As Integer
Dim drv As String
Dim dir_str As String
For i = Asc("a") To Asc("z")
drv = Chr(i) & ":"
dir_str = Dir(drv, vbVolume)
If LenB(dir_str) <> 0 Then
MsgBox drv & "드라이브 이름:" & dir_str
If dir_str = "원하는드라이브볼륨명" Then
' 있으면 할거
End If
End If
Next i
MsgBox "검색완료"
대략 이런식으로 사용가능합니다.
(물론 연결과 해제만 체크하고자 하신다면, 추가적으로 변수를 더 넣어서 제대로 검사하셔야합니다. 연결->없다가생김,해제->있다가없어짐. bool관련 변수 이용해서 조금만 머리굴려보시면 이해가고 만드실 수 있을겁니다.)
위 방식도 키포인트는 'dir명령'이므로 원하는 언어의 dir명령을 찾아보세요.
그리고 추가로 질문하신 부분도 해볼만한건 두가지 입니다.
1. '키입력,마우스입력'을 후킹하는 API사용
2. 매크로익스프레스(Macro Express)사용
1번은 여기에 다쓰기엔 복잡하므로(사실 저도 잘모르므로), 검색해보세요.
2번은 들어보셨는지 모르겠지만, 말그대로 단순 반복작업(Macro)을 해주는 프로그램입니다.
원하시는거 하시려면
1번은 좀 복잡할테고,
2번은 아주 쉽습니다.(물론 기본사용법은 익히셔야합니다. 그래도 아마 1번보단 쉬울거예요.)
2번으로 하시겠다면
1) macro express 다운 및 설치(pro버전말고 3.x버전 추천합니다. pro버전은 문법이 확 달라져요)
2-1) 과자적용(과자 없으면 30일 trial입니다)
3) 에디터화면에서 우클릭-New Macro
4) Schedule-Timeout 선택 후 시간설정(시간 2가지 있는데 저도 좀 애매해요. 그냥 원하는 시간/2 해서 똑같이 넣어보세요. 저도 대충 하는지라 2가지 시간에 따른 실행조건을 정확하게는 파악 못했네요.)
5) Scripting Editor클릭
6) 왼쪽 트리창에서 Windows/Programs선택하고 Program Launch선택하고 더블클릭
7) 입력칸에 실행시키고 싶은 프로그램 경로및 파일명 입력하고 확인(명령이 입력됨)
8) 위쪽 탭에서 Script탭 오른쪽의 Properties탭 선택
9) NickName 칸에 원하는 이름 아무거나 넣고 저장
10) Macro Explorer버튼 누르면 다시 기본매크로목록창으로 나오고 제대로 만들어졌는지 확인하면 끗~
ps1) 시간이나 방식 수정하고 싶으면 다시 해당매크로 우클릭-Properties-Activation탭으로 가면 4번항목처럼 재설정 가능
ps2) 매크로익스프레스 스케쥴을 쓰게되면, 윈도우 스크린세이버는 정지됩니다. 주의하세요.
윈도우자체의 스크린세이버나 모니터끄기를 꼭 쓰셔야겠다면,
맨위의 메뉴에서 Options-Preferences-Scheduler 창으로 들어가, Disable Screen Saver 체크해제하시면 됩니다.
단, 이것을 체크해제할경우, 매크로 스케쥴이 동작하지 않을수 있습니다. 체크해제후 같이 쓰려면, 무조건 스크린세이버 시간 이내로만 설정하셔야합니다. 주의하세요.
참고만 하시라고 그냥 조금 쓸랬는데, 쓰다보니 꽤 길어졌네요.
참고가 되시길 바랍니다.^^