コントロールパネルの設定項目の立ち上げかたは CHAR ControlFileName[_MAX_PATH]; /*Contorl Panelのファイル名*/ CHAR OpenControlPanelCommand[MAX_PATH+100]; sprintf(OpenControlPanelCommand,"rundll32.exe shell32.dll,Control_RunDLL %s",ControlFileName); WinExec(OpenControlPanelCommand,SW_SHOW); 以上のやり方で開けます。 ControlFileNameがスペースを含む場合は" "で囲む必要が有ります。 このやり方だとコントロールパネルにない設定ファイルを開けますがたまにWindowsのシステムディレクトリに無いと 立ち上がらないのも有りますので期をつけて下さい。 コントロールパネルの設定項目の情報の確保の仕方は以下のやり方で出来ます コントロールパネルは実際はDLLファイルの名前をCPLに変えているだけなのでDLLを呼び出す 方法を使って同じ様に情報を得ます。 ちなみにエラーチェックは全くしていないのでエラーチェックを加える必要も有ります。 あと、コントロールパネルの情報を得ることが出来ないファイルも有ります。 Windowsのデフォルトで設定されているのかどうかはわかりませんが。情報の確保に 失敗した場合はファイル名を調べて。そのファイル名が来たときには以下のプログラムを使用せずに 直接データを渡す方式にした方が良いです CHAR ControlFileName[_MAX_PATH]; /*Control Panelのファイル名*/ HINSTANCE CplInstance; /*Control PanelのHANDLE*/ typedef LONG (CALLBACK* LPCPLAPPLET)(HWND,UINT,LONG,LONG); /*Call Back関数の定義*/ CplInstance=LoadLibrary(ControlFileName); /*CPLファイルをロードする*/ LPCPLAPPLET lpCplApplet; lpCplApplet=(LPCPLAPPLET)GetProcAddress(CplInstance,"CPlApplet"); /*CPLのCplApplet関数のアドレスを確保する*/ lpCplApplet(NULL,CPL_INIT,0,0); /*データなどの初期化をさせます*/ LONG CplSupport=lpCplApplet(NULL,CPL_GETCOUNT,0,0); /*CPLが提供するサービスの数を確保*/ NEWCPLINFO CplInfo; for(Counter=0;Counter < CplSupport;Counter++) { lpCplApplet(NULL,CPL_NEWINQUIRE,Counter,(LONG)&CplInfo); /*サポートするアプリケーションに対する情報の確保(新しい方法)*/ if(strlen(CplFileInfo->szName)!=0) return; /*最初のサービスの名前を確保 } CPLINFO OldCplInfo; CHAR GetCplName[100]; if(Counter==CalSupport)/*サービスに対する情報がなかった場合は古い方法で確保してみる*/ { lpCplApplet(NULL,CPL_INQUIRE,0,(LONG)&OldCplInfo); LoadString(CplInstance,OldCplInfo.idName,GetCplName,100); /*CplファイルからidNameで示される情報を取ってくる*/ strcpy(CplInfo.szName,GetCplName); LoadString(CplInstance,OldCplInfo.idInfo,GetCplName,100); /*CplファイルからidInfoで示される情報を取ってくる*/ strcpy(CplInfo.szInfo,GetCplName); if(strlen(CplFileInfo->szName)!=0) break; }