C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 자료실
C++Builder Programming Resources
[313] 장치 제거
mangchy [] 18419 읽음    2006-06-22 09:46
가끔 트레이에 장치제거 관련 아이콘이 종종 사라져서 실행 프로그램으로 하나 만들어보았네요..^^
Window XP에서만 테스트 해봄

어느 사이트에서 몇가지 자료를 모아서 한가지만 적용해 보았습니다.
어쩌면 이곳에서 자료를 보았을수도 있구요...^^





#define NUM_SYSTEM_DIALOGS            18


#ifdef _UNICODE
typedef void (_stdcall *PFUNCTION_ENTRYPOINT)(
                                           HWND hwndStub,
                                           HINSTANCE hAppInstance,
                                           LPWSTR lpCmdLine,
                                           int    nCmdShow
                                           );

#else
typedef void (_stdcall *PFUNCTION_ENTRYPOINT)(
                                           HWND hwndStub,
                                           HINSTANCE hAppInstance,
                                           LPSTR lpCmdLine,
                                           int    nCmdShow
                                           );
#endif



//iSystemDialogID, cDllName, cFuncName, cCommand
static SystemDialog SDArray[NUM_SYSTEM_DIALOGS]=
#ifndef _UNICODE    //ANSI
{
    {SD_FORMAT,                    "Shell32.dll", "SHFormatDrive", ""},
    {SD_INTERNET_OPTIONS,        "Shell32.dll", "Control_RunDLLA", "inetcpl.cpl,,0"},
    {SD_ADD_REMOVE_PROGRAMS,    "Shell32.dll", "Control_RunDLLA", "appwiz.cpl"},
    {SD_DATE_TIME,                "Shell32.dll", "Control_RunDLLA", "timedate.cpl"},
    {SD_DISPLAY,                "Shell32.dll", "Control_RunDLLA", "desk.cpl"},
    {SD_MODEM,                    "Shell32.dll", "Control_RunDLLA", "modem.cpl"},
    {SD_MULTIMEDIA,                "Shell32.dll", "Control_RunDLLA", "mmsys.cpl,,0"},
    {SD_MOUSE,                    "Shell32.dll", "Control_RunDLLA", "main.cpl @0"},
    {SD_NETWORK,                "Shell32.dll", "Control_RunDLLA", "netcpl.cpl"},
    {SD_PASSWORD,                "Shell32.dll", "Control_RunDLLA", "password.cpl"},
    {SD_SYSTEM,                    "Shell32.dll", "Control_RunDLLA", "sysdm.cpl,,0"},
    {SD_REGIONAL_SETTINGS,        "Shell32.dll", "Control_RunDLLA", "intl.cpl,,0"},
    {SD_SOUNDS,                    "Shell32.dll", "Control_RunDLLA", "mmsys.cpl @1"},
    {SD_GAME_CONTROLLERS,        "Shell32.dll", "Control_RunDLLA", "joy.cpl"},
    {SD_KEYBOARD,                "Shell32.dll", "Control_RunDLLA", "main.cpl @1"},
    {SD_DEVICE_MANAGER,            "DevMgr.dll",  "DeviceManager_ExecuteA", " " /*set device ID here*/},
    {SD_EJECT_DEVICE,            "Shell32.dll", "Control_RunDLLA", "hotplug.dll"}, //Shell32.dll->Rundll32.exe
    {SD_LOCKWORKSTATE,            "USER32.dll", "LockWorkStation", ""}
};
#else                //UNICODE
{
    {SD_FORMAT,                    "Shell32.dll", "SHFormatDrive", ""},
    {SD_INTERNET_OPTIONS,        "Shell32.dll", "Control_RunDLLW", "inetcpl.cpl,,0"},
    {SD_ADD_REMOVE_PROGRAMS,    "Shell32.dll", "Control_RunDLLW", "appwiz.cpl"},
    {SD_DATE_TIME,                "Shell32.dll", "Control_RunDLLW", "timedate.cpl"},
    {SD_DISPLAY,                "Shell32.dll", "Control_RunDLLW", "desk.cpl"},
    {SD_MODEM,                    "Shell32.dll", "Control_RunDLLW", "modem.cpl"},
    {SD_MULTIMEDIA,                "Shell32.dll", "Control_RunDLLW", "mmsys.cpl,,0"},
    {SD_MOUSE,                    "Shell32.dll", "Control_RunDLLW", "main.cpl @0"},
    {SD_NETWORK,                "Shell32.dll", "Control_RunDLLW", "netcpl.cpl"},
    {SD_PASSWORD,                "Shell32.dll", "Control_RunDLLW", "password.cpl"},
    {SD_SYSTEM,                    "Shell32.dll", "Control_RunDLLW", "sysdm.cpl,,0"},
    {SD_REGIONAL_SETTINGS,        "Shell32.dll", "Control_RunDLLW", "intl.cpl,,0"},
    {SD_SOUNDS,                    "Shell32.dll", "Control_RunDLLW", "mmsys.cpl @1"},
    {SD_GAME_CONTROLLERS,        "Shell32.dll", "Control_RunDLLW", "joy.cpl"},
    {SD_KEYBOARD,                "Shell32.dll", "Control_RunDLLW", "main.cpl @1"},
    {SD_DEVICE_MANAGER,            "DevMgr.dll",  "DeviceManager_ExecuteA", " " /*set device ID here*/},
    {SD_EJECT_DEVICE,            "Shell32.dll", "Control_RunDLLW", "hotplug.dll"},
    {SD_LOCKWORKSTATE,            "USER32.dll", "LockWorkStation", ""},
};
#endif


//-------------------------------------------------------------------------------
//① 설       명  :
//② 인       수  :
//③ 리       턴  :
//-------------------------------------------------------------------------------
void TSystemCall::DoModal(int iDialogID, HWND hParent)
{
    for (int i=0; i<NUM_SYSTEM_DIALOGS; i++)
    {
        if (iDialogID==SDArray[i].iSystemDialogID)
        {
            PFUNCTION_ENTRYPOINT pEntryPoint=NULL;
            HMODULE  hModule = LoadLibrary(SDArray[i].cDllName);       
            if (hModule)
            {
                pEntryPoint = (PFUNCTION_ENTRYPOINT) GetProcAddress(hModule, SDArray[i].cFuncName);
            }
           
            if (pEntryPoint)
            {
                pEntryPoint(hParent, 0, SDArray[i].cCommand, SW_SHOW);
            }
            break;
        }
    }
}
행복End [nayahc]   2006-07-07 11:39 X
감사합니다. 잘 사용하겠습니다.

+ -

관련 글 리스트
313 장치 제거 mangchy 18419 2006/06/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.