2013-04-05 29 views
6

Trước khi tôi bắt đầu, đây là mã đầu tiên nhỏ của tôi tôi đã viết trong PowerShell :)PowerShell chuột di chuyển không ngăn cản chế độ nhàn rỗi

[System.Windows.Forms.Cursor]::Position = ` 
    New-Object System.Drawing.Point($pos.X, ($pos.Y - 1)) 
[System.Windows.Forms.Cursor]::Position = ` 
    New-Object System.Drawing.Point($pos.X, $pos.Y) 

Tôi muốn đạt được điều gì?

Vâng, tôi muốn di chuyển con trỏ chuột cứ sau 4 phút để ngăn trình bảo vệ màn hình xuất hiện (mỗi giây trong mã ở trên để thử nghiệm). Mã thực sự di chuyển chuột mỗi khi một điểm ảnh lên và sau đó xuống ngay lập tức. Vấn đề là, trình bảo vệ màn hình (hoặc chế độ chờ của cửa sổ) vẫn xuất hiện.

Bây giờ, tôi đang học PowerShell và tôi có ít kinh nghiệm với kiến ​​trúc Windows.

Có ai thấy lỗi của tôi không? Tôi sẽ đánh giá cao câu trả lời rất nhiều! : D Cảm ơn trước.

+0

Có một sự thay đổi một pixel được tính là đủ hoạt động để ngăn chặn bảo vệ màn hình? – MikeTheLiar

+0

Hmm, đổi nó thành 100 pixel và liên tục không hoạt động – nivoe

+0

Cố gắng không quay lại sau khi di chuyển, để con trỏ di chuyển lên sau mỗi 10 giây. Tôi vẫn xuất hiện nhàn rỗi? – nivoe

Trả lời

5

Giải pháp từ blog Prevent desktop lock or screensaver with PowerShell đang hoạt động đối với tôi. Đây là kịch bản có liên quan, mà chỉ đơn giản gửi một khoảng thời gian duy nhất để vỏ:

param($minutes = 60) 

$myshell = New-Object -com "Wscript.Shell" 

for ($i = 0; $i -lt $minutes; $i++) { 
    Start-Sleep -Seconds 60 
    $myshell.sendkeys(".") 
} 

và một sự thay thế từ các ý kiến, trong đó di chuyển chuột một điểm ảnh duy nhất:

$Pos = [System.Windows.Forms.Cursor]::Position 
[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point((($Pos.X) + 1) , $Pos.Y) 
2

tôi đã có một tình huống tương tự nơi tải xuống cần thiết để duy trì hoạt động qua đêm và yêu cầu một lần nhấn phím làm mới kết nối của tôi. Tôi cũng thấy rằng di chuyển chuột không hoạt động. Tuy nhiên, bằng cách sử dụng notepad và một chức năng phím gửi dường như đã thực hiện các trick. Tôi gửi một không gian thay vì một "." bởi vì nếu có cửa sổ bật lên [có/không], nó sẽ tự động nhấp vào phản hồi mặc định bằng cách sử dụng phím cách. Đây là mã được sử dụng.

param($minutes = 120) 

$myShell = New-Object -com "Wscript.Shell" 

for ($i = 0; $i -lt $minutes; $i++) { 
    Start-Sleep -Seconds 30 
    $myShell.sendkeys(" ") 
} 

Chức năng này sẽ làm việc cho các định 120 phút (2 giờ), nhưng có thể được sửa đổi cho thời gian mong muốn bằng cách tăng hoặc giảm giây của đầu vào, hoặc tăng hoặc giảm giá trị giao của tham số phút .

Chỉ cần chạy tập lệnh bằng PowerShell ISE hoặc PowerShell và mở sổ ghi chú. Một khoảng trống sẽ được nhập vào khoảng thời gian đã chỉ định cho khoảng thời gian mong muốn ($ phút).

Chúc may mắn!

0

Hãy thử điều này: (nguồn: http://just-another-blog.net/programming/powershell-and-the-net-framework/)

Add-Type -AssemblyName System.Windows.Forms 

$position = [System.Windows.Forms.Cursor]::Position 
$position.X++ 
[System.Windows.Forms.Cursor]::Position = $position 

    while(1) { 
    $position = [System.Windows.Forms.Cursor]::Position 
    $position.X++ 
    [System.Windows.Forms.Cursor]::Position = $position 

    $time = Get-Date; 
    $shorterTimeString = $time.ToString("HH:mm:ss"); 

    Write-Host $shorterTimeString "Mouse pointer has been moved 1 pixel to the right" 
    #Set your duration between each mouse move 
    Start-Sleep -Seconds 150 
    } 
Các vấn đề liên quan