• ベストアンサー

WSHでスクロールの制御をしたいと考えています。

WSHでスクロールの制御をしたいと考えています。 いつも開いているフォルダがあるのですが、そのフォルダで利用するものは一番下の方にあるため、フォルダを開いてフォルダの一番下までスクロールするという動作を自動化したいと考えています。 取り敢えず、フォルダを開くところまでは、 var objWShell = new ActiveXObject("WScript.Shell") objWShell.Run("H:\\") として、出来るようになりました。 後は、End keyのような動作かスクロールさせる動作をさせたいのですが検索しても見つかりません。 どなたか宜しくお願いします。

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

  • ベストアンサー
  • 0909union
  • ベストアンサー率39% (325/818)
回答No.2

>WSHってWindowsしかないものと思ってました ちょこっとすれ違いが! No1の回答者は、エクスプローラーでソートをデフォルトで設定しておけば、質問内容の事は ないよ。 と言っています。わざわざスクリプトで組むレベルではありません。と言う事です。それでOSを聞いています。WSHの動作環境を指していません。質問者が誤解するのも無理はなく、回答者が先に一言追加すれば済んだ事です。 >そのフォルダには、順次ファイルが最下部に追加されていくため 「順次ファイル」とは何の事でしょうか? 意味不明な呼び方ですね? それはそのように設定されているためです。デフォルトは追加されたファイルは表示上、最後に追加されてます。 そのフォルダー(ウインドウ)がアクティブな時に F5 キーを押せば設定されたソートでリストされます。 XPだと、エクスプローラー(マイコンピューターでもいい)一回「表示」メニューの「詳細」を選択してソートバーを出します。それで「更新日時」をクリックして「更新日時」をキーとした降順ソートにします。Vistaでもあまりやり方はかわりませんが、Vista移行だと自動種類機能により、拡張子で、ソートバーの項目が変わってきます。 この点からもOSが何であるか重要ですね。 なおこれを達成するには、エクスプローラーの「ツール」メニューの「フォルダーオプション」の「各フォルダーの表示設定を保存にする」が有効になっていないとだめです。これで、 >フォルダを開くと同時に最下部がでていると便利なんです。 が、達成されます。 あと、WSHのスクリプトですが、これもOSが何であるか重要です。他のOSと言う事でなくバージョンが重要です(Windows2000, XP, Vistaなど)。 >スクロールさせる動作をさせたいのですが これは「WScript.Shell」のオブジェクトにはそんな機能ありません。出来るとしたら「Shell.Application」です。または「classid="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"」です。これらはシェルと言って、WindowsのGUIではエクスプローラーを指します。後述の物は、フォルダーのプロパティで表示をカスタマイズすると、実はOS自信も使っています。下記のURLがリファレンスサイトです。 http://msdn.microsoft.com/en-us/library/bb773177(v=VS.85).aspx http://msdn.microsoft.com/en-us/library/bb773938(v=VS.85).aspx 可能性のあるやり方として、下記のURLのサンプルにあるようにWebコントロールとしてフォルダーを表示させると、スクロールのコントロールも可能です。サンプルを .hta ファイルとして保存してください。これ以外とだと、C++, C#, VBなどでコントロールするしかありません。 http://msdn.microsoft.com/en-us/library/bb774043(v=VS.85).aspx 他には下記のように、右クリックメニューでソートをさせるやり方です。フォルダー内で右クリックで、出てくる項目をスクリプトレベルで行う方法です。 http://msdn.microsoft.com/en-us/library/bb774172(v=VS.85).aspx これらは"shell.application"でネット検索すれば沢山サンプルが見つかります。

glarelance
質問者

補足

