• 締切済み

C言語でPCの環境を表示することはできるか

いつもお世話になっております。 現在、C言語について勉強中です。 今はC言語でPCのPC名や設定しているプリンタ名等、基本的な設定を一括表示 するようなプログラムを組んで見たいと、思っております。 そこで質問なのですが、 レジストリの内容を表示させる方法や、プリンタの設定を表示させるための ソースが載っているHPはありますでしょうか。 勝手な質問かもしれませんが、もし分かる方がいらっしゃいましたら、 よろしくお願いします。

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★レジストリの使用例のリンクを紹介します。  http://www.ne.jp/asahi/oh/landd/prog_html/prog53.html→『壁紙の表示タイプの変更』  RegOpenKeyEx、RegSetValueEx、RegCloseKey の簡単な使用例です。  壁紙つながりで壁紙の表示方法を設定するサンプルを載せます。  レジストリのお勉強の最初のころのソースから抜粋しました。 /* レジストリキー(値)の文字列定数 */ #define MSG_DESKTOP       TEXT("Control Panel\\Desktop") #define MSG_TILEWALLPAPER  TEXT("TileWallpaper") #define MSG_WALLPAPERSTYLE TEXT("WallpaperStyle") // 壁紙の画像イメージ+表示方法を設定 VOID FuncSetWallPaper( INT nStyle, LPCTSTR lpImage ) {  LPCBYTE lpData;  HKEY   hReg;    switch ( nStyle ){   case 0: lpData = (LPCBYTE)TEXT("0"); break;   case 1: lpData = (LPCBYTE)TEXT("1"); break;   case 2: lpData = (LPCBYTE)TEXT("2"); break;   default:nStyle = -1;  }  if ( nStyle >= 0 ){   if ( RegOpenKeyEx(HKEY_CURRENT_USER,MSG_DESKTOP,0,(KEY_READ|KEY_WRITE),&hReg) == ERROR_SUCCESS ){    RegSetValueEx( hReg, MSG_WALLPAPERSTYLE, 0, REG_SZ, lpData, 2 );    RegSetValueEx( hReg, MSG_TILEWALLPAPER, 0, REG_SZ, lpData, 2 );    RegCloseKey( hReg );   }  }  if ( lpImage == NULL ){   lpImage = TEXT("");  }  SystemParametersInfo( SPI_SETDESKWALLPAPER, 0, (LPVOID)lpImage, SPIF_UPDATEINIFILE ); } // 使い方 FuncSetWallPaper( 0, TEXT("C:\\wallpager1.bmp") ); // 中央に表示 FuncSetWallPaper( 1, TEXT("C:\\wallpager2.bmp") ); // 並べて表示 FuncSetWallPaper( 2, TEXT("C:\\wallpager3.bmp") ); // 拡大して表示 その他: ・レジストリの操作には注意して下さい。取得だけなら特に問題はないと思います。  下の『参考URL』にもう2つだけリンクページを紹介します。 ・あと SystemParametersInfo 関数などで、PC環境のいろいろな設定を読み出せます。  SPI_GETxxxx 定数でユーザー補助、デスクトップ、アイコン、入力、メニュー、  電力管理、UI効果などが取得できます。詳しくは MSDN マニュアルをどうぞ。  http://msdn.microsoft.com/library/ja/jpsysinf/html/_win32_systemparametersinfo.asp ・以上。

参考URL:
http://hp.vector.co.jp/authors/VA016117/registry.html,http://www.h4.dion.ne.jp/~fht/wptips/reg.html
  • yonfa
  • ベストアンサー率52% (22/42)
回答No.1

以下のようにいろいろとWin32APIがそろっています。 http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpsysinf/html/Toppage_SystemInformation.asp http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpgdi/html/Toppage_PrintingPrintSpooler.asp http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpsysinf/html/Toppage_Registry.asp GetComputerName()やGetDefaultPrinter()のように 単純に取得できない場合もあるかもしれません。 試行錯誤してわからなかった場合は改めてご質問ください。 「表示」させる方法は、どのようなアプリケーションを作るかによって変わります。 「情報の取得」と「表示」は切り離してお考えください。

関連するQ&A