Để ngăn hệ thống vào chế độ chờ, bạn có thể thử sử dụng chức năng SetThreadExecutionState
. Hàm này thông báo cho hệ thống rằng ứng dụng đang được sử dụng và cho phép bạn chỉ định các yêu cầu thực hiện của luồng. Việc sử dụng có thể như thế này, nhưng tôi không chắc chắn nếu điều này cũng ảnh hưởng đến sức mạnh đĩa xuống timer:
type
EXECUTION_STATE = DWORD;
const
ES_SYSTEM_REQUIRED = $00000001;
ES_DISPLAY_REQUIRED = $00000002;
ES_USER_PRESENT = $00000004;
ES_AWAYMODE_REQUIRED = $00000040;
ES_CONTINUOUS = $80000000;
function SetThreadExecutionState(esFlags: EXECUTION_STATE): EXECUTION_STATE;
stdcall; external 'kernel32.dll' name 'SetThreadExecutionState';
procedure TForm1.Button1Click(Sender: TObject);
begin
if SetThreadExecutionState(ES_CONTINUOUS or ES_SYSTEM_REQUIRED or
ES_AWAYMODE_REQUIRED) <> 0 then
try
// execute your long running task here
finally
SetThreadExecutionState(ES_CONTINUOUS);
end;
end;
Hoặc cũng có sẵn các thiết lập mới các chức năng PowerCreateRequest
, PowerSetRequest
và PowerClearRequest
được thiết kế cho Windows 7, nhưng tài liệu là khó hiểu và tôi đã không tìm thấy bất kỳ ví dụ về cách sử dụng của họ tại thời điểm này.
Hoặc bạn có thể sửa đổi cài đặt nguồn theo các chức năng PowerWriteACValueIndex
hoặc PowerWriteDCValueIndex
với nhóm phụ số cài đặt nguồn GUID_DISK_SUBGROUP
.
Đặt kế hoạch nguồn khác từ bảng điều khiển theo cách thủ công. Tôi sẽ xóa một chương trình thay đổi kế hoạch điện đằng sau lưng tôi. – kludg
Máy tính có thể tắt đĩa khi đang sử dụng? Điều đó thực sự không đúng với tôi. Bạn có chắc không? –
Tóm lại, các cửa sổ sẽ không tắt nguồn đĩa trong khi ghi đĩa đang hoạt động, nhưng OP không thực hiện đọc tập tin hoặc ghi tập tin thích hợp, và do đó Windows có thể tạm dừng đĩa hoặc toàn bộ máy tính. OP có thể hơi sai nêu rõ vấn đề. –