• ベストアンサー

vbscriptでNUMLOCK判定したい

vbscriptでNUMLOCK判定したい お世話になります。 こちら(http://support.microsoft.com/kb/314879/ja)を参考にNUMLOCKキーを操作することは出来たのですが、現在のNUMLOCKの状態を知るにはどうしたらよいのでしょうか? よろしくお願いいたします。 以下vbs記述内容 set WshShell = CreateObject("WScript.Shell") WshShell.SendKeys "{NUMLOCK}"

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

なぜそんなことをする必要があるのでしょうか? その理由を解決できませんかね。 キーボードにチラッと視線を落としてランプを見るだけで済むんですけどね。 または質問文にあるコードをログオン スクリプトで実行するとか、レジストリの設定を変更するって手もある。(Num Lock の設定はユーザー毎の設定) で状態確認ですが、実際のところ VBScript では無理です。 Word の VBA では状態確認ができるようです。 なので Scripting GUI では VBScript から Word を一瞬だけ起動させて確認する方法を紹介しています。 http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/aug06/hey0810.mspx

kogeru_006
質問者

お礼

そしておかげさまで思ったとおりの動きが出来ました! 本当にありがとうございます! --以下記述内容-- DIM NumOnBL Set objWord = CreateObject("Word.Application") NumOnBL= objWord.NumLock objWord.Quit set WshShell = CreateObject("WScript.Shell") IF NumOnBL=FALSE THEN WshShell.SendKeys "{NUMLOCK}"

kogeru_006
質問者

補足

回答ありがとうございます! >なぜそんなことをする必要があるのでしょうか? 自分のパソコンではなく、 パソコンに慣れていない大勢の方が触るものがあるので、 起動時にNumlockが入っていた方が親切かなと思いまして。 >または質問文にあるコードをログオン スクリプトで実行するとか そのパソコンはログoff時の設定を引き継ぐ (numoffしてログオフするとnumoffして起動逆も然り)ので、 無条件にnumlockキーをsendしてもうまくいかず、、、 >レジストリの設定を変更する こちらも試してみたのですが、言うことを聞いてくれず。。。 スタートアップにvbscriptでどうだ?!と思った次第です☆ (ちなみに試した色々はhttp://oshiete.goo.ne.jp/qa/6134978.htmlに掲載しています。  質問内容がvbscriptに移行したので、別に質問させていただきました。)

関連するQ&A

  • VBScript

    下記、プログラムを実行すると、コマンドプロンプトの画面が 消えずに、そのまま残ってしまいます。 どうしたら、画面を消すことができるでしょうか。 お力添えをお願いいたします。 Set WshShell = Wscript.CreateObject("WScript.Shell") Set WshEnv = WshShell.Environment("user") WshEnv("C:\NET\aaa.txt") = "administrator" Wshshell.Run("cmd.exe") WScript.Sleep(500) WshShell.SendKeys("runas /user:administrator " + chr(34) + "xcopy D:\NET\aaa.txt C:\NET\aaa.txt" + chr(34)) WshShell.SendKeys("{Enter}") WScript.Sleep(500) WshShell.AppActivate "C:\WINDOWS\system32\runas.exe" WshShell.SendKeys("XXXXX") WshShell.SendKeys("{Enter}") WScript.Sleep(500)

  • キー操作 (WSH:コピー&ペースト)

    ホームページ上のデータをクリップボードに取り込んで メモ帳に写したいです。 キー操作でのコピー&ペーストがうまくいきません。 どこがいけないのでしょうか(WSHを使ってます)。 set WshShell = WScript.CreateObject("WScript.Shell") WshShell.SendKeys "^A" '「Ctrl」を押しながら「A」を押す WshShell.SendKeys "^C" '「Ctrl」を押しながら「C」を押す WSHShell.Run "notepad.exe" 'メモ帳を開く WshShell.SendKeys "^V" '「Ctrl」を押しながら「V」を押す よろしくお願いします。

  • JP1からvbs(PSExec)が起動できない

    突然失礼します。 以下のサーバーAにあるvbsを、JP1から起動しようとしていますが、うまく起動しないので、もし原因が分かる方がいたら、ご教授願いたいです。 起動しようとしているサーバーAの「test.vbs」は、簡単に言うと、PsExecを利用して、サーバーBの「hoge.bat」を実行する内容です。 ***test.vbs*** Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "PsExec.exe サーバーBIPアドレス -u 実行ユーザ -p 実行ユーザーパスワード cmd" WshShell.AppActivate "cmd " WScript.Sleep 3000 WshShell.SendKeys "cd C:\" WshShell.SendKeys "{enter}" WshShell.SendKeys "hoge.bat" WshShell.SendKeys "{enter}" WScript.Sleep 10000 WshShell.AppActivate "cmd" WshShell.SendKeys "exit" WshShell.SendKeys "{enter}" ************************ 上記バッチを手動で実行するとうまくいくのですが、 JP1で起動しようとすると、うまくいきません。 そもそもPsExecが実行出来ていないかも。。。。 宜しくお願いします。

  • URLが開いた後に処理したい

    VBSでIEを起動しURLが開いた後に処理をするにはどうすればいいですか? たとえば、 set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run """C:\Program Files\Internet Explorer\IEXPLORE.EXE"""&" www.google.co.jp/" 'グーグルが開いた後に処理 WshShell.SendKeys "検索ワード~" これで開いたタイトルは「Google - Microsoft Internet Explorer」になります。 今まではSleep関数を使っていましたが、 IEの起動時間はバラバラなので早すぎたり遅すぎたりしてしまいます。 よろしくお願いします。

  • Windows 7 でのWSH の挙動

    お世話になります。 msdnにある「電卓をアクティブにするサンプルを Vistaで実行すると、電卓がアクティブになり、 計算結果を吐き出しますが、 Windows7(Pro,SP1)で実行すると 最前面に電卓が出るものの アクティブになっていない上に、 複数の電卓がどんどん立ち上がってきます。 Vistaと7で、プロセス(?)の管理が 変わっているのだと思います。 7でも電卓をアクティブにするには、 どうすればいいのでしょうか? 以下コードです。 ================================================ set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "calc" WScript.Sleep 100 WshShell.AppActivate "Calculator" WScript.Sleep 100 WshShell.SendKeys "1{+}" WScript.Sleep 500 WshShell.SendKeys "2" WScript.Sleep 500 WshShell.SendKeys "~" WScript.Sleep 500 WshShell.SendKeys "*3" WScript.Sleep 500 WshShell.SendKeys "~" WScript.Sleep 2500 ================================================

  • VBSのSendKeysでクリックができない

    音声認識アプリケーションからvbsを実行できるのですが、ここで一度だけマウスクリックしたい状況が出てきて困っています。 Dim WSHShell As Object Set WSHShell = CreateObject("Wscript.Shell") WSHShell.AppActivate "操作したいアプリケーション名" WSHShell.SendKeys "{TAB}" 'OK WSHShell.SendKeys "{ENTER}" 'OK WSHShell.SendKeys "{CLICK LEFT, 10, 10}" 'NG TABキーやENTERキーは動作するのですが、3番目のマウスクリックがExceptionといわれエラーになってしまいます。Sendkeysでマウスクリックを送信するにはどうしたらよいのでしょうか?ネットで調べたリファレンスだと上記のような書き方で良さそうなのですが・・・ 音声認識アプリケーションはドラゴンスピーチ11Jで、OSはWin 7 ProとWin 8、どちらも64ビットです。

  • VBSでブラウザ上のテキストボックスに文字列を打ち込み、ボタンを押す方法

    VBSでブラウザ上のテキストボックスに文字列を打ち込み、ボタンを押す方法を教えてください。 現在、下のような方法で行っているのですが応用が利かないので改善したいと思っています。 Set IE = CreateObject("InternetExplorer.Application") Set WshShell = CreateObject("WScript.Shell") IE.Visible = True IE.Navigate("https://サイトのURL") Do Until IE.Busy = False WScript.Sleep 1000 WshShell.SendKeys "y" Loop '(セキュリティの警告が出るため) WScript.Sleep 100 WshShell.SendKeys "{TAB}" WScript.Sleep 100 WshShell.SendKeys "loginid" WScript.Sleep 100 WshShell.SendKeys "{TAB}" WScript.Sleep 100 WshShell.SendKeys "password" WScript.Sleep 100 WshShell.SendKeys "{TAB}" WshShell.SendKeys "{ENTER}" 操作したいページのソースの一部を抜粋すると下記のようになっています。 テキストボックス <INPUT type="text" name="loginId" class="Necessary" size="20" maxlength="5" value="" tabindex="20"> ボタン <INPUT class="button10" type="button" name="sentaku" value="認証" onClick="javascript:execute・・・・略 うまく操作できる方法を教えてください。 よろしくお願いします。

  • VBS(WSH)で開いたIEのウィンドウがアクティブにならない

    VBSでタイトルバーのみのIEウィンドウを開き、 SendKeyでtestと入力するスクリプトを作成しています。 ですが、開いたIEのウィンドウがアクティブにならず、 SendKeyがIEに送信されません。 VBSについては全くの初心者でして、ウィンドウがアクティブにならないのが 環境の問題なのか、プログラムの問題なのか判断できません。 どなたかご教授をお願いします。 IEのバージョンは8、OSはWinXPです。 以下、ソースです。 -------------------------------------------------- 'タイトルバーのみのIEを起動する Set WshShell = WScript.CreateObject("WScript.Shell") Set objIE = WScript.CreateObject("InternetExplorer.Application") objIE.Navigate("http://www.google.co.jp/") objIE.MenuBar = False objIE.StatusBar = False objIE.ToolBar = False objIE.AddressBar = False objIE.Visible = True '表示待ちループ Do While objIE.Busy WScript.Sleep 100 Loop '[test]で検索 WshShell.SendKeys("test") WScript.Sleep(100) WshShell.SendKeys("{TAB}") WScript.Sleep(100) WshShell.SendKeys("{ENTER}") --------------------------------------------------

  • エクセル NUMLOCKキーの常時オンについて

    表題の質問をさせていただきます。 仕事場に入っているシステムがキーボード上部のボタンに様々な機能を割り当てていまして、システム独自の機能を有するように設計されています。  割り当てられているのは↓です。   デスクトップ用キーボードで、ファンクションキーやテンキー上部のキー(Num / * -) このシステムを利用しながらエクセルも同じPCで稼動させています。 ファンクションキーはさほど困らないのですが、NumLockキーをシステムで利用するので頻繁にONになったりOFFになったりします。 システムからエクセルに変更をした際にNumLockがオフになっていることが確率的に半数あり、その際はテンキー入力をすると あらぬ位置に入力セルが飛んでいってしまい困っています。 あらぬ位置に飛んでいってしまったときはマクロ登録してあるボタンで所定の位置に戻ってくるように設定しています。  ウインドウ枠の固定で画面を上下に分割していて 上部にマクロボタンを設置してあります。 いろいろと調べてWorkbookやWorksheetのActivateイベントに↓を記述しました。 Set WshShell = CreateObject("WScript.Shell") WshShell.SendKeys "{NUMLOCK}" しかし、システムから切り替わった場合には動作しませんでしたし、エクセル内での動きとしてもシートチェンジ毎にONとOFFになってしまい、いい動きにはなりませんでした。 システムから切り替わったタイミングをと思い、SelectionChangeにも記述しましたが、当然ながらクリックするたびにON・OFFになってしまい…。 どうにか、エクセルがアクティブになっている時は NumLockを常時ONにする方法はないでしょうか。 お知恵を拝借したく投稿しました。 エクセル2003です。よろしくお願いいたします。

  • WSHを使いTELNETで%USEPROFILE%\デスクトップにファイルを複写したい

    WSHをはじめたばかりです。TELNETで接続した現在の相手のデスクトップにファイルを複写させたいと考えています。 DOSのように指定したのですがカナ文字や%がうまく渡されていないようなのですがどのように設定すればよいか教えてください。 下記のように作成しています。 よろしくお願いします。 set WshShell = WScript.CreateObject("WScript.Shell") WshShell.AppActivate "確認" WScript.Sleep 1000 adr = InputBox("端末IPアドレスを入力してください。", 1) adr = "telnet " & adr & "~" rem telnet ホスト名 WshShell.SendKeys adr WScript.Sleep 2000 rem ユーザー名 WshShell.SendKeys "administrator~" WScript.Sleep 1000 rem パスワード WshShell.SendKeys "administrator~" WScript.Sleep 1000 rem コマンド WshShell.SendKeys "cd %USEPROFILE%\デスクトップ~" WScript.Sleep 3000 rem あとCOPYによる複写コマンドの記述

専門家に質問してみよう