Windows の標準の COM では、ファイルを選択するダイアログを使用できません。( Excel がインストールされておれば使えます ) しかし、Shell.Application を使用すれば、フォルダの選択は可能なうえにファイルの一覧をフォルダオブジェクトより取得して利用可能です。
<!DOCTYPE html> <html> <head> <meta content="width=device-width initial-scale=1.0 minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" name="viewport"> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.css"> <link rel="stylesheet" href="https://lightbox.sakura.ne.jp/demo/two-section.css"> <script> // Windows Shaell var objShell = new ActiveXObject("Shell.Application"); $(function(){ $("#action").on("click", function(){ buildTable( ); }); }); // ****************************** // jQuery でテーブル作成 // ****************************** function buildTable( ){ // 1:0固定, 2:タイトル, 3:1はファイルシステムのみ, 4:0はルートがデスクトップ // 4:https://docs.microsoft.com/en-us/windows/win32/api/shldisp/ne-shldisp-shellspecialfolderconstants var objFolder = objShell.BrowseForFolder( 0, "フォルダ選択", 1, 0 ); if ( objFolder == null ) { alert("フォルダの選択がキャンセルされました"); return; } if ( !objFolder.Self.IsFileSystem ) { alert("ファイルシステムではありません"); return; } // TABLE 部分クリア $("#tbl").html(""); var objFolderItems = objFolder.Items(); var nFiles = objFolderItems.Count; var arrData = []; // フォルダとファイルの一覧を配列にセット var nFiles = objFolderItems.Count; for( i = 0; i < nFiles; i++ ) { var objItem = objFolderItems.Item(i) // フォルダの場合 if ( objItem.isFolder ) { arrData.push( " [" + objItem.Name +"]" ); } else { arrData.push( objItem.Name ); } } arrData.sort(); arrData.unshift("-------------------------------------------------------------"); // 選択したフォルダのパス arrData.unshift(objFolder.Self.Path); // TABLE に一覧を作成する for( i = 0; i < nFiles; i++ ) { var tr = $("<tr class='rowdata'></tr>") .appendTo("#tbl"); $("<td></td>") .appendTo(tr) .text(arrData[i]); } } </script> </head> <body> <div id="head"> <input id="action" class="ml-4 btn btn-outline-primary" type="button" value="フォルダ選択"> </div> <div id="extend"> <table class="table"> <tbody id="tbl"> </tbody> </table> </div> </body> </html>
|
【IEの最新記事】
- HTA : JScript : Excel.Application でファイルを開くダイアログを使用する
- IE11 : JScript : Excel.Application で既存の Book を開いてその中のテンプレートシートをコピーして名前を付けて保存する
- IE11 : JScript : Excel.Application で新しい Excel の Book を作成する
- IE11 : new ActiveXObject("ADODB.Connection") で .accdb のテーブル一覧を jQuery で TABLE に作成する
- IE11 + jQuery で、select( リスト)をタブルクリックした時に OPTION 要素の処理を行うコード
- ActiveXObject("WScript.Shell" ) でコマンドプロンプトベースの外部プログラムより情報を取得
- ActiveXObject("CDO.Message") でメール送信
- IE の『互換表示設定』に localhost を入れて忘れててえらい目にあった
- どうも、IE で右クリックからブックマークレットを登録しようとするとエラーになる事があるようです
- IE拡張メニューで取得したテキストをメールで送る(CDO.Message版)
- IE10 for Windows7 を我慢できなくってインストールしたんですが、『それでも Microsoft かよ』と、思わずつぶやきたくなる件について。
- IE拡張メニューで取得したテキストをメールで送る(Basp21版)
- IE8でローカルファイルのオブジェクトを含むHTMLを実行する場合の注意点
- IE7:ローカルコンピュータゾーンのロックダウン
- レジストリエディタのお気に入りとIEのお気に入り
- 【Windows+IE】WEBページを自分のPCの一部として使う