Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Cách lấy đường dẫn ứng dụng đang chạy

  1. #1
    Ngày gia nhập
    11 2011
    Bài viết
    14

    Mặc định Cách lấy đường dẫn ứng dụng đang chạy

    Các cao thủ cho hỏi cách lấy đường dẫn hiện hành của ứng dụng đang chạy. (mình dùng VC++ 2008)
    ví dụ: C:\baitap\me.exe

    path là "C:\baitap"

    Thank you

  2. #2
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Trích dẫn Nguyên bản được gửi bởi ptolemy Xem bài viết
    Các cao thủ cho hỏi cách lấy đường dẫn hiện hành của ứng dụng đang chạy. (mình dùng VC++ 2008)
    ví dụ: C:\baitap\me.exe

    path là "C:\baitap"

    Thank you
    Bạn dùng hàm GetModuleFileName là lấy được đường dẫn.

    Mình thấy bạn hình như đang học viết chương trình với visual C++ thì phải, mình cho bạn xem 1 đoạn code mình viết để lấy đường dẫn của module hiện tại:

    Visual C++ Code:
    1. #include <Windows.h>
    2. #include <Shlwapi.h>
    3. #pragma comment (lib, "Shlwapi.lib")
    4.  
    5. /*!
    6.  * \brief
    7.  * Retrieves the directory path for the file that contains the current module.
    8.  *
    9.  * \param lpFilename
    10.  * A pointer to a buffer that receives the fully qualified path of the module.
    11.  * If the length of the path is less than the size that the nSize parameter specifies, the function succeeds and the path is returned as a null-terminated string.
    12.  * If the length of the path exceeds the size that the nSize parameter specifies, the function succeeds and the string is truncated to nSize characters including the terminating null character.
    13.  *
    14.  * \param nSize
    15.  * The size of the lpFilename buffer, in TCHARs.
    16.  *
    17.  * \returns
    18.  * If the function succeeds, the return value is the length of the string that is copied to the buffer, in characters,
    19.  * not including the terminating null character.
    20.  * If the buffer is too small to hold the module name, the string is truncated to nSize characters including the terminating null character, the function returns nSize,
    21.  * and the function sets the last error to ERROR_INSUFFICIENT_BUFFER.
    22.  *
    23.  * Retrieves the directory path for the file that contains the current module.
    24.  *
    25.  */
    26. DWORD WINAPI GetModuleDirectory(
    27.     __out_ecount_part(nSize, return + 1) LPTSTR lpFilename,
    28.     __in    DWORD nSize
    29.     )
    30. {
    31.     HMODULE hCurrentModule = NULL;
    32.     DWORD   nFullPathSize  = 0;
    33.  
    34.     // validate input parameters
    35.     if ( (lpFilename == NULL) || (nSize == 0) )
    36.     {
    37.         SetLastError(ERROR_INSUFFICIENT_BUFFER);
    38.         return 0;
    39.     }
    40.  
    41.     // Get current module handle
    42.     hCurrentModule = GetModuleHandle(NULL);
    43.     if (hCurrentModule == NULL)
    44.         return 0;
    45.  
    46.     ZeroMemory(lpFilename, nSize * sizeof(TCHAR));
    47.  
    48.     // get full path
    49.     nFullPathSize = GetModuleFileName(hCurrentModule, lpFilename, nSize);
    50.     if (nFullPathSize == 0)
    51.         return 0;
    52.  
    53.     if ( (nFullPathSize >= nSize) && (GetLastError() == ERROR_INSUFFICIENT_BUFFER) )
    54.     {
    55.         lpFilename[0] = _T('\0');
    56.         SetLastError(ERROR_INSUFFICIENT_BUFFER);
    57.         return 0;
    58.     }
    59.  
    60.     // remove file name
    61.     PathRemoveFileSpec(lpFilename);
    62.  
    63.     return lstrlen(lpFilename);
    64. }

Các đề tài tương tự

  1. MS SQL Lỗi SQL Server 2005 express chạy chậm khi chạy report?
    Gửi bởi dongtrien trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 26-03-2013, 09:12 PM
  2. Q-Smart S15 thiết kế chắc chắn chạy android giá rẻ
    Gửi bởi 16thang4 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 22-08-2012, 04:07 PM
  3. Trả lời: 4
    Bài viết cuối: 28-06-2012, 03:35 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn