2013-08-27 2 views
2

USB 장치가 연결되었을 때 내 응용 프로그램을 시작해야합니다.USB 장치가 연결되었을 때 내 응용 프로그램 시작하기

내 첫 번째 시도는 USB 장치가 연결되었을 때주의를 기울이는 백그라운드 응용 프로그램입니다. 장치가 연결되어 있음을 감지하면 ShellExecute()를 호출하고 응용 프로그램을 시작합니다.

이것은 Windows 8을 제외하고는 훌륭하게 작동합니다. Windows 8의 "시작"화면을 가정 할 경우, 응용 프로그램이 백그라운드에서 시작되고 시작 화면이 계속 남아 있습니다.

실제로 포커스를 얻으려는 의도는 시작 화면에서 "포커스를 훔치기"때문입니다.

http://blogs.msdn.com/b/oldnewthing/archive/2009/02/20/9435239.aspx

초점이없는 내 배경 응용 프로그램 (시작 화면에 포커스가, 게다가, 내 응용 프로그램이 UI를하지 않습니다) 때문에, 멀리 내 전경 응용 프로그램에 초점을 드릴 수 없습니다.

일반적으로 나는 초점 훔치기가 싫다. 을 시작하면 사용자가 사용하려는 앱을 사용하는 것이 사용자에게 큰 도움이됩니다.

이 문제를 어떻게 해결할 수 있습니까? 아마 대답은 프로그램 내 응용 프로그램을 시작하려면 시작 화면을 요청하는 것입니다하지만 난 그렇게 할 수있는 방법을 볼 수 없습니다 :

http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/9ed23f32-0708-48a8-9ff7-5fce6dbe123f/windows-8-start-screen-api

은 어쩌면 내가 잘못된 방법으로이 문제를 접근하고있다. 제안?

답변

8

잘못된 방향으로 가고 있습니다. 당신은 수 있습니다 끊임없이 무언가가 연결되었을 때 감지하기 위해 USB 포트를 모니터링하는 프로그램을 작성, 필요가 없습니다. OS가 이미이를 수행하고 있습니다.

장치 유형 및 클래스에 대해 자동 재생 처리기을 등록하십시오. 이는 삽입 된 파일 시스템에서 발견 된 프로그램을 자동으로 실행하는 이전 자동 실행 기능과는 다릅니다.

overview of the feature from the November 2001 issue of MSDN Magazine으로 시작할 수 있습니다.

처리기는 COM DLL이됩니다. 당신은 register the DLL as a handler, and register the handler with events you want to handle 일 수 있습니다. DLL에서 모든 것을 수행 할 수도 있고, 응용 프로그램에 대부분의 기능을 넣고 DLL을 OS와 프로그램 사이의 프록시로 사용할 수도 있습니다.

+0

혹시이 중 하나를 만들려고하신 적이 있습니까? 고맙습니다! –

관련 문제