dポイントプレゼントキャンペーン実施中!

会社のパソコンですが、スクリーンセーバーが設定されていて、一定時間がたつと自動的に起動します。
この設定は変更ができないようにされています。
今般、そのうちの一台に社内での案内用のデータを記載したエクセルのファイルを常時表示させようと思います。
そうなるとスクリーンセーバーがじゃまになります。
設定を解除できるとよいのですが、社内ルールで設定は変えられません。
しかたなく、人間が手でキーボード等を打ち込むかわりにマクロで画面を動かせばスクリーンセーバーは起動しないのではないかと考え、下記のコードを書いてみました。

Sub kidou()
Call jikkou01
End Sub

Sub jikkou01()
Application.SendKeys "{PGDN}"
Application.OnTime Now + TimeValue("00:00:10"), "jikkou02"
End Sub

Sub jikkou02()
Application.SendKeys "{PGUP}"
Application.OnTime Now + TimeValue("00:00:10"), "jikkou01"
End Sub

コードはちゃんと動くのですが、スクリーンセーバーはやはり立ち上がってしまいます。
なにかよい方法はないでしょうか?

A 回答 (4件)

>たとえばどんなことでしょう?


私はSendKeysを一日打ちっぱなしの未経験ですので分かりません。
ただなんとなく、どこかで引っかかるかな?と思っただけです。
そちらでご自身がお使いのPCで一日何もなく過ごせれば問題ないのでは?
検証はそちらで行ってください。

シフトキーの場合はユーザーが矢印キーやマウスで操作していた場合に
一瞬画面がちらつく程度でしょうけど、選択状態になるかもしれません。

注意点は・・PCの盗難とか?
ネットワークにつなげていて、社内の共有フォルダが丸見えとか。
    • good
    • 2
この回答へのお礼

何度もありがとうございます。
毎秒じゃなくともだいじょうぶじゃないかと思い
Set osh = WScript.CreateObject("WScript.Shell")
Do
osh.Sendkeys ("{F16}")
Wscript.Sleep 100000
Loop
としてみました。
さっそく、ノートPCをネットワークから切り離し、今朝から実行しています。
それから4時間たってますが、いまのところ何の問題もおきていません。

お礼日時:2012/05/24 12:56

むむっシンクライアントですか。


128%門外漢なので降参です。

単なる想像ですが、もしかしたら
キーボードからの信号は受け付けても
プログラムからのキーストロークはシンクライアントの『親』が破棄
しているのかもしれません。(根拠は全くありません)
やはりシステムの管理者か
構築した業者さんに相談すべき内容のような気もします。
(門外漢の独り言ですスルーしてください)
    • good
    • 1
この回答へのお礼

> やはりシステムの管理者か

相談してますが、規則の一点張りで話になりません。

> キーボードからの信号は受け付けてもプログラムからのキーストロークはシンクライアントの『親』が破棄

ノートPCは同じネットワークに繋いでますが、シンクライアント端末ではありません。
その2台で違う結果なのですから、たぶんそうなんでしょうね。

> ただ、来訪者がPCを操作していて『何かおかしい?』と感づく人もいるかもしれません。

毎秒、存在しないF16をたたいているからですか?
たとえばどんなことでしょう?
とりあえずはノートPCで代用していきますので注意すべき点を教えていただけるとありがたいです。
また、F16の代わりに
sendkeys ("+") にしてシフトキーにしたらどうなりますか?

何度もすみません。

お礼日時:2012/05/23 11:39

受付にパソコンが有って、来訪者はそれを操作して


内線番号や場所を確認する・・というイメージだとして。

超安直な案ですけど・・・・スクリーンセーバの設定で
3Dテキストか伝言板で『マウスを動かしてください』 じゃダメですよね?
復帰時にパスワードが要求されるとか。。

もう少しまともな案
OSやそのPCの設定者の権限によって回答も色々あるかもしれませんし
そちらで効果あるか不明ですが、下記を メモ帳などで scrKill.vbs
ファイル名は適当でかまいませんが拡張子はvbsにしてください。

set osh = WScript.CreateObject("WScript.Shell")
do
osh.sendkeys ("{F16}")
wscript.sleep 1000
loop

このファイルをダブルクリックで起動すると見た目は変化有りませんが
タスクマネージャのプロセスタブにwscript.exe があるハズです。
終了する場合はこのタスクマネージャから右クリックで終了させてください。
いけるかも?と思ったらスタートアップにでも登録してください。
何のキーストロークを送るかはそちらでも探してください。
ページアップダウンはいただけないかと思います。
来訪者が画面を見ているときに忙しそうです。
またF16 はキーボードには無いかと思いますが機能します。
ただ、来訪者がPCを操作していて『何かおかしい?』と感づく人もいるかもしれません。

仮に『これで決まり』と考えられてもシステムの管理者には一言断っておいた方が良さそうです。
『却下』になるかもしれませんが、その際は素直に『妙案はありませんか。お願い』で。
セキュリティのためにはネットワークから物理的に切り離して、
そのためだけのPCにしておいた方が安全でしょう。CDドライブもUSBメモリもFDDも使用不可。
    • good
    • 1
この回答へのお礼

ありがとうございました。
やってみました。
Windows2000 Excel2000(ノートPC)では見事成功しました。
でも、残念ながらWindows7 Excel2010はスクリーンセーバーというか、ログインを促す画面ががたちあがってしまいました。
(Windows7 Excel2010はシンクライアント端末なので、スクリーンセーバーではないのかも知れません。)

使いたかったのはWindows7 Excel2010のデスクトップ機だったので残念です。

お礼日時:2012/05/22 18:08

当方の環境(WindowsXP+Excel2010)では正常に動作しました。


環境によるのでしょうかね。

それにしても、10秒ごとのPageUP、PageDownは見ていて疲れます。
Shift「SendKeys ("+")」の方が良いのでは?
UpとDownを交互に繰り返す必要もありませんし……。

Sub Sample()
  SendKeys ("+")
  mytime = Now + TimeValue("00:00:10")
  Application.OnTime mytime, "Sample"
End Sub
    • good
    • 0
この回答へのお礼

さっそくありがとうございました。
やってみました。
でも、残念ながらスクリーンセーバが無情にもたちあがってしまいました。
Windows7 Excel2010
Windows2000 Excel2000
両方でためしましたがおなじでした。

お礼日時:2012/05/22 16:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています