SSブログ

ワード・エクセル開いているかな? [JavaScript]

前回の「ウィンドウを検索する」でアプリケーションのclass nameを知ることができました。
(ワードやエクセルならネットで検索すれば出てきますが、、)
このclass nameをもとに、ウインドウのタイトルバーの文字列を取得して表示します。
officeinfo.png
UTF-8、拡張子は.HTAで以下のテキストを保存。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ワード・エクセル開いているかな?</title>
<script>
var excel = new ActiveXObject('Excel.Application');     // Excelオブジェクト生成

function officeInfo( className ) {
    var resultHtml = '';                                // ↓指定したクラス名の1つめのウィンドウのハンドルを取得
    var hWnd  = excel.ExecuteExcel4Macro( 'CALL("user32", "FindWindowA", "JCJ", "' + className + '", 0)' );
    if( hWnd ) {                                        // 取得できたら(0でなければ)、、
        do {                                            // ↓ウィンドウが表示状態ならば、ウィンドウハンドルからウィンドウ名を取得
            if( excel.ExecuteExcel4Macro( 'CALL("user32", "IsWindowVisible", "JJ", ' + hWnd + ')' ) ) {
                resultHtml += '<p>' + excel.ExecuteExcel4Macro( 'CALL("user32", "GetWindowTextA", "2JFJ", ' + hWnd +', 0, 64)' );
            }                                           // ↓デスクトップを親ウィンドウとし(0)、現在(hWnd)の次の子ウィンドウを検索
            hWnd = excel.ExecuteExcel4Macro( 'CALL("user32", "FindWindowExA", "JJJCJ", 0, ' + hWnd + ', "' +className + '", 0)' );
        } while( hWnd );
    }
    if( !resultHtml ) resultHtml = '<p>Not found  (' + className + ')';
    document.getElementById('result').innerHTML = resultHtml;
}
</script>
</head>
<body>
<h1>ワード・エクセル開いているかな?</h1>
<p>
<form>
<input type="button" value="Word"       onclick="officeInfo('OpusApp')"       >
<input type="button" value="Excel"      onclick="officeInfo('XLMAIN')"        >
<input type="button" value="PowerPoint" onclick="officeInfo('PPTFrameClass')" >
<input type="button" value="Access"     onclick="officeInfo('OMain')"         >
<input type="reset"  value="clear"      onclick="document.getElementById('result').innerHTML=''" >
</form>
<p><div id="result"></div>
</body>
</html>

タグ:HTA
nice!(0)  コメント(0) 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。