intTypePromotion=3

Visual C-020 Tắt máy khởi động máy

Chia sẻ: Son Cung | Ngày: | Loại File: PDF | Số trang:0

0
187
lượt xem
100
download

Visual C-020 Tắt máy khởi động máy

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'visual c-020 tắt máy khởi động máy', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Visual C-020 Tắt máy khởi động máy

  1. Làm thế nào để tắt máy/khởi động máy ? LÀM THẾ NÀO ĐỂ TẮT MÁY / KHỞI ĐỘNG LẠI MÁY ? Văn Chí Nam Khoa Công nghệ Thông tin, ĐH KHTN TP.HCM (vcnam@fit.hcmuns.edu.vn ) Phiên bản cập nhật ngày 18/04/2005 Trong môi trường Windows, lập trình viên hoàn toàn có thể tắt máy (Shutdown, PowerOff), khởi động lại máy (Restart) hoặc thoát khỏi người dùng hiện hành (LogOff) chỉ thông qua các đoạn code trong chương trình. Bài viết này giới thiệu cách thực hiện các chức năng như vậy : HÀM EXITWINDOWSEX Khai báo BOOL ExitWindowsEx( UINT uFlags, DWORD dwReason ); Diễn giải Hàm ExitWindowsEx có 2 tham số : uFlags : thông báo kiểu “thoát khỏi” Windows muốn thực hiện. uFlags gồm có các tham số : EWX_LOGOFF, EWX_REBOOT, EWX_POWEROFF, EWX_SHUTDOWN và hai tham số tùy chọn : EWX_FORCE, EWX_FORCEIFHUNG. Nhóm tham số đầu tiên (4 tham số) cho phép chọn lựa cách thực thi, trong đó hai tham số EWX_POWEROFF, EWX_SHUTDOWN có cách thực hiện tương đương việc chọn chức năng Shutdown trên HĐH Windows, điểm khác biệt giữa hai tham số này nằm ở chỗ tắt nguồn hay không tắt nguồn (EWX_POWEROFF cho phép tắt nguồn trong khi EWX_SHUTDOWN thì không!). Nhóm tham số thứ hai (2 tham số) cho phép chọn lựa kiểu “ép buộc” thoát khỏi Windows; EWX_FORCE dùng “biện pháp mạnh” đối với các chương trình (có nghĩa là không cần hỏi người sử dụng cần thoát hay không) còn EWX_FORCEIFHUNG thì “nhẹ nhàng hơn” (chờ đợi sự đồng ý của người dùng). dwReason : không áp dụng trên các hệ điều hành Windows 2000, Windows NT, Windows Me/98/95. 1/2
  2. Làm thế nào để tắt máy/khởi động máy ? CÀI ĐẶT Lưu ý Trong cài đặt, cần lưu ý trường hợp phải khởi động máy lại (Restart / Reboot) hoặc tắt máy hẳn (PowerOff / Shutdown). Cả hai trường hợp này cần phải thiết lập quyền thực thi. (Vì lý do an toàn, một số quyền trên hệ điều hành sẽ không được thực thi công việc đó). Chính vì vậy, cần phải sử dụng hàm AdjustTokenPriveleges để điều chỉnh quyền SE_SHUTDOWN_NAME. Một ví dụ cho trường hợp tắt máy (Shutdown) BOOL MySystemShutdown() { HANDLE hToken; TOKEN_PRIVILEGES tkp; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return( FALSE ); // Lấy giá trị LUID của quyền tắt máy LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; // tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; // Lấy quyền tắt máy cho tiến trình hiện tại AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); if (GetLastError() != ERROR_SUCCESS) return FALSE; // Tắt máy và ép buộc tất cả các ứng dụng phải bị đóng //Điều chỉnh các quyền khác ở chổ này if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0)) return FALSE; return TRUE; } Có thể tham khảo thêm chi tiết các hàm có liên quan trong MSDN. 2/2
ANTS
ANTS

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản