メルマガ:■CからウィンドウズDIRECTXプログラミング
タイトル:C〜WindowsDirectXへの道FileOp  2000/10/22


 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-//    PR//-=-=
「美味しいんですかね・・・赤いメロンって?」「食べた人に聞いてみよ。」
               ▽ ▽ ▽
        【みんなの声で、あなたのベストを新発見】
 ▲▲買う前に読むべし! あの品この品、体験レポート共有サイト!▲▲
             http://www.echelp.net/
=-=-//000240-00637//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■


発行部数:MagMag 2345  Pubzine 306  カプライト215
     Melten 39  E-Magazine 53  ここでメール 149
     Macky 164 Melma 224  

 総発行部数:3500


▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼
------------------------------------------------------------
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓

■CからはじめるWindowsDirectXへの道 ■      
      
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

 ホーム:<http://www.geocities.co.jp/SiliconValley-Bay/3125> 
   
┌─────────────────────────────┐


■第2章 ファイル操作( ファイル 編)   


└─────────────────────────────┘
   さて、Windows18回2部 説明を行っていきます。

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                ●   ファイル操作 ●
    
  今回は、ファイル操作 について触れていきます.
  関数などの説明は、サンプルのあとに乗せていきます。
 
┌─────────────────────────────┐
┌─────────────────────────────┐

───────────────────────────────
    メインヘッダーファイル
───────────────────────────────
     #include"MCFile.h"
───────────────────────────────
  今回は、クラスの利用のため自作のMCFile.hをインクルードしています。
 今回は、クラスの使い方なので、クラスのみの説明をします.
┌─────────────────────────────┐
    さて、ここからが一番重要な部分です。
  
  注意点として、今回は、すべてPUBLICにしていますが、
 メソッドや内部の処理の隠滅を行いたいときには、
 それぞれの役割を考えてクラスを組んで下さい。

 ここで、少し関数などもそうですが、コメントの入れる場合の
 説明をします。

  まず、メソッド名、引数、戻り値、作者、作成日付
 は、最低でも必要です。
  さらに、わかりやすくするには、注意事項や使用法を
 明記すると良いでしょう。

  また、C++では、”// ”と関数の前に入れてコメントを
 いれることにより、そのコメント内のものを表示させる
 ことができます。
  クラス名.←のあとに表示される右側のあれです.
   説明では、コメントは削除しています.
  
───────────────────────────────
┌─────────────────────────────┐

┌─────────────────────────────┐

   ■ クラスファイル <ソースファイル>■

┌─────────────────────────────┐
     #include"MCFile.h"
     void MCFile::FileOpen(LPTSTR lpFileName)
     {
      hFile=CreateFile(lpFileName,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,
      FILE_ATTRIBUTE_NORMAL,NULL);
      if (hFile==INVALID_HANDLE_VALUE)
      return;
     }
───────────────────────────────
    ファイルを読み書き両用で開き、もしファイルハンドルが得られなかった場合、
    終了しています.
───────────────────────────────
関数説明 CreateFile 使ったフラグの説明のみ説明をします.
       それ以外については、MSDNをご参照ください.
    
          GENERIC_READ  ファイルを読み込み専用に開きます.
                   GENERIC_WRITE ファイルを書き込み専用に開きます.

  OPEN_ALWAYS    ファイルをオープンします。
                                  指定ファイルが存在していない場合、関数は新しいファイルを作成します。 

                   FILE_ATTRIBUTE_NORMAL とくに属性はありません。単独で指定します。

           関数が失敗すると、INVALID_HANDLE_VALUE が返ります。
───────────────────────────────
     void MCFile::FileRead(CHAR* lpBuff)
     {
      DWORD dwRead;
     
      SetFilePointer(hFile,0,NULL,FILE_BEGIN);
       ReadFile(hFile,lpBuff,strlen(lpBuff)+1,&dwRead,NULL);
     }
───────────────────────────────
まず、ファイルの先頭に移動しています.
    次に、指定したファイルからデータを読み取っています。
───────────────────────────────
        SetFilePointer
ファイルポインタを移動します。

DWORD SetFilePointer(
  HANDLE hFile,          
  LONG lDistanceToMove,  
  PLONG lpDistanceToMoveHigh,
  DWORD dwMoveMethod     
);
パラメータ
hFile
ファイルのハンドルを指定します。
このハンドルは、GENERIC_READ または GENERIC_WRITE アクセスを
持っていなければなりません。

lDistanceToMove
新しいファイルポインタの位置を、オフセットで指定します。
正の値を指定すると順方向に、負の値を指定すると逆方向に移動します。

lpDistanceToMoveHigh
オフセットの上位 32 ビットが入った LONG 型変数へのポインタを指定します。
関数が成功すると、この変数にファイルポインタの新しい位置の上位ダブルワードが格納されます。
このパラメータに有効なポインタを指定すると (2^64)-2 バイトまでのファイルが操作できますが、
NULL を指定すると (2^32)-2 バイトまでのファイルしか操作できません。

dwMoveMethod
ファイルポインタ移動の開始点を指定します。
次の値のいずれかを指定します。
値 意味 
FILE_BEGIN ファイルの先頭を開始点にします。 
FILE_CURRENT ファイルポインタの現在位置を開始点にします。 
FILE_END ファイルの終端を開始点にします 
───────────────────────────────
ReadFile
ファイルからデータを読み取ります。
ファイルポインタの現在位置が、読み取りの開始位置になります。
読み取りが終了すると、ファイルポインタの位置は、
読み取ったバイト数だけ進められます。

BOOL ReadFile(
  HANDLE hFile,               
  LPVOID lpBuffer,            
  DWORD nNumberOfBytesToRead, 
  LPDWORD lpNumberOfBytesRead,
  LPOVERLAPPED lpOverlapped   
);
パラメータ
hFile
ファイルのハンドルを指定します。このハンドルは、GENERIC_READ アクセスを
持っていなければなりません。

lpBuffer
バッファへのポインタを指定します。このバッファに、ファイルから
読み取ったデータが格納されます。

nNumberOfBytesToRead
読み取るバイト数を指定します。

lpNumberOfBytesRead
DWORD 型の変数へのポインタを指定します。
この変数に、実際に読み取られたバイト数が格納されます。

lpOverlapped パラメータに NULL を指定した場合は、
     lpNumberOfBytesRead パラメータに NULL を指定することはできません。

lpOverlapped パラメータに有効なポインタを指定した場合は、
     lpNumberOfBytesRead パラメータに NULL を指定することができます。


───────────────────────────────
     void MCFile::FileWrite(LPSTR lpBuff)
     {
      DWORD dwWrite;
     
     WriteFile(hFile,lpBuff,lstrlen(lpBuff)+1,&dwWrite,NULL);
     }
───────────────────────────────
ファイルにデータを書き込みます.
───────────────────────────────
WriteFile
ファイルにデータを書き込みます。ファイルポインタの現在位置が、
書き込みの開始位置になります。書き込みが終了すると、
ファイルポインタの位置は、書き込んだバイト数だけ進められます。

BOOL WriteFile(
  HANDLE hFile,               
  LPCVOID lpBuffer,           
  DWORD nNumberOfBytesToWrite,  
  LPDWORD lpNumberOfBytesWritten,
  LPOVERLAPPED lpOverlapped   
);
パラメータ
hFile
ファイルのハンドルを指定します。このハンドルは、GENERIC_WRITE アクセスを
持っていなければなりません。

lpBuffer
書き込むデータが入ったバッファへのポインタを指定します。

nNumberOfBytesToWrite
書き込むバイト数を指定します。

lpNumberOfBytesWritten
DWORD 型の変数へのポインタを指定します。
この変数に、実際に書き込まれたバイト数が格納されます。
lpOverlapped パラメータに NULL を指定した場合は、
lpNumberOfBytesWritten パラメータに NULL を指定することはできません。
lpOverlapped パラメータに有効なポインタを指定した場合は、
lpNumberOfBytesWritten パラメータに NULL を指定することができます。

        さらに詳しくは、MSDNをご参照ください.
───────────────────────────────
     void MCFile::FileClose()
     {
      if(hFile)
      CloseHandle(hFile);
     }
───────────────────────────────
ファイルハンドルが存在する場合、ファイルハンドルを解放しています.
───────────────────────────────
CloseHandle
オープンしているオブジェクトハンドルをクローズします。

BOOL CloseHandle(
  HANDLE hObject 
);
パラメータ
hObject

オブジェクトのハンドルを指定します。

───────────────────────────────

     void MCFile::FileCopy(LPTSTR lpExitFileName,LPTSTR lpNewFileName)
     {
      CopyFile(lpExitFileName,lpNewFileName,TRUE);
     }     
───────────────────────────────
CopyFile
ファイルをコピーします。

BOOL CopyFile(
  LPCTSTR lpExistingFileName,
  LPCTSTR lpNewFileName, 
  BOOL bFailIfExists     
);
パラメータ
lpExistingFileName
既存ファイルのファイル名が入った NULL で終わる文字列へのポインタを指定します。

lpNewFileName
新しいファイルのファイル名が入った NULL で終わる文字列へのポインタを指定します。

bFailIfExists
lpNewFileName パラメータで指定したファイルがすでに存在していたときの動作を指定します。
TRUE を指定すると、関数は失敗します (コピーは行われません)。
FALSE を指定すると、既存のファイルを上書きし、関数は成功します。

───────────────────────────────
     void MCFile::FileDelete (LPTSTR szFileName)
     {
      if (hFile)
     {
      CloseHandle(hFile);
      DeleteFile(szFileName);
     }
     }
───────────────────────────────
DeleteFile
既存のファイルを削除します。

BOOL DeleteFile(
  LPCTSTR lpFileName
);
パラメータ
lpFileName
削除するファイルのファイル名が入った NULL で終わる文字列を指定します。
───────────────────────────────
     void MCFile::MakeDir(LPTSTR DirName)
     {
      CreateDirectory(DirName,NULL);
     }
───────────────────────────────
CreateDirectory
ディレクトリを作成します。ファイルシステムがファイルとディレクトリの
セキュリティをサポートしている場合は、指定されたセキュリティ記述子を
新しいディレクトリに適用します。

BOOL CreateDirectory(
  LPCTSTR lpPathName,  // pointer to a directory path string
  LPSECURITY_ATTRIBUTES lpSecurityAttributes 
);
パラメータ
lpPathName
作成するディレクトリのパス名が入った NULL で終わる文字列へのポインタを指定します。
パス名の最大長は、MAX_PATH 文字です。

lpSecurityAttributes
セキュリティ属性が入ったSECURITY_ATTRIBUTES 構造体へのポインタを指定します

───────────────────────────────
     void MCFile::MakeDirEx(LPTSTR TmpDir,LPTSTR NewDir)
     {
      CreateDirectoryEx(TmpDir,NewDir,NULL);
     }
───────────────────────────────
CreateDirectoryEx
新しいディレクトリを作成します。
ファイルシステムがファイルとディレクトリのセキュリティを
サポートしている場合は、指定されたセキュリティ記述子が
新しいディレクトリに適用されます。

BOOL CreateDirectoryEx(
   LPCTSTR lpTemplateDirectory,   
   LPCTSTR lpNewDirectory,
   LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
パラメータ
lpTemplateDirectory
テンプレートディレクトリのパス名が入った NULL で終わる文字列
へのポインタを指定します。
このディレクトリが、新しいディレクトリに対するテンプレートとして利用されます。

lpNewDirectory
作成するディレクトリのパス名が入った NULL で終わる文字列へのポインタを指定します。

lpSecurityAttributes
セキュリティ属性が入ったSECURITY_ATTRIBUTES 構造体へのポインタを指定します。

───────────────────────────────
     void MCFile::DeleteDir(LPTSTR lpPathName)
     {
      RemoveDirectory(lpPathName);
     }
───────────────────────────────
RemoveDirectory
空のディレクトリを削除します。

BOOL RemoveDirectory(
  LPCTSTR lpPathName   // pointer to directory to remove
);
パラメータ
lpPathName

削除するディレクトリのパス名が入った NULL で終わる文字列を指定します。
ディレクトリは、空でなければなりません。
また、呼び出し側プロセスは、ディレクトリを削除する権限をもっていなければなりません。

───────────────────────────────
     void MCFile::FileMove (LPTSTR lpExitFileName,LPTSTR lpNewFileName)
     {
      MoveFile(lpExitFileName,lpNewFileName);
     }
───────────────────────────────
MoveFile
既存のファイルまたはディレクトリを移動 (名前を変更) します。

BOOL MoveFile(
  LPCTSTR lpExistingFileName,
  LPCTSTR lpNewFileName      
);
パラメータ
lpExistingFileName
既存のファイル名またはディレクトリ名が入った NULL で終わる文字列へのポインタを指定します。

lpNewFileName
ファイルまたはディレクトリの新しい名前が入った NULL で終わる文字列へのポインタを指定します。
ファイル名には、別のファイルシステムや別のドライブを指定しても構いません。
ディレクトリ名には別のドライブは指定できません。
ファイル名もディレクトリ名も、既存の名前を指定してはいけません。
───────────────────────────────
     void MCFile::FileGetFullPath(LPSTR lpFileName,CHAR* lpFullFileName)
     {
      LPTSTR lpFilePart;
     GetFullPathName(lpFileName,MAX_PATH,lpFullFileName,&lpFilePart);
     }
───────────────────────────────
GetFullPathName
カレントドライブ名およびカレントディレクトリ名と、指定されたファイル名を連結します。

DWORD GetFullPathName(
  LPCTSTR lpFileName,  // pointer to name of file to find path for
  DWORD nBufferLength, // size, in characters, of path buffer
  LPTSTR lpBuffer,     // pointer to path buffer
  LPTSTR *lpFilePart   // pointer to filename in path
);
パラメータ
lpFileName
ファイル名が入った NULL で終わる文字列へのポインタを指定します。

nBufferLength
lpBuffer バッファのサイズを指定します。

lpBuffer
バッファへのポインタを指定します。このバッファに、カレントドライブ名および
カレントディレクトリ名と、lpFileName パラメータで指定したファイル名とを
連結した名前が格納されます。

lpFilePart
LPTSTR 型の変数へのポインタを指定します。この変数に、lpBuffer バッファ内のファイル名の
部分へのポインタが格納されます。

───────────────────────────────
     void MCFile::FileGetTmpFileName()
     {
      GetTempPath(MAX_PATH,szTmpPath);
      GetTempFileName(szTmpPath,"TMP",0,szTmpFile);
      hFile=CreateFile(szTmpFile,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,
      FILE_ATTRIBUTE_TEMPORARY,NULL);
      if (hFile==INVALID_HANDLE_VALUE)
      return;

     }
   ───────────────────────────────
   ここでは、添付ファイル名および添付ファイルのディレクトリの取得を
   行っています.
   ───────────────────────────────
   GetTempPath
   テンポラリファイル用のディレクトリのパスを取得します。

   DWORD GetTempPath(
     DWORD nBufferLength,
     LPTSTR lpBuffer     
   );
   パラメータ
   nBufferLength
   lpBuffer バッファのサイズを指定します。

   lpBuffer
   バッファへのポインタを指定します。このバッファに、テンポラリファイル用の
   ディレクトリのパスが格納されます
───────────────────────────────
GetTempFileName
テンポラリファイルのファイル名を作成します。
または、テンポラリファイルのファイル名を作成し、実際にテンポラリファイルを作成します。

UINT GetTempFileName(
  LPCTSTR lpPathName,  // pointer to directory name for temporary 
  LPCTSTR lpPrefixString,  // pointer to filename prefix
  UINT uUnique,        // number used to create temporary filename
  LPTSTR lpTempFileName 
);
パラメータ
lpPathName
テンポラリファイルを作成するパスのパス名が入った NULL で終わる ANSI 文字列への
ポインタを指定します。
通常、カレントディレクトリを示すピリオドか、GetTempPath 関数の実行結果を指定します
。NULL を指定すると、この関数は失敗します。

lpPrefixString
ファイル名のプリフィックスが入った NULL で終わる ANSI 文字列へのポインタを指定します。
このプリフィックスが、テンポラリファイルのファイル名の最初の文字として使われます。
ただし、プリフィックスは、最初の 3 文字までしか使われません。

uUnique
符号なし整数を指定します。この整数を基に、テンポラリファイルのファイル名が作成されます。


───────────────────────────────
     void MCFile::FileAttributes(LPSTR lpFileName)
     {
      HANDLE hFileTime; /* ファイルの日付を得るファイルハンドル */
     FILETIME fLastWrite; /* ファイルの日付の最終書き込み時刻 */
      SYSTEMTIME fSysLastWrite;
     FILETIME fLastAccess; /* ファイルの日付の最終アクセス時刻 */
      SYSTEMTIME fSysLastAccess;
     FILETIME fCreate; /* ファイルの作成日時 */
      SYSTEMTIME fSysCreate;
     DWORD dwFileSize; /* ファイルのサイズ */
      /* 開かれているファイルが存在しないときにファイルを開く*/
     if (!hFile)
      {
      hFileTime=CreateFile(lpFileName,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,
      FILE_ATTRIBUTE_NORMAL,NULL);
      if (hFileTime==INVALID_HANDLE_VALUE)
      return;
      }else
     {
      /* 開かれているファイルがある場合は、置き換えを行う。 */
      hFileTime=hFile;
      }
     /* ファイルの日付を得る。*/
           GetFileTime(hFileTime,&fCreate,&fLastAccess,&fLastWrite);
      /* システム時刻への変換を行う。 */
     FileTimeToSystemTime(&fLastWrite,&fSysLastWrite);
      FileTimeToSystemTime(&fLastAccess,&fSysLastAccess);
     FileTimeToSystemTime(&fCreate,&fSysCreate);

      /* ファイルの日付の最終書き込み時刻 */
     CharToFileTime(fSysLastWrite,szLastWrite);
      /* ファイルの作成日時 */
     CharToFileTime(fSysCreate,szCreateTime);
      /* ファイルの日付の最終アクセス時刻 */
     CharToFileTime(fSysLastAccess,szLastAccessTime);

      /* ファイルのサイズを得る */
     dwFileSize=GetFileSize(hFileTime,NULL);
      wsprintf(szFileSize,"%d",dwFileSize);
     
     /* ファイルハンドルを閉じる*/
      CloseHandle(hFileTime);
     }     
───────────────────────────────
        紙面の都合上この情報は、MSDNにて調べてください.
───────────────────────────────
     void MCFile::CharToFileTime(SYSTEMTIME sysTime,CHAR* szFileTime)
     {
      wsprintf(szFileTime,"%2d/%2d/%d %d:%2d:%2d",
      sysTime.wYear ,sysTime.wMonth ,sysTime.wDay ,
      sysTime.wHour ,sysTime.wMinute ,sysTime.wSecond );
     }

┌─────────────────────────────┐
  今回、ファイル操作関連のAPIを紹介しましたが、
  もう少し簡単に使うことのできるAPIもあります.
  そちらのほうは、ある程度初歩のWindows系が終了したら
  順に紹介させていただきます.

  それでは、また今回から一般の方の紹介をフッターに乗せています.  
  
なお、以上のプログラムは、私の動作環境VC++6.0 Win32 Application
で確認済みです.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
 メールアドレス:<mailto:rain2000@geocities.co.jp>
 ホームページ :<http://www.geocities.co.jp/SiliconValley-Bay/3125>

 発行者:rain2000
 編集 :rain2000

 このメールマガジンは,以下の発行者さんを通して発行してます.

 ●まぐまぐ:
  アドレス : http://www.mag2.com/
 ID    : 0000024922

 ●クリックインカム:
 アドレス :http://clickincome.net/
 ID    : m00002885

 ●Pubzine 
 アドレス :Pubzine (http://www.pubzine.com/)
 ID    :004293

  ●ここでメール
 アドレス : http://mail.cocode.ne.jp/
 ID    : 0400100071

 ●メルマガ天国
 アドレス : http://melten.com/
 ID    : 300

 ●E-magazine 
 アドレス :http://www.emaga.com/
 ID    :cwindows

 ●Macky   
 アドレス : http://macky.nifty.ne.jp/
 ID    : 2329

  ●カプライト  
 アドレス : http://kapu.cplaza.ne.jp/ 
 ID    : 234

 また、登録解除などの手続きに関しましては,上記の  
  ホームにてお願いします.

  私宛にメールをいただいても、解除はおよび登録は
 いたしません.
 

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■

     電話など購入はこちらで・・・・・。
     
┌─────────────────────────────┐
 電話加入権激安!ISDNライトなら9800円で電話が引ける!?(株)コムズ
 ↓詳しくはここをクリック!
 <http://www.comzz.co.jp/cgi-bin/cookie/set.cgi?t=top&id=2543>
└─────────────────────────────┘

  フレッツ接続をご希望ならば、こちら!!!!!
 <http://www.info-ntt.co.jp/cgi-bin/telepocket/telepocket.cgi?id=10014057>


 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■

 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■
[title]ディジタル・カンパニーNETWORK
[url]http://dc-network.co.jp/
[comment]
特許出願済・税理士監修の小規模事業所(法人・個人)・会計初心者向け超かんたんPC会計ソフト
[name]高丸 千奈美
[email]sales@dc-network.co.jp
[category]コンピューター
 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■
[title]SeaCom-net TV GAME市場
[url]http://www.seacom.co.jp/
[comment]
今話題の「プレステ2」をはじめ、ゲームの事なら何でも揃う!メガストアー「シーコム!」情報量満載です!
[name]山口慶二
[email]t-boy@seacom.co.jp
[category]趣味・生活
 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■
[title]らぶりぃぷろだくつホームページ
[url]http://www3.justnet.ne.jp/~watch/lovely/
[comment]
XMLを利用したサイバースペース(仮想共有空間)を展開するアマチュアのゲーム制作サークル。RPGを中心にゲームを開発中。
[name]渡辺浩晃
[email]watch@ma3.justnet.ne.jp
[category]趣味・生活
 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■
[title]SugiSugiWorld
[url]http://sugisugi.hoops.ne.jp/
[comment]
LINUX初心者やWINDOWSからの移行者の為のサイト。アプリのインストールや設定を初心者向けに解説。
[name]杉岡 研史
[email]kenji_sugioka@agrex.co.jp
[category]コンピューター
 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■
[title]SCAL Software Production
[url]http://scal.hypermart.net/
[comment]
ソフトウェア制作サークル。フリーゲームソフト「Shopping2」好評DL中。現在プログラマー募集中です。まずはサイトにおいでください。
[name]後藤達也
[email]taji@po3.across.or.jp
[category]コンピューター
 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■
[title]Thirst
[url]http://www.thirst.co.jp/
[comment]
カスタムパソコン販売。低価格、高スペック、安心サポートならどこにも負けません。激安DOS/Vパーツ販売。在庫豊富で即日出荷!
[name]篠宮 眞次
[email]shinji@acting.co.jp
[category]オンラインショッピング
 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■
[title]PCレスキュー協会
[url]http://www.go-rescue.com/
[comment]
PCレスキュー協会。PCメンテナンスの全国規模の出張サービス業務。HPで依頼、価格廉価。
[name]桑原 恒雄
[email]t_kuwa@vir.bekkoame.ne.jp
[category]コンピューター
 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■
[title]SeaCom-net TV GAME市場
[url]http://www.seacom.co.jp/
[comment]
今話題の「プレステ2」をはじめ、ゲームの事なら何でも揃う!メガストアー「シーコム!」情報量満載です!
[name]山口慶二
[email]t-boy@seacom.co.jp
[category]オンラインショッピング
 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■
[title]モバイル端末・PC周辺機器激安
[url]http://www.nwsquare.co.jp/
[comment]
携帯電話・モバイル通信機器・PC関連機器激安の穴場!携帯電話無料サービスも常設![name]高橋時哉
[email]todo@po.nwsquare.co.jp
[category]オンラインショッピング
 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■
[title]PC119(ピーシーレスキュー)
[url]http://www.pc119online.com/
[comment]
パソコンのトラブルなどの助け合いページです。すべて無料サービス。ポイントをためてチャンピオンをめざそう!
[name]田井中一弥
[email]info@pc119online.com
[category]コンピューター
 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■

ブラウザの閉じるボタンで閉じてください。