Ngủ máy tính qua tệp bó trong Windows 7


13

Tôi muốn tạo một tệp bó sẽ ngủ máy tính của tôi sau một khoảng thời gian.

Điều gần nhất tôi tìm thấy là đặt nó ở chế độ chờ, nhưng dường như hoạt động khác với nút ngủ trên bàn phím của tôi (khởi động lâu hơn, không đánh thức khi nhấp chuột). Có ý kiến ​​gì không? Nó sẽ dễ dàng hơn trong Python hoặc C #?

Kỹ thuật ít lý tưởng hơn được đề cập ở trên đang gọi điều này trong dấu nhắc cmd:

Rundll32.exe powrprof.dll,SetSuspendState

Chỉ cần thêm một phần đếm ngược vào .bat và thực hiện điều này sau đó.
Apache

trông giống như bản sao của superuser.com/questions/83437/ từ
akira

Ngủ đông là hoàn toàn khác nhau, nhưng vâng đó là giải pháp chính xác tôi đoán.
Apache

Tôi tin rằng điều rundll giống như ngủ đông. Khi ngủ, bạn nhấp chuột và màn hình đăng nhập của bạn sẽ ở đó trong vài giây ... ngủ đông phải kiểm tra lại bios, ổ cứng và chuyển trạng thái đã lưu từ ổ cứng sang ram rồi khởi động windows. Hạn chế duy nhất của giấc ngủ là nếu bạn mất điện và trạng thái đã lưu trong ram bị mất (và những chiếc cũ hơn thực sự để lại nhiều thành phần hơn như PSU và quạt).
Saebin

Câu trả lời:


25

Đơn giản chỉ huy

rundll32.exe powrprof.dll,SetSuspendState

Có hệ thống ngủ đông , nhưng nếu bạn viết này:

rundll32.exe powrprof.dll,SetSuspendState 0,1,0

tắt chế độ ngủ đông bằng lệnh:

powercfg -hibernate off

Bây giờ hệ thống của bạn sẽ ngủ và sẽ thức dậy khi di chuyển chuột nếu được chọn một thiết bị cho nó (cuộn xuống để tìm hiểu làm thế nào).

Batch một bộ đếm thời gian:

timeout /t 1200
rundll32.exe powrprof.dll,SetSuspendState 0,1,0

Trong đó 1200 là giây, có nghĩa là sau 20 phút lô sẽ chạy lệnh ngủ.

Tùy chọn bạn có thể ngăn việc hủy đếm ngược (nếu bạn nhấn bất kỳ phím nào trong cửa sổ lô):

timeout /t 1200 /nobreak
rundll32.exe powrprof.dll,SetSuspendState 0,1,0

Một chút về việc thức dậy với chuột:

Truy cập: Bắt đầu -> Bảng điều khiển -> Chuột.

văn bản thay thế

Trong cửa sổ Thuộc tính chuột , nhấp vào tab Phần cứng và chọn chuột từ danh sách thiết bị. Thông thường, sẽ chỉ có một con chuột được liệt kê ở đây nhưng điều đó sẽ phụ thuộc vào phần cứng bạn đã kết nối với máy tính của bạn. Khi bạn đã chọn chuột từ danh sách, nhấp vào nút Thuộc tính .

văn bản thay thế

Bây giờ trong cửa sổ Thuộc tính cho chuột của bạn, nhấp vào nút Thay đổi Cài đặt trên tab Chung .

văn bản thay thế

Trong cửa sổ mở ra, nhấp vào tab Quản lý nguồn và kiểm tra tùy chọn có tiêu đề Cho phép thiết bị này đánh thức máy tính . Nhấp vào nút OK trên cửa sổ này và nhấp vào nút OK trên cửa sổ Thuộc tính chuột vẫn đang mở. Từ giờ trở đi, bạn có thể đánh thức Windows 7 từ chế độ ngủ bằng cách nhấp vào nút chuột hoặc di chuyển chuột xung quanh.

văn bản thay thế


3
wow, bạn thực sự thích trả lời câu hỏi :)
Omu

2
shutdown /h

sẽ ngủ đông máy tính (không chắc chắn về việc đình chỉ mặc dù).


2

Giải pháp làm việc!
Tôi đã phải sử dụng PsShutdowntiện ích để cho phép ngủ đúng cách (vấn đề chính là SetSuspendStatekhông cho phép bộ hẹn giờ đánh thức máy). Tập tin lô của tôi để ngủ là 1 dòng đơn giản:

PsShutdown -d -t 2

Vui lòng đọc Làm thế nào để tôi giới thiệu phần mềm cho một số mẹo về cách bạn nên giới thiệu phần mềm. Bạn nên cung cấp ít nhất một liên kết, một số thông tin bổ sung về chính phần mềm và cách sử dụng phần mềm để giải quyết vấn đề trong câu hỏi.
DavidPostill

1
Điều này không hoạt động trong máy tính của tôi ...
mrbengi

1

.NET để giải cứu. Giải pháp này đưa máy tính vào trạng thái ngủ mà không cần thay đổi cấu hình PC (tắt chế độ ngủ đông). Chạy lệnh này theo đợt:

powershell.exe -command "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.Application]::SetSuspendState([System.Windows.Forms.PowerState]::Suspend, $false, $false)"

Bạn có thể sử dụng ::Suspendcho giấc ngủ hoặc ::Hibernate(cách mà các câu trả lời khác hoạt động).Tài liệu cho SetSuspendState.

System.Windows.Formskhông gian tên không được tải theo mặc định (nó có trong Powershell ISE), nên trước tiên bạn cần tải lắp ráp.

câu trả lời gốc


0

Bạn có thể thử SetSystemPowerState để tránh phải tắt Hiberanate.

rundll32.exe kernel32.dll, SetSystemPowerState

Lưu ý rằng việc thêm 1,0 hoặc 1 0 hoặc thậm chí thực hiện Rundll32.exe powrprof.dll, SetSuspendState 0 0 1 hoặc Rundll32.exe powrprof.dll, SetSuspendState 0,0,1 mà các đối số (0,0,1) có nghĩa là KHÔNG CÓ.

Powrprof.dll, SetSuspendState không phân tích các đối số kiểu rundll32 và do đó bỏ qua chúng. Đó là lý do tại sao bạn phải vô hiệu hóa ngủ đông.


1
Điều này hữu ích cho Windows XP, không phải Vista trở lên.
Rodney

1
Lưu ý rằng rundll32 bỏ qua các đối số bạn đưa ra (do đó SetSuspendState luôn ngủ đông) vì DLL không được thiết kế để chấp nhận các đối số từ rundll32.
Rodney

-1: Điều này hoàn toàn sai. Nó không hoạt động theo hệ điều hành mong muốn của OP.
nc4pk

rundll32 KHÔNG chuyển các đối số do đó tại sao bạn phải tắt Hibernate để làm cho nó hoạt động. Các đối số mặc định bảo nó luôn ngủ đông, nhưng nếu ngủ đông bị vô hiệu hóa thì API DLL mặc định sẽ ngủ.
Rodney


0

Chỉ cần tạo một tệp bó và chèn các dòng sau:

7200 = 2 hours

@echo off
timeout /t 7200 /nobreak
powercfg -h off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
powercfg -h on
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.