Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Cách lấy System Info trong lập trình Win32 API

    Xin chào các bạn !
    Lâu lâu lại làm một cái hướng dẫn nho nhỏ gọi là góp vui với anh em Cviet ^^!

    Bài này X hướng dẫn 1 chút xíu về các struct và API sử đụng để lấy thông tin hệ thống (System Information).
    Thực ra cũng không có gì cả, rất đơn giản nếu bạn đã quen với Win32API, Windows Programming; nếu không
    thì bạn sẽ gặp một chút khó khăn nhỏ khi bắt đầu đấy. ^^!

    Đầu tiên bao giờ cũng cần tài liệu để tra cứu (Documentation), với Windows Programming thì MSDN là một
    phần không thể thiếu và ai cũng cần phải biết sử dụng nó để tra cứu.

    Với bài này các bạn truy vào mục sau: _http://msdn.microsoft.com/en-us/library/ms725495(VS.85).aspx

    Sau đó chọn System Information và bạn sẽ thấy nhiều thành phần nhỏ được chia ra để tham khảo.

    Cùng nhau thử 1 số nhé.

    1) GetComputerName(); GetComputerNameEx();
    Link: _http://msdn.microsoft.com/en-us/library/ms724220(VS.85).aspx
    Đọc định nghĩa của nó 1 chút nha:


    GetComputerName Function
    Retrieves the NetBIOS name of the local computer. This name is established at system startup, when the system reads it from the registry.

    BOOL WINAPI GetComputerName(
    __out LPTSTR lpBuffer,
    __inout LPDWORD lpnSize
    );

    If the function succeeds, the return value is a nonzero value.

    If the function fails, the return value is zero. To get extended error information, call GetLastError.
    Vậy mình làm đoạn code nhỏ để thử lấy ComputerName nhé !


    Mã:
    // Coded by Xcross87#include <stdio.h>#include <windows.h> int main(void){    TCHAR lpBuffer[256];    DWORD lpnSize = sizeof(lpBuffer); // Lấy kích thuwocs của buffer trước.        if(!GetComputerName(lpBuffer,&lpnSize)) {        // Nếu không lấy được thì thoát.        printf("Error getting computer name...
    ");        exit(-1);    }        // Nếu lấy được tên thì in ra    printf("Computer name is: %s 
    ", lpBuffer);        // Giải phóng bộ nhớ    lpnSize = sizeof(lpBuffer);    ZeroMemory(lpBuffer, lpnSize);       // Trả về    return 0;}
    2) GetUserName(); GetUserNameEx();
    Link: http://msdn.microsoft.com/en-us/libr...32(VS.85).aspx

    Đọc định nghĩa 1 chút:

    GetUserName Function
    Retrieves the name of the user associated with the current thread.

    BOOL WINAPI GetUserName(
    __out LPTSTR lpBuffer,
    __inout LPDWORD lpnSize
    );

    If the function succeeds, the return value is a nonzero value, and the variable pointed to by lpnSize contains the number of TCHARs copied to the buffer specified by lpBuffer, including the terminating null character.

    If the function fails, the return value is zero. To get extended error information, call GetLastError.
    Viêt một đoạn code nhỏ sử dụng cái này nha:

    Mã:
    // Coded by Xcross87 #include <stdio.h>#include <windows.h> int main(void){    TCHAR lpBuffer[256];    DWORD lpnSize = sizeof(lpBuffer); // Lấy kích thước của buffer trước.        if(!GetUserName(lpBuffer,&lpnSize)) {        // Nếu không lấy được thì thoát.        printf("Error getting user name of the current thread...
    ");        exit(-1);    }        // Nếu lấy được tên thì in ra    printf("Current-thread user name is: %s 
    ", lpBuffer);        // Giải phóng bộ nhớ    lpnSize = sizeof(lpBuffer);    ZeroMemory(lpBuffer, lpnSize);       // Trả về    return 0;}
    Đó là 2 ví dụ cơ bản làm mẫu ^^!
    Bên trong còn rất nhiều các API tra cứu thông tin tương tự, các bạn tự tìm hiểu nhé.

    [Kết thúc phần 1]

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bạn ơi. có thể chỉ mình cách lấy icon hệ thống và thông tin từng ổ đĩa,folder đc không bạn?

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bị mắc 1 lỗi cơ bản là: khi gọi GetComputerName, thì tham số thứ 2 là "specifies the size of the buffer, in TCHARs" nên sửa lại là: lpnSize = sizeof(lpBuffer)/sizeof(TCHAR), tương tự cho GetUserName.
    Best Regards.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •