改良といっても、ほんの少しだけ手を加えるだけです。
他のパソコンのメールスロットに送信するには、宛先を
\\相手のパソコン名\mailslot\メールスロットの名前とするだけです。Cでは、「\」は、「\\」で表す点に注意してください。
自分自身のパソコンに送信するときはコンピュータの名前を「.」(ピリオド)にするか、 実際の名前を指定します。
/* mailslot03.c */ #include <windows.h> #include <stdio.h> int MyWrite(); int main() { char szNo[8]; int nNo; BOOL bEnd = FALSE; while (1) { printf("**** MENU ****\n"); printf("1.書き込み\n"); printf("0.終了\n"); printf("**************\n"); printf("\n"); printf("番号選択-->"); gets(szNo); nNo = atoi(szNo); switch (nNo) { case 1: MyWrite(); break; case 0: bEnd = TRUE; break; default: printf("不正な番号です\n"); continue; } if (bEnd) break; } return 0; } int MyWrite() { char szBuf[1024], szTemplate[] = "\\\\%s\\mailslot\\mymail", szComp[64], szMailSlot[128]; HANDLE hFile; BOOL bResult; DWORD dwWritten; printf("宛先のコンピュータ名(自分の時は'.')---"); gets(szComp); wsprintf(szMailSlot, szTemplate, szComp); hFile = CreateFile(szMailSlot, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { printf("メールスロットがありません\n"); return -1; } printf("書き込み-->"); gets(szBuf); strcat(szBuf, "\r\n"); bResult = WriteFile(hFile, szBuf, (int)strlen(szBuf) + 1, &dwWritten, NULL); if (bResult == FALSE) { printf("Error WriteFie\n"); CloseHandle(hFile); return -2; } CloseHandle(hFile); return 0; }受ける側のプログラムは第116章で作ったものを利用します。
今回も簡単でした。
Update Sep/20/2005 By Y.Kumei