程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 判斷windows的Desktop及其它目錄

判斷windows的Desktop及其它目錄

編輯:C語言基礎知識

  使用API函數SHGetSpecialFolder。shlobj.h裡有SHGetSpecialFolder的原型聲明。這個函數可以幫我們找到windows的Desktop目錄、啟動目錄、我的文檔目錄等。
   SHGetSpecialFolder需要三個參數。 第一個參數是HWND,它指定了"所有者窗口":在調用這個函數時可能出現的對話框或消息框。第二個參數是一個整數id,決定哪個目錄是待查找目錄,它的取值可能是:
  
   CSIDL_B99vBUCKET 回收站
   CSIDL_CONTROLS 控制面板
   CSIDL_DESKTOP Windows 桌面desktop
   CSIDL_DESKTOPDirectorY desktop的目錄
   CSIDL_DRIVES 我的電腦
   CSIDL_FONTS 字體目錄
   CSIDL_NETHOOD 網上鄰居
   CSIDL_NETWORK 網上鄰居virtual folder
   CSIDL_PERSONAL 我的文檔
   CSIDL_PRINTERS 打印機
   CSIDL_PROGRAMS 程序組
   CSIDL_RECENT 大多數最近打開的文檔列一
   CSIDL_SENDTO “發送到”菜單項
   CSIDL_STARTMENU 任務條啟動菜單項
   CSIDL_STARTUP 啟動目錄
   CSIDL_TEMPLATES 臨時文檔
   最後一個參數是pidl地址。SHGetSpecialFolderLocation把地址寫到pidl。
   下面的代碼演示了怎樣使用SHGetSpecialFolderLocation:
  
   //----------------------------------------------------------------------
   void __fastcall TForm1::Button1Click(TObject *Sender)
   {
   LP99vEMIDLIST pidl;
   LPMALLOC pShellMalloc;
   char szDir[MAX_PATH];
  
   if(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
   {
   if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,
   CSIDL_DESKTOPDIRECTORY,
   &pidl)))
   {
   // 假如成功返回true
   if(SHGetPathFromIDList(pidl, szDir))
   {
   Label1->Caption = szDir;
   }
  
   pShellMalloc->Free(pidl);
   }
  
   pShellMalloc->Release();
   }
   }
   //----------------------------------------------------------------------
   注重: 有些目錄是空的。有些特定的目錄在這個文件系統上並沒有一個相應的目錄。
  
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved