IE11 での実行には設定が必要です => HTA(HTMLアプリケーション) のコードを html として IE11 でデバッグする方法※ newObject 関数は、hta.js で定義しています。 ▼ BrowseForFolder メソッドvar objFolder = objShell.BrowseForFolder( 0, "フォルダ選択", 1, 0 );フォルダ参照 第1引数は、本来はウインドウハンドルを渡すものですが、こでは 0 を設定します。 第2引数は、タイトルの下に表示される文字列です。 第3引数は、BROWSEINFO structure の ulFlags の内容ですが実際はここに書いてある通りになはならないので試してみる他ありません。ここでは、1 を渡しており、意味は( Only return file system directories. If the user selects folders that are not part of the file system, the OK button is grayed ) です。=> ファイルシステム以外だと OK ボタンが 灰色になって使用できません 第4引数は、ShellSpecialFolderConstants のフォルダを渡して、そのフォルダを一番上のフォルダにします。=> ここでは、0 なのでデスクトップです。 一覧作成 フォルダオブジェクトを取得して、Items メソッドで下位のファイルとフォルダのコレクション( FolderItems オブジェクト )を取得します。 さらに、FolderItems オブジェクト の Item メソッドで FolderItem オブジェクトを取得します。 IsFolder プロパティと Name プロパティを使用して一覧を作成します Name プロパティは、配列にセットして sort メソッドでソートしてから、区切りとルートフォルダのパスをセットしてテーブル要素に表示します Self プロパティは 仕様上は Folder2 オブジェクトとなります ▼ HTA(HTML アプリケーション) : pcname-from-stdout.hta ▼ IE11 : pcname-from-stdout.html
<!DOCTYPE html> <html> <head> <meta http-equiv="x-ua-compatible" content="ie=edge" /> <meta http-equiv="Content-type" content="text/html; charset=utf-8"><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/css/bootstrap.css" /> <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> <script src="https://winofsql.jp/hta.js"></script> <script> // ウインドウの位置とサイズ centerWindow( 1100, 600 ); // Windows Shaell var objShell = newObject("Shell.Application"); $(function(){ // *************************** // ボタン表示位置微調整 // *************************** $( ".btn" ).css({ "margin-top": "-4px" }); // *************************** // フォルダの選択後 // フォルダ内の一覧 // *************************** $("#act1").on("click", function(){ // 1:0固定, 2:タイトル, 3:ファイルシステムのみ, 4:ルートがデスクトップ var objFolder = objShell.BrowseForFolder( 0, "フォルダ選択", 1, 0 ); if ( objFolder == null ) { alert("フォルダの選択がキャンセルされました"); return; } if ( !objFolder.Self.IsFileSystem ) { alert("ファイルシステムではありません"); return; } var objFolderItems = objFolder.Items(); 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); loadTable( arrData ); }); }); </script> <style> html,body { height: 100%; } body { margin: 0; } /* ブロックを左右に表示 */ .ttl { display: inline-block; width: 120px; vertical-align: top; } .entry { display: inline-block; } .line { margin-bottom: 0; } #head { padding: 16px; } /* IFRAMEコントロール用 */ #head { padding: 16px; width: 100%; height: 120px; background-color: #e0e0e0; } #extend { padding: 4px 16px; display: block; margin-left: auto; margin-right: auto; width: calc( 100% - 3px ); height: calc( 100% - 120px - 2px ); border: solid 2px #c0c0c0; overflow: scroll; } .row_data td { cursor: default!important; } </style> </head> <body> <div id="head"> <p class="ttl"> 処理 </p> <p class="entry"> <input id="act1" class="ml-4 btn btn-outline-primary" type="button" value="フォルダ選択(Shell.Application)"> </p> <p class="line"></p> <h4 class="text-danger"></h4> </div> <div id="extend"> <table class="table table-hover"> <tbody id="tbl"> </tbody> </table> <br> </div> </body> </html>
hta.js
|
【HTA ( HTMLアプリケーション )の最新記事】
- HTA / ADO / Jscript : Access( .accdb .mdb ) の読み込みと表示
- HTML Application : JavaScript で新しい Excel の Book を作成する
- HTML Application : JavaScript で Windows のいろいろなフォルダを開く
- HTA (または IE11) で hostname を実行して標準出力からPC名の取得
- HTA : 『x-frame-options: SAMEORIGIN』の設定されていないページの情報を IFRAME 内に表示して jQuery で取り出す / iframe内 参照と .clone(..
- HTA (HTMLアプリケーション) で JavaScript と VBScript を混在させる手法 / GetObject を VBScript 側で使用する
- HTA + Basp21 + jQuery + twitter-bootstrap(4.1.1) でメール受信ツール
- HTA + Basp21 + jQuery + twitter-bootstrap(4.1.1) でメール送信ツール