>「順次ファイル」とは何の事でしょうか? 意味不明な呼び方ですね? 「順次ファイルが最下部に追加されていくため、」というのは、「順次、ファイルが最下部に追加されていくため、」 順次:順々に、次々に、 という意味です。 「順次ファイル」というファイルがあるわけではないです。 >そのフォルダー(ウインドウ)がアクティブな時に F5 キーを押せば設定されたソートでリストされます。 そのソート操作が面倒なため、最初から、新しいファイルが追加される最下部に移動しておきたいと考えていたのです。 >「WScript.Shell」のオブジェクトにはそんな機能ありません。出来るとしたら「Shell.Application」です。 Shell.Applicationとshell.Shell_Applicationに関して、ScrollBarを操作できるオプションはないかとか、一番下のitemを選択したらスクロールも一番下に行くんじゃないかと思って、アイテムを選択するコマンドがないかとか思って色々検索したりしてみたんですが良い方法が見つかりませんでした。 >可能性のあるやり方として、下記のURLのサンプルにあるようにWebコントロールとしてフォルダーを表示させると、スクロールのコントロールも可能です。 これは、良い線行ったんですが、ウェブコントロールとしてフォルダを操作する場合、フォルダの機能全てを自分で作らないとまともに使えないようなので、残念ながらこれは断念しました。 >右クリックメニューでソート ソートだけならこういう方法もあるのでしょうが今回の方向性とは違うので利用しませんでした。 色々調べたところ、UWSCというソフトでスクリプトを構成できるようなので、こちらでスクリプトを構成してやることにしました。 以下のように、RecordFolder.UWSというファイルを作成して、このファイルをUWSC.exeに関連付けしてやると、ダブルクリックするだけで、フォルダの一番下へ行けるようになりました。 ////RecordFolder.UWS//// Exec("explorer.exe H:\"); folderRec=GETID("Record (H:)"); Ifb folderRec>=0 then CTRLWIN(folderRec,ACTIVATE); KBD(VK_END,CLICK); endif 色々情報有り難うございました。

その他の回答 (1)

noname#116115
noname#116115
回答No.1

OSが何かわかりませんが、更新日時でソートしてはいかがでしょうか。 もしくは、ショートカットを作るなどOS標準の機能で対処できるような気がします。

glarelance
質問者

補足

すみません、WSHってWindowsしかないものと思ってました^^; 使用しているOSはXPです。 そのフォルダには、順次ファイルが最下部に追加されていくため、下の方にあるものを逆順にソートしておいても、新しいのが追加されたらまたソートし直さなければいけなくなるのでフォルダを開くと同時に最下部がでていると便利なんです。

