2012/02/22 (水)
COMポート一覧取得
前に作ったCOMポート一覧取得が、com0comの仮想シリアルポートに無反応なので修正した。
- 内蔵シリアルポート
- Win32_SerialPort、Win32_PnPEntity の両方で見れる
- USB増設シリアルポート
- Win32_PnPEntity にしかいない
- 仮想シリアルポート
- Win32_SerialPort でしかデバイス名を知る手段が無い
com0comで増設した仮想シリアルポートは、デフォルトではCOM*という名前になっていない(CNCA1とかいう名前になる)ので、これも一覧取得できるようにした。
comlist.hta
拡張子 hta で保存する。ダブルクリックすると起動する。 超便利。
<HTML><HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=shift_jis"> <HTA: Application ApplicationName="COMLIST-HTA" > <STYLE> * {margin:1;padding:0;border:0 solid black;} </STYLE> <TITLE>COMポート一覧</TITLE> <SCRIPT LANGUAGE="JSCRIPT"> window.resizeTo(312, 202); // 連想配列をキーでソートして返す関数 function hashsort(obj) { // 連想配列をキーとバリューに分解して、連想配列の配列にする var arr = new Array(); for( var k in obj ){ arr.push( {key:k, value:obj[k]} ); } // キーでソート arr = arr.sort( function(a,b){return a.key > b.key ? 1 : -1;} ); // 元の形の連想配列に戻す var ret = new Object(); for( var i=0; i<arr.length; i++ ){ ret[ arr[i].key ] = arr[i].value; } return ret; } // 内蔵シリアルポートの一覧を連想配列で返す関数 function getcomlist() { var slist = new Object(); // WMI準備 var sw = new ActiveXObject("WbemScripting.SWbemLocator"); var cs = sw.ConnectServer(); // 内蔵シリアルポート一覧取得 for( var e = new Enumerator(cs.ExecQuery("Select * from Win32_SerialPort")); !e.atEnd(); e.moveNext() ){ var a = e.item(); slist[a.DeviceID] = a.Name; } // PnPシリアルポート一覧取得 for( var e = new Enumerator(cs.ExecQuery("Select * from Win32_PnPEntity")); !e.atEnd(); e.moveNext() ){ var a = e.item(); if( a.Name.match(/\((COM\d+)\)/) ) slist[RegExp.$1] = a.Name; } return slist } // 一覧を取得して表示する function main(){ FORM1.TEXTAREA1.value = "取得中・・・"; setTimeout( function(){ var message = ""; var slist = hashsort(getcomlist()); for( var k in slist ){ message += k +":"+ slist[k] + "\n"; } FORM1.TEXTAREA1.value = message; }, 1); } </SCRIPT> </HEAD><BODY SCROLL=no ONLOAD="main();"> <FORM NAME="FORM1" ONSUBMIT="main(); return false;"> <TEXTAREA NAME="TEXTAREA1" COLS=40 ROWS=10 readonly></TEXTAREA><BR> <INPUT TYPE=SUBMIT VALUE="再取得"> </FORM> </BODY> </HTML>
htaが実行できないとき
DOS窓とかで次を実行する
mshta.exe /register
トラックバック - http://d.hatena.ne.jp/iww/20120222/hta
リンク元
- 21 http://www.google.co.jp/url?sa=t&rct=j&q=構造体初期化&source=web&cd=2&sqi=2&ved=0CDsQFjAB&url=http://d.hatena.ne.jp/iww/20090424/struct&ei=73RET-eYIayWmQXJ1MXvAw&usg=AFQjCNFgJJfOq9EQrSRnifApCdl4YtJ4XQ
- 8 http://www.google.co.jp/url?sa=t&rct=j&q=シリアルポートの配列&source=web&cd=4&ved=0CEoQFjAD&url=http://d.hatena.ne.jp/iww/20120222/hta&ei=AEBMT6W6Fu72mAWQgYUI&usg=AFQjCNEcA5
- 7 http://d.hatena.ne.jp/jak-san/20110709/1310168663
- 6 http://search.yahoo.co.jp/search?p=減圧鍋&search.x=1&fr=top_ga1&tid=top_ga1&ei=UTF-8
- 6 http://www.google.co.jp/url?sa=t&rct=j&q=スレッドid&source=web&cd=2&ved=0CD0QFjAB&url=http://d.hatena.ne.jp/iww/20101217/p1&ei=ipdET7HBIKrImQXrj7CHBA&usg=AFQjCNEhMekxiMnjWEGRlBhkfZtooI8O6g
- 5 http://www.google.co.jp/search?hl=ja&source=hp&q=このアプリケーションの構成が正しくないため&gbv=2&oq=??%
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=減圧鍋&source=web&cd=13&ved=0CLUBEBYwDA&url=http://d.hatena.ne.jp/iww/20101031/p1&ei=I5dFT6CgCZCdmQXaiO2NBA&usg=AFQjCNFbS8VrgMEplVhOS2MxvpNGa3UErg&sig2=YGtItvabB5UyWZtk-_2HXg
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=checkbox onchange&source=web&cd=1&sqi=2&ved=0CDEQFjAA&url=http://d.hatena.ne.jp/iww/20100219/checkbox&ei=l3dET_2fJKjDmQWNhcj5Aw&usg=AFQjCNEaNpadXZ0Kmpe6g8f4RrSNTgWpmA
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=win32_serialportとwin32_pnpentity&source=web&cd=4&ved=0CEcQFjAD&url=http://d.hatena.ne.jp/iww/20120222/hta&ei=2sdET43wGuehiAfawdX1Ag&usg=AFQjCNEcA5nQsIFa4g9NT5IEcPTv8lYTUw&sig2=KaiUx90xk-MgpS1Z7c
- 5 http://www.google.com/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=8&ved=0CE0QFjAH&url=http://d.hatena.ne.jp/iww/20120128/1327747844&ei=0mBET6HPA8WOiAfTro2LAw&usg=AFQjCNFUC2wtAX1e8ZUnmZJ63jrTYRrrrQ&sig2=qeeGvQGcvYuWILDMDZzNWA
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |















