明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

小程序顯示誰連接到你的計(jì)算機(jī)

[摘要]文/重慶 李顯  有的程序員希望能夠顯示用戶當(dāng)前登錄的用戶名。這使得程序員可以識別當(dāng)前企圖執(zhí)行某個(gè)操作的用戶,也可以通知用戶機(jī)器已被某個(gè)用戶以外的用戶名登錄。如何使用Windows9x的網(wǎng)絡(luò)函數(shù)來完成此功能呢?   利用WindowsAPI函數(shù)WNetGetUser可以確定當(dāng)前登錄的用戶。在Win...
文/重慶 李顯

  有的程序員希望能夠顯示用戶當(dāng)前登錄的用戶名。這使得程序員可以識別當(dāng)前企圖執(zhí)行某個(gè)操作的用戶,也可以通知用戶機(jī)器已被某個(gè)用戶以外的用戶名登錄。如何使用Windows9x的網(wǎng)絡(luò)函數(shù)來完成此功能呢?


  利用WindowsAPI函數(shù)WNetGetUser可以確定當(dāng)前登錄的用戶。在Windows32系統(tǒng)中(Windows9x和WindowsNT),此函數(shù)接受本地驅(qū)動(dòng)器名,返回用戶名及其大小(用戶名緩沖區(qū)的大小)。

  按照下列步驟實(shí)現(xiàn)一個(gè)例子程序。運(yùn)行此程序,從菜單NetWorks中選擇菜單項(xiàng)UserNames,將彈出一個(gè)對話框,顯示此機(jī)器上安裝的驅(qū)動(dòng)器。當(dāng)從列表中選擇一個(gè)驅(qū)動(dòng)器后,文本域?qū)⒏淖優(yōu)榕c此驅(qū)動(dòng)器相連接的用戶名或字符串“None”。

  實(shí)現(xiàn)例子程序的具體步驟如下:

  1.在VisualC++中,利用AppWizard創(chuàng)建新的項(xiàng)目文件,并命名此項(xiàng)目文件為LD17.MAK.

  2.進(jìn)入AppStudio并創(chuàng)建新的對話框,在對話框中,添加標(biāo)題分別為DriveLtter:和NetworkName:以及UserName:的三個(gè)文本域。添加一個(gè)組合框,風(fēng)格設(shè)置為DropDownList。添加兩個(gè)靜態(tài)文本域,標(biāo)識符分別為:ID_NET_NAME和ID_NET_USER。

  3.將對話框ID改為ID_NETWORK_USER,并設(shè)置標(biāo)題為ViewNetworkUsers,保存對話框。

  4.進(jìn)入ClassWizard,選擇按鈕AddClass。在名字域中鍵入名字CNetworkUserDlg,基類為CDIALOG,對話框ID為ID_NETWORK_USER。

  5.在ClassWizard的下拉列表中選擇CNetworkUserDlg,從消息列表中選擇消息WM_INITDIALOG,點(diǎn)擊按鈕“EditCode”。

  6.在CNetworkUserDlg的方法OnInitDialog中輸入下列代碼:

  BOOLCNetworkUserDlg::OnInitDialog()

  {CDialog::OnInitDialog();

  charbuf[20];

  CComboBox*combo=(CComboBox*)GetDlgItem(IDC_COMBO1);

  for(inti=0;i<26;i++)

  {

  sprintf(buf,"%c:\",'A'+i);

  WORDtype="GetDriveType(buf);"

  switch(type)

  {caseDRIVE_FIXED:sprintf(buf,"%c:",'A'+i);combo->AddString(buf);

  break;

  caseDRIVE_REMOTE:

  sprintf(buf,"%c:",'A'+i);

  combo->AddString(buf);

  break;

  caseDRIVE_CDROM:

  sprintf(buf,"%c:",'A'+i);

  combo->AddString(buf);

  break;

  }

  }

  combo->SetCurSel(0);

  OnDriveChange();

  returnTRUE;//returnTRUEunlessyo

  usetthefocustoacontrol

  }