関連するQ&A

  • WSHでシャットダウン

    WSH(JScript)でシャットダウンする方法を教えてください。 OSは2000とXPです。 XPだけなら以下の方法で出来るようですが、 2000で実行するとエラーになってしまいます。 var ws = new ActiveXObject("WScript.Shell"); ws.Run("shutdown -s -f");

  • WSH オブジェクト作成時の違い

    JScriptです。 var obj = WScript.CreateObject("WScript.Shell"); と var obj = new ActiveXObject("WScript.Shell"); 等で振る舞いが変わってくる事はあるでしょうか? またどちらを使うべきでしょうか?

  • あるページを開いた際、常にそのページの一番下まで改ページする。

    あるページを開いた際、常にそのページの一番下まで改ページする。 お世話になっております。 <script language="JavaScript"> <!-- var wsh = new ActiveXObject("WScript.Shell"); wsh.SendKeys("{END}"); wsh=null; // --> </script> のような感じで、 あるページを開いた際に、常にそのページの最下部を表示させたいのですが、 うまくいきません。 どうかご教授ください。よろしくお願いします。  

  • HTMLにWSHを組み込む

    HTMLにWSHのコードを書く事は可能ですか? たとえば、ページ開くとNotePad.EXEが起動するようにしたいのですが 以下のような書き方をすると WScriptが宣言されていません。 とエラーになります。 <HTML> <HEAD> <TITLE>起動のテスト</TITLE> </HEAD> <meta http-equiv="Content-Script-Type" content="text/JavaScript"> <BODY> <SCRIPT LANGUAGE="JavaScript"> var title = "メモ帳"; var wsh = WScript.CreateObject("WScript.Shell"); wsh.Run( "NotePad.EXE" ); </SCRIPT> </BODY> </HTML> いい案がある方教えてください。

    • ベストアンサー
    • HTML
  • WSH動作しない!!(WScript.SleepとSendKeys?)

    WSHが動作しなくて困っています。 動作するコードとしないコードは次のとおりです。 いずれも@ITに掲載されているサンプルコードをそのままです。 動作しないコードについても,notepadの起動まではできます。 どうやら,sleepとsendkeysが動いてくれないようです。 <正常に動作するコード> Set objShell = WScript.CreateObject("WScript.Shell") WScript.Echo "メモ帳を起動します。" objShell.Run "notepad.exe" http://www.atmarkit.co.jp/fwin2k/operation/wsh03/wsh03_02.html <動作しないコード> Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run "notepad.exe" WScript.Sleep 1000 objShell.SendKeys "hello" http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_04.html ■動作環境 Win XP Pro IE 6.0 ちなみに,WSHファイルに対する実行権限はあります(フルコントロールです)。 以上なのですが,何か点検するべき事項などありましたらご教示ください。

  • javascriptでのローカルパスの指定の仕方

    javascript(wsh)のローカルパスの記述で質問です いままでファイルを実行する場合に、こんな感じで記述してました。 var WSHShell = new ActiveXObject("WScript.Shell"); WshShell.run("C:\\wsh\\act\\kyoten1.js"); のように実行ファイルを直接指定していました。 今後、ファイルのフルパス名を取得して代入したいのです fullpath = WScript.ScriptFullName; WshShell.run(fullpath); → うまくいきません・・・ どのようにローカルのパス名を記述すればよいのでしょうか? 大変恐縮なのですが、お分かりの方ご教授いただけると幸いです。

  • [WSH] ファイルのコピーができない

    こんにちは。 次のようなスクリプトでFTPフォルダにファイルをコピーしようとしたのですが、カレントフォルダにファイルがコピーされてしまうようです。 どうすれば、FTPフォルダにファイルをコピーできるのでしょうか? var objShell = WScript.CreateObject("Shell.Application"); var objFolder = objShell.NameSpace("ftp://user:password@sitename/directory/"); objFolder.CopyHere("C:\\WINNT\\win.ini"); WScript.Sleep(6000); ※下記のページを参考にさせていただき作成しました。http://homepage3.nifty.com/aya_js/wsh/wsh25.htm

  • WSHでファイルを読み込まない。。。

    WSHで2個以上のtxtファイルの中身を連結して1つのファイルにして 掃き出すというプログラムを作りました。 いったんは正常に動作をしたのですが、最近PCの乗り換えを行い、 それ以降まったく動作しなくなりました。。。 仕事で使うプログラムの一部なので困っています。 どなたかご教授ください!! OSはPCの乗り換えをする前も後もXPのSP2です。 var objArgs = WScript.Arguments; var xmldc = new ActiveXObject("Microsoft.XMLDOM"); xmldc.async = false; //読み込んだファイルの数が2個以上か数える。 if (objArgs.Count() < 2) {//1個の場合・・・ WScript.Echo("txtファイルを2つ以上選択してください"); } else { //2個以上のときの処理 } 上記のプログラムで、2個以上のファイルをドラッグアンドドロップ で読み込ませようとしても必ず、 "txtファイルを2つ以上選択してください" と表示されます。 なぜでしょう??

  • WSHで他のバッチを呼びその終了を待つ方法

    WSHでプログラミングをしています。 WSHを使う理由はWin上から簡単にメールを送信できるのでとりあえず選択しました。 で、WSHのバッチから、普通のDOSコマンドで記述したバッチを呼んで、そのバッチの結果出力されたログファイルをWSHのバッチでメールに添付して送信したいなどと思っています。 今は var ws = WScript.CreateObject("Wscript.Shell"); ws.run("tmp.bat"); こんな感じで「tmp.bat」という名のDOSコマンドのバッチを呼び出しているのですが、このコマンドは命令発行したらその命令が終了するのを待たず次の命令に進んでしまうようです。 なので、ログ作成とメール送信のタイミングが合わない状態です。 処理待ちする方法を教えてください。よろしくお願いします。

  • WshShell.Runでサーバにアクセスできません。

    拡張子が「js」のファイルでWshShell.Runでサーバにアクセスできません。 var WshShell= new ActiveXObject("WScript.Shell"); WshShell.Run("runas /user:ドメイン名\\administrator \\サーバ名\Adobe Reader9をサイレントインストールする.bat"); while(!WshShell.AppActivate("runas.exe")){ WScript.Sleep(100); } ・ ・ ・ どなたかご教授お願いします。

専門家に質問してみよう