28

始める前に、これが私が PowerShell で書いた最初の小さなコードです:)

[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)

何を達成したいですか?

さて、スクリーンセーバーが表示されないように、マウスカーソルを4分ごとに移動したいと思います(テスト用の上記のコードでは1秒ごと)。このコードは、マウスを 1 ピクセルずつ上下に動かします。問題は、スクリーンセーバー (または Windows のアイドル モード) がまだ表示されていることです。

現在、私は PowerShell を学んでおり、Windows アーキテクチャの経験はほとんどありません。

誰かが私の間違いを見ますか?回答をいただければ幸いです。:D よろしくお願いします。

4

9 に答える 9

37

ブログの解決策PowerShellを使用したデスクトップ ロックまたはスクリーンセーバーの防止は、私にとっては有効です。関連するスクリプトを次に示します。これは、単一のピリオドをシェルに送信するだけです。

param($minutes = 60)

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

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

マウスを1ピクセル移動するコメントからの代替:

$Pos = [System.Windows.Forms.Cursor]::Position
[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point((($Pos.X) + 1) , $Pos.Y)
$Pos = [System.Windows.Forms.Cursor]::Position
[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point((($Pos.X) - 1) , $Pos.Y)
于 2013-04-06T05:08:09.737 に答える
4

これにもアナログな解決策があります。「タイムアウト ブロッカー」という Android アプリがあり、一定間隔で振動し、マウスをその上に置きます。https://play.google.com/store/apps/details?id=com.isomerprogramming.application.timeoutblocker&hl=en

于 2014-06-06T21:39:27.080 に答える
2

ダウンロードを一晩中アクティブにしておく必要があり、接続を更新するためにキーを押す必要があるという同様の状況がありました. また、マウスの移動が機能しないこともわかりました。ただし、メモ帳と送信キー機能を使用すると、うまくいったようです。「.」の代わりにスペースを送信します。[はい/いいえ] ポップアップがある場合、スペースバーを使用してデフォルトの応答が自動的にクリックされるためです。使用したコードはこちら。

param($minutes = 120)

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

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

この関数は、指定された 120 分 (2 時間) の間機能しますが、入力の秒数を増減するか、分パラメーターの割り当て値を増減することで、必要なタイミングに変更できます。

PowerShell ISE または PowerShell でスクリプトを実行し、メモ帳を開くだけです。指定した間隔で任意の時間 ($minutes) だけスペースが入力されます。

幸運を!

于 2013-10-23T16:26:17.460 に答える
2

これを試してください: (ソース: 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  
    }  
于 2015-12-02T18:08:26.470 に答える