HTABOXコアat TECH
HTABOXコア - 暇つぶし2ch150:デフォルトの名無しさん
10/04/02 22:26:26
JavaScriptでWindowsアプリ作成というのはNILScriptと似てるな
スレリンク(tech板)

151:hidebou
10/04/03 08:40:44
test

152:hidebou
10/04/03 08:56:34
いつもの接続プロバイダがアクセス禁止対象となっていたので面食らってし
まいました。

using namespaceは文字通り「名前空間を使いますよ」なわけですが、私は本
番ソースコードでこれを使いません。例えばstd::stringと書いた方が読みや
すいからです。名前の衝突が起こらなければそもそも名前空間を使う必要も
ないわけですが、Cで大きなプロジェクトを書くと変数や関数に直感的な名前
を付けたつもりが、既に使われていて、新たな名前を作ることが可読性を低
下させる場合は便利な規格です。


153:hidebou
10/04/03 09:18:40
>>150
私の欠点は自分が興味を持った事へはとことんダイブするんですが、他の方が
何を書いているのかを全く知らないことです。ここでこういう貴重な情報を教
えていただけると大変助かります。ありがとうございました。
NILScriptについてはこれから勉強させていただきます。

HTABOXコアのスタートはMSHTA.EXEの置き換えな訳ですが、歴代のMSHTA.EXE
はそのサイズから想像できるように「Hello World」程度のことしかしていま
せん。ならば「Hello World」プラスアルファ程度のコードでHTML Application
をより自由なものにできるという実に横着な発想なわけです。

154:hidebou
10/04/03 09:36:26
この横着には私なりの戦略がこめられていて、OSが変移しようがIEが存在すれ
ば動くことを意味します。プログラムをリリースして、それがミドルウエアで
ある場合、サポートする総てのOSを手元においてテストする必要があるわけで
すが、MSHTA.EXEの為に用意されている環境プラスアルファなら枕を高くして
眠れるだろうという安直さで書かれています。

155:hidebou
10/04/03 22:42:38
今回はbiglobe山形がアク禁になった代わりにASAHIがアク禁解除になったので
こうして書き込みできていますが、両方アウトならダンマリになってしまいま
すね。私は携帯電話という物が大嫌いですから息子にでも頼んでここに事情を
報告するしかないでしょうね。

でもこうして他人のサーバーに好き勝手なことを書いて、多くの方が目を通し
ていただけること自体には感謝しています。2chって素敵な文化だと思います。

156:hidebou
10/04/04 23:49:42
これからWindows上でプログラミングを書こうと思っていらっしゃる方向けに
私が思う最短経路を説明したいと思います。勿論、遠回りがいけない事である
とは思いません。私自身何年も遠回りをしたのでこういう意見を持つことがで
きたのは事実ですから、いろいろな手法を体験し早期にその長所、短所を見抜
く事が理想ですが、老いぼれの独り言とお許しください。

157:hidebou
10/04/05 00:02:13
アプリケーションはユーザーの操作を認識する手段を持たなければなりません。
そうでない物も存在しますが、多くの場合操作対象のファイルパスやURLや処理
におけるオプション等を実行前に指定してもらうためのユーザーインターフェ
ースが必要です。これは皆さんが見慣れているメニューやボタンです。

これは多くの開発環境で見た目通りに部品をドラッグして作成できますが、一旦
作成したデータを再利用しようとすると、使いにくい事に気づきます。最悪の
場合、自動的に生成された位置情報データがクラッシュし、最初から作り直さ
なければならない状況に陥ります。


158:hidebou
10/04/05 00:11:18
かと言って、総てのコントロールをソフトウエア的にソースで生成しようとす
ると一旦実行して見た目を確認し、数値を変化させてまた見た目を確認すると
いう作業を総てのコントロールについて行わなければならず、これも非効率的
です。
HTMLエディタでWEBページとしてユーザーインターフェースを設計すればこの
問題をスマートに解決できます。

159:hidebou
10/04/05 00:25:14
HTMLに関する知識は貴方が世界に向かって何かを発信する時に必ず必要になる
知識でもあります。なぜなら、貴方の作ったプログラムを実行する前にそれを
紹介する貴方のWEBページが評価されるからです。

HTMLに関する情報を収集する場合、情報の発信用に他のブラウザを対象とする
のかアプリケーション用にIEのみを対象とするのかの判別をすることは重要で
す。officeが完全インストールしてあれば\1041\HTMLREF.CHMが存在しますから
ディスクトップにショートカットを作成して常に参照できるようにすべきです。

160:hidebou
10/04/05 00:36:42
アプリケーションの動作を記述するのは多くの場合スクリプトで足ります。
「scd56jp.exe」で検索しWindows Script V5.6 ドキュメントを入手してく
ださい。これも即座に参照できるようディスクトップにショートカットを
作成すべきです。

スクリプトに関する情報を収集する場合、HTTP経由の制約されたセキュリ
ティー環境なのか、HTAやHTABOXコアのように自由にファイル入出力が許
されている環境なのかを認識することは重要です。

161:hidebou
10/04/05 00:52:28
スクリプトはWindowsに存在するCOMコンポーネントを呼び出す事によって多く
の複雑な処理を簡潔な記述で行う事ができます。ファイル入出力、XML、HTTP
データベース、ADSI、メール送受信....etc この時、是非COMのタイプライブラ
リを俯瞰してください。その情報を提供する努力を私も行います。

162:hidebou
10/04/05 01:06:05
最後に既存のCOMコンポーネントでは実現できない機能を必要とした場合、
オリジナルなCOMDLLをC++で作成してください。HTABOXコアの場合はレジス
トリに登録する必要のないプライベートコンポーネントのDLLでも機能します。

C++のソースコードを不安なく書けるようになるには確かに時間が必要かも
知れませんが、速度や柔軟性の面において最良のパフォーマンスを発揮する
ことができます。既存のCOMでは逆に考えれば「こういう機能が必要」と予測
されている領域から出ることができませんが、WIN32APIを探検すれば誰も
見たことの無いマジックを披露することもできるでしょう。

163:hidebou
10/04/05 01:39:09
最後に今後はアプリケーションをリリースする場合、サーバーをコントロール
するテクニックが問われる時代となります。従来は一旦リリースしてしまえば
駟馬も追う能わずで製作者側が不利なものでも取り消しは効きませんでしたが
サーバーに紐を付けた状態でリリースすれば、リアルタイムでコントロール可
能です。

164:hidebou
10/04/06 09:14:06
毎度の事ですが読み返すと不自由な日本語ですいません。
私ごとですが、スランプに陥っています。ただただ休みたいというのが本心で
すが、それでは干上がってしまいますのでエンコード後のデバッグという辛い
作業をしなければなりません。何か私が考える以上にエンコード後には制約が
存在するようです。解りしだいご報告します。




165:hidebou
10/04/06 11:10:13
まず、エンコード後にdocument.charsetがunicodeになってしまう問題の解決
策ですが、非エンコードスクリプトブロックで明示的にshift_jisを指定して
ください。

<script language="javascript" onreadystatechange="">
document.charset = "shift_jis";
</script>

166:hidebou
10/04/06 11:19:03
この問題を考えながら気づいたんですが、document.charsetはなぜか公式解説
であるHTMLREF.CHMには存在しませんね。この場合IE7のタイプライブラリを
確認することになりました。ちょとサイズ大きいのですがIE7のタイプライブ
ラリを置きます。

URLリンク(www5a.biglobe.ne.jp)

167:hidebou
10/04/06 14:03:12
このタイプライブラリにおける
「MSHTML.HTMLDocument」がdocumentのディスパッチです。ここに
PROPERTYPUT HTMLDocument.charset return BSTR
PROPERTYGET HTMLDocument.charset return BSTR
が存在するので読み書き可能な文字列プロパティーとしてcharsetが存在する
ことがわかります。 




168:hidebou
10/04/06 22:22:41
エンコードスクリプトのデコード完了をソースでどう認識するかについて考
えました。onreadystatechangeで非同期にデコードしていますので内部から
イベントを発生させるには荷が重いので、デコード完了の証としてonreadystatechange
に空文字がセットされる規則としたいと思います。結果的に以下のソースで
デコードの完了を認識できる事になります。
<script language=javascript onreadystatechange="">
document.charset = "shift_jis";
window.onload = function()
{
//いずれかのスクリプトタグのonreadystatechangeにSYSTEM文字列が存在すれば0.5秒後に再検定
for(var c = 0; c < document.scripts.length; c++)
{
if(new String(document.scripts.item(c).onreadystatechange).indexOf("SYSTEM") != -1)
{
setTimeout("window.onload()", 500);
return;
}
}
alert("ok");
}
</script>

169:hidebou
10/04/06 22:31:53
現バージョンではデコード前にonreadystatechange=""を実施していますので
デコード後に実施するように変更します。上記ソースのalert("ok");の部分を
エンコードスクリプトブロック中の任意関数呼び出しに置き換える事ができる
わけです。これによりユーザーの操作を待たずともグローバルに参照するオブ
ジェクトを無警告でActiveXObject生成することができます。

170:hidebou
10/04/07 16:17:14
現状のエンコード規則は生成されたオブジェクトのvtが9の場合関数呼び出し
以外のInvokeを禁止しているのですが、これだと自由度がなくてコーディング
しにくいですね。typeofでfunctionが返された場合のみ厳格にして全体に緩い
規則に変更しようと思います。

ところでVBScriptはmainという関数があってもalert(main)とできませんから
もともとソース見えにくいという認識でよろしいのでしょうか?

171:デフォルトの名無しさん
10/04/07 17:04:17
>>160
WSHの最新バージョンは5.8なのにドキュメントが更新されてないって変だよなぁ

172:hidebou
10/04/07 19:19:26
>>171
まったく個人的な推測ですが強力すぎるからWSHを使って欲しくないと考えて
いるんだと思います。もっとおとなしい方法を使ってほしいんでしょうね。


173:hidebou
10/04/08 10:51:21
ですからcscript.exe、wscript.exe、mshta.exeがWindowsに付属しなくなる日
が来てもおかしくないと考えています。HTABOXコアはその日に備えた対策という
意味もこめられています。

174:hidebou
10/04/08 16:15:29
隠蔽コード関数中にwindow.showModalDialogという表現をするとエラーとなり
windowを省略したshowModalDialogという表現だとエラーとなりません。
美しくない仕様ですが、今のところ許容していただくしか無いようです。

175:hidebou
10/04/09 06:30:18
ダイアログのスクリプトをエンコードした場合dialogArgumentsの扱いにミス
がありました。再構築時に読み取り専用であるdialogArgumentsを退避させて
別名参照させる時に同名大文字変数としていましたが、この局面では大小の
文字は区別されていないので読み取り専用への書き込みと判断されて致命的
なエラーで停止します。ちゃんと別名にすることで解決できたようです。

176:hidebou
10/04/09 06:46:39
ダイアログに関してもうひとつ注意点ですが、メインウインドウが非アクティブ
になった原因がHTMLダイアログの表示であった場合HWNDを捕捉して制御すると
いうアルゴリズムですから、ダイアログ中のActiveXで警告ダイアログが表示さ
れた場合は非アクティブになった原因が警告ダイアログとなるので制御しません。
現時点でこれは仕様ということにします。


177:hidebou
10/04/09 22:33:45
174:の問題はIDispatchExのまま制御することで解決できそうです。
関数をIDispatchExのまま制御すればオブジェクト内の関数も同じ扱いで制御
できるので、従来オブジェクトの参照や列挙まで制限していたものを緩め、
関数コードのみを保護できそうです。

178:hidebou
10/04/10 10:03:14
隠蔽スクリプトブロックは隠蔽という目的以外にもActiveX警告ダイアログ
を表示させない目的でも使えます。例えばエンコードスクリプトグローバル
var FSO = new ActiveXObject("Scripting.FileSystemObject");
が評価されても警告ダイアログは表示されず、初期化された変数FSOへの参照
はあらゆるスコープから有効です。

ただし、button等のHTMLエレメントonclickで直接代入を行う変数は遅延出現
する前に解決されるので非エンコードブロックで宣言しなければなりません。
関数呼び出しの場合こういった配慮は必要ありません。

179:hidebou
10/04/10 13:25:38
VBScriptはJavaやC++と同時に眺めるとめまいがするので一切書かない人だっ
たのですが、改めて言語仕様を眺めてみるとなかなか興味深いですね。
特にClassのTerminateイベントは魅力的です。JScriptではデストラクタが書
けないのでこれは羨ましい。VBScriptにはソースを暴露するtoString()も無い
わけですから私自身VBScriptを再評価すべきかもと思っています。

180:デフォルトの名無しさん
10/04/10 17:27:56
VBScriptのクラスはプライベートメンバーが使えるのもいいよね
継承をサポートしてないのが糞だけど元になったVBにも無いから仕方ない
(VB.NETなら継承使える)

JScriptは
delete Function.prototype.toString;
を最初に入れとけばソース表示されないよ

181:hidebou
10/04/10 17:45:11
>>180
「継承できない」なるほど気づきませんでした。
delete Function.prototype.toString;も大変賢い方法だと思います。
別インスタンスからtoStringを復元されないかを実験したいと思います。


182:hidebou
10/04/10 18:14:27
delete Function.prototype.toStringは宣言したHTML中では有効ですが攻撃者
がダイアログを追加し、有効なtoStringを追加するとソースを見ることができ
るようです。実験に使用した用本体側HTMLとダイアログ側HTMLを書き込みます。

183:hidebou
10/04/10 18:15:12
<html>
<head>
<meta name="vs_targetSchema" content="HTML 4.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<title></title>
<meta NAME="GENERATOR" Content="Microsoft Visual Studio">
<meta HTTP-EQUIV="Content-Type" content="text/html; charset=shift_jis">
</head>
<body>
<INPUT type="button" value="main" ID=Button1 onclick="main()">
<INPUT type="button" value="crack" ID=Button2 onclick="crack()">
<script language=javascript>
delete Function.prototype.toString;
function test()
{
alert("naisho");
}
function main()
{
alert(test);
}
function crack()
{
window.showModalDialog("crack.htm", test);
}
</script>
</body>
</html>


184:hidebou
10/04/10 18:16:22
<html>
<head>
<meta name="vs_targetSchema" content="HTML 4.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<title></title>
<meta NAME="GENERATOR" Content="Microsoft Visual Studio">
<meta HTTP-EQUIV="Content-Type" content="text/html; charset=shift_jis">
</head>
<body>
<script language=javascript>
var func = dialogArguments;
func.toString = Function.prototype.toString;
alert(func);
</script>
</body>
</html>


185:デフォルトの名無しさん
10/04/10 19:49:44
それって本体側HTMLも改変しなきゃいけないんじゃ?
そんなことができるならdelete文を削除したほうが速そう

関係ないけど.htaってなんでコンテキストメニューに編集が無いの?
うっかり項目を追加するスクリプトを作っちまった
new ActiveXObject("WScript.Shell").RegWrite("HKCU\\Software\\Classes\\htafile\\shell\\edit\\command\\", "Notepad.exe %1", "REG_EXPAND_SZ");

186:hidebou
10/04/10 19:49:59
ここでのポイントはダイアログ側での
func.toString = Function.prototype.toString;
な訳ですが、これをできなくしているのがHTABOXコアの隠蔽原理です。
toStringを踏み潰した後にDISPATCH_METHOD以外は無視するよう言い聞かせて
おけばプロパティーの追加は不可能になるからです。



187:hidebou
10/04/10 19:55:39
>>185
確かに実際には「delete文を削除」は有効ですが、エンコードされた後にと
いうイメージで実験させてもらいました。ダイアログの追加は改編というよ
り単なる追加で可能だからです。

188:hidebou
10/04/10 20:03:14
>>185
HTABOXコアでは右クリックを無視していますが、右クリック動作を書いて
メニューを表示させるというアイディアは思いつきませんでした。今後の
課題としたいと思います。

189:デフォルトの名無しさん
10/04/10 20:17:42
これってプロセスをサスペンドして全メモリ領域からスクリプトっぽい文字列を検索すればソースが読めちゃったりしないの?

190:デフォルトの名無しさん
10/04/10 20:41:15
>>188
HTML5はmenu要素でコンテキストメニューを作れるらしいね
いつIEで使えるようになるかは知らないけど

URLリンク(www.html5.jp)

191:hidebou
10/04/10 20:53:36
>>189
とてもいい質問だと思いますが、詳しくお答えできないという立場をご理解
ください。
>>190
HTML5ならIE9で可能となるのかも知れませんね。私の眠っているVISTAを復活
させる必要があります。

192:hidebou
10/04/11 09:54:26
エンコードスクリプトからダイアログを呼び出す場合、引数に具体的オブジェ
クトを渡すよりもdocument全体を渡した方が安全のようです。
ダイアログ側で引数オブジェクトを変数格納する場合非エンコードブロックで
var OBJ = dialogArguments.Script.OBJ;
とScriptを介した参照で変数を作成し以降は当該変数への操作とするとエラー
となりません。

193:デフォルトの名無しさん
10/04/11 17:07:19
プログラムのことはさっぱり分かりませんが、旧HTABOXを以前から見ていた者です。

スレが伸びているのを機に、HTAをゼロから覚えたいと思います。


194:hidebou
10/04/11 17:47:40
>>193
HTML ApplicationはHTMLを書くという最も重要な技術をアプリケーションに
発展できる素晴らしい手法です。楽しみながら学習してください。

何か解決できない事があったらURLリンク(kuroda.bglb.jp)の掲示板にでも書き込
んでいただければ、お力になれるかも知れません。

195:hidebou
10/04/11 18:03:22
エンコーダー以外の実践的アプリケーションを書いていなかったものですから
実際にダイアログを使ったり、ソース内にオブジェクトがあったりするケース
での煮詰めが甘かった事を痛感する日々でしたが、ここに呟いた留意点をドキ
ュメントに追加してバージョン1.40をリリースする予定です。
1.40は「実践的なエンコードルールの確立」と位置づけています。

196:hidebou
10/04/11 23:36:58
ダイアログのスクリプトグローバルに
var SYSTEM_MENUE = true;
が宣言されていた場合、最大化最小化ボタンを付加することとさせてください。
これをダイアログのスクリプトスコープから行おうとすると複数のWIN32関数
を追加しなければならず、取り扱いが煩雑になるという理由からです。



197:hidebou
10/04/11 23:40:50
タイプミスがありました。
SYSTEM_MENUE -> SYSTEM_MENU
です。いつもよく確認もせず書き込んですいません。

198:hidebou
10/04/12 16:07:31
MSE7.EXEによるタイプライブラリの確認方法とActiveXドラッグによる自動
コード生成方法についての説明を追加しました。officeをお持ちでまだ利用
したことがない方は是非ご覧になってください。

URLリンク(www5a.biglobe.ne.jp)

199:hidebou
10/04/12 16:27:37
実は今日の午前中はtdc.ocxが特定のパターンの時だけハングする現象に悩ま
されました。原因はCharSetプロパティーはデフォルトで空であり適確な設定
例えば"shift_jis"が設定されていないと不安定であるという事実でした。

MSE7.EXEでコードをドラッグ生成するとデフォルト値を確認できますので原因
の究明がスムーズだったというわけです。

200:hidebou
10/04/13 12:00:41
本日中には1.40のドキュメントを書き上げてリリースしたいと思います。
モードレスダイアログをアプリケーションウインドウのように扱えますから
よりプログラミングの自由度が増すのではないかと考えています。

しかし、毎回思うのですがプログラミングは楽しいのに説明を書くのは苦手
です。くどい説明がいらないようなプログラムを書くというのは理想ですが
なかなかそうもいきません。解りにくかったらどんどんダメダシしてください。

201:hidebou
10/04/13 15:53:02
バージョン1.40の準備が整いました。
URLリンク(kuroda.bglb.jp)
ドキュメント(取説)が長くなってきたのでメニューを追加しました。変更点
は「ダイアログの表示」「ソース隠蔽実験」「エンコード時の留意点」を
ご覧いただければ判るかと思います。また、sampleのtest4.htmにダイアログ
へのシステムメニューを追加したデモがありますので是非ご覧ください。


202:デフォルトの名無しさん
10/04/13 17:13:53
>>200
仕様をあれこれ考えてる時も楽しいけど
実装する時にはいろいろ妥協が必要なこともあったり

203:hidebou
10/04/13 17:42:05
>>202
自分のためのツールだったらとことん尖がっていてもいいんですが、リリース
して使っていただくとなるとその妥協点を見出すことの連続になりますね。
こういったツールって「独りよがり」が一番の敵だと思っています。

204:hidebou
10/04/13 19:36:12
XPのIE7環境で実験してるんですが、親のキャプションにモードレスを重ねて
ダイアログをクローズすると親のキャプションの色が抜けてしまいますね。
WM_CLOSEで親へ再描画を促す処理を加えてみたいと思います。

205:hidebou
10/04/13 20:11:29
逆ですね。ダイアログが表示されても親がアクティブなのでおかしくなるとい
う解釈が正しいようです。解決のためにすこし実験プログラムを書く必要があ
りそうです。

206:hidebou
10/04/13 20:29:11
ダイアログの加工が終わるまで一旦SW_HIDEしてSW_SHOWしていた事が原因でし
た。気づいてみれば本来アクティブなダイアログを非表示としてしまえば親が
アクティブになるという単純なミスでした。まもなくファイルを更新します。

207:hidebou
10/04/13 21:11:14
ファイルを更新しました。結果としてダイアログの構築がもたつくと若干ちら
つく事になりますが、その対策についてはまた考えたいと思います。

208:hidebou
10/04/13 22:43:31
再度ファイルを更新しました。ダイアログは構築後に表示されます。
一時的にWS_VISIBLEを剥奪するという手法が円満解決のポイントでした。

209:hidebou
10/04/14 07:14:12
ダイアログにシステムメニューを付けるということはメニューも付ける可能性
があるわけで、WS_EX_CLIENTEDGEを付加しないとメニューとクライアント領域
がのっぺりしてしまいますね。将来は自由にウインドウスタイルを設定可能に
したいとは思いますがダイアログのSYSTEM_MENUが宣言されていた場合に関し
ては自動的にWS_EX_CLIENTEDGEを有効とさせてください。

210:hidebou
10/04/14 07:38:10
ファイルを更新しました。SYSTEM_MENUが宣言されたダイアログはアプリケー
ションウインドウとほぼ同じ3Dで窪んだ外観となります。アプリケーションの
ように扱えますが、HTA用ウインドウではなくHTML Dialogですのでセキュリテ
ィーの取り扱いに若干の制約があったと記憶しています。

211:hidebou
10/04/14 09:55:02
呼び出されたダイアログでのActiveX生成時の警告ダイアログについて実験し
ていて気づいたのですが、フレーム構成でないアプリケーションはHTA扱いで
すから、そこから呼ばれたダイアログもHTA扱いなんですね。

ただしフレーム構成とした場合は子がHTMLでなければなりませんから、そこ
から呼ばれるダイアログもHTML扱いになりエンコードしないと警告が出ると
いうごく自然な展開なわけです。

212:hidebou
10/04/14 10:03:31
もしHTAが子フレームで構成されていて、子もHTA扱いとさせることができれば
さらに自由度が上がることは明白ですが、今後の課題としたいと思います。

213:デフォルトの名無しさん
10/04/14 20:03:16
application属性は無効なの?
URLリンク(msdn.microsoft.com)


214:hidebou
10/04/14 21:10:46
>>213
<HTA:APPLICATIONという書き方でエラーとはなりませんがMSHTA.EXEと同様の
機能しか提供できません。作った本人も残念なのですがHTA:APPLICATION中で
使用する機能があれば実装しますので気兼ねなく書き込んでください。


215:デフォルトの名無しさん
10/04/14 21:34:45
いや、frameタグのセキュリティ属性のほうです。

<FRAME SRC="SUBFRAME.HTML" APPLICATION=YES >

216:hidebou
10/04/14 21:43:16
>>215
すいません別の意味でしたね。恐らく
The APPLICATION attribute can be used only in HTAs.
という記述からすると同じ扱いになろうかと思いますが、初めて見る書き方
なので調べてみます。




217:hidebou
10/04/14 21:59:33
理解できました。有効ですね。子フレーム宣言を
<frame name="top" src="page1.htm" APPLICATION="yes">
でセキュリティーがHTA扱いとなるのですね。こんな便利な機能を私はまった
く知りませんでした。教えていただいてありがとうございました。



218:hidebou
10/04/15 00:49:57
極めて今更なんですが、HTA扱いだと何やっても警告出ないんですね。
実は長い間HTMLダイアログベースで同じ事をやろうと研究していた時期があっ
たものですから頭こんがらがっていました。結局一人で出来ること、気づくこ
とには限界がありますし、私は特にその容量が小さいので今回のようなご指摘
は値千金です。今後ともよろしくお願いします。

219:hidebou
10/04/15 09:31:30
HTABOXコアのダウンロードファイルを更新しました。
exeはそのままですが、ドキュメントとサンプルの誤りを訂正しました。

お礼に差し上げるものも無いのでウインドウスタイル変更についてプロトを
作成したいと思います。HTML系のウインドウはFrameとDocumentにそれぞれ
HWNDを持っていますので使いようによっては斬新なことができると思います。

220:hidebou
10/04/15 09:47:41
まずHWNDの取得ですがダイアログの場合取得しにくいので一律に
window.FRA_HWND、window.DOC_HWNDで常に参照できるものとします。
GetWindowLong、SetWindowLong、GetSystemMenu、SetWindowPos
をWIN32名前空間に出現させればスタイルの変更が可能になるはずです。

221:hidebou
10/04/15 13:14:36
ウインドウスタイルを変更するAPIを追加したサンプルを置きます。
URLリンク(www5a.biglobe.ne.jp)
機能の追加は単純作業でしたが、適当なサンプルページを作るのに手間取り
ました。サンプルではシステムメニュー上の最小化、最大化機能を制御して
います。透けてるウインドウとかをサンプルにしたかったのですが、改めて
ウインドウスタイル設定の難しさを思い知らされた格好となりました。

222:hidebou
10/04/15 13:23:00
補足ですが、当初window.FRA_HWNDとしていましたが、単にグローバル変数
FRA_HWND、DOC_HWNDとしています。
GetWindowLong、SetWindowLong、GetSystemMenu、SetWindowPos
の各引数は本物と同じです。ただしスクリプトからのプロシージャ取得設定
は危険なのでWindowLong系のGWL_WNDPROCは無視しています。

223:hidebou
10/04/15 18:29:32
ShowWindow関数を追加しその定数もサンプルスクリプトに加えました。

224:デフォルトの名無しさん
10/04/15 21:45:10
SetLayeredWindowAttributes もクレクレ

225:デフォルトの名無しさん
10/04/15 23:29:28
自分はスキルが無いから、身体に気をつけて頑張って!という感謝の言葉しか思いつかない・・・


226:hidebouの代理
10/04/16 00:02:21
ついに両回線ともアク禁になってしまいました。1週間くらいは
ROM状態でしょうか。書き込みに対するレスは
URLリンク(kuroda.bglb.jp)
に書きます。ご迷惑おかけします。hidebou

227:デフォルトの名無しさん
10/04/16 11:08:41
p2でも無理なの?

228:デフォルトの名無しさん
10/04/16 23:30:48
ブログでやればいいのに

229:デフォルトの名無しさん
10/04/17 15:06:06
書き過ぎでアク禁食らったんじゃないかな。
もうちょっと抑えて書くといいね。
待ってます。

230:デフォルトの名無しさん
10/04/17 15:21:27
過疎板だからといって、200レス/月でアク禁になるのかよw

231:hidebou
10/04/18 11:33:16
test

232:hidebou
10/04/18 11:41:07
ご迷惑おかけしました。片方の回線で書けるようになったようです。
URLリンク(www5a.biglobe.ne.jp)
のプロトタイプでは以下のAPIが使用可能です。

GetWindowLong、SetWindowLong、GetSystemMenu、SetWindowPos、ShowWindow
SetLayeredWindowAttributes、AnimateWindow

また、右クリックでのポップアップメニュー機能も追加してみました。特に
このメニューの仕様についていいアイディアがありましたら助かります。

233:hidebou
10/04/18 11:54:51
通常メニューについてもポップアップメニューについても将来は構造化した
定義をスクリプトから行えるようにする予定ですが、HTMLタグによる宣言の
場合は単純で使いやすい仕様が望ましいと考えています。

プロトでは新たにTDのinnerTextが-(マイナス記号)だった場合セパレータと
する規則を導入しましたが、これでいいのかな?と迷っています。

234:hidebou
10/04/18 21:37:08
HTABOXコアという器も改良を続けて行くでしょうが、器の中の料理の作り方
を紹介する事にも力を入れていかなければと思っています。今のところHTML
Applicationは知る人ぞ知るという情報であって、肝心のこれからプログラム
を学習しようという人へ情報をいかに広報してゆくか、導けるかが課題にな
ろうかと思います。

235:デフォルトの名無しさん
10/04/19 01:57:31
>>230
同一IPから連続で書くと、一日でアウトになるよ


236:デフォルトの名無しさん
10/04/19 20:25:13
>>235
1日じゃなくて1ヶ月だってばよ。

237:hidebou
10/04/19 22:04:25
本来なれば私のサイトで意見交換するというのが本筋なのですが、私として
も何かと目に留まりやすい2chをあてにしてしまっていることろが悪いのです。

昨日、今日とFrontPageやASPとにらめっこして気軽にご意見をいただけるシス
テム作りを行っております。書いた本人は直後にコメントを消せるルールなら
書き込みやすいかなぁーとか思っています。

238:hidebou
10/04/19 22:29:42
もっと本質的な問題を言うとSEOに優れている2chのような場では逆に失言が未
来永劫残る危険性があって発言にブレーキがかかる気がするんです。かと言っ
てメーリングリストのように閉鎖的なのは前時代的ですし、ブログやtwitter
もいいでしょうけれど話題がプログラミングだけにソースをきれいに表示でき
ることを考えると自分でそいう目的のシステムを作った方がいいかなぁっと考
えています。

239:hidebou
10/04/20 05:54:09
従来HTAやWSHは個人的に使うツールだった訳からとても趣味性の高い奥まっ
た情報の交換が主だったと思うんです。「過去ログ見てから物を言え」的
ムードが参入者にとって障壁となっているのではと。これからという人が気
兼ねなく発言できる場が絶対に必要ですし、私自身その中で気づいてゆくこ
とが多いと思っています。

240:hidebou
10/04/20 06:04:39
とりあえずFrontPageのスレッド形式掲示板を使いやすく改良してそういった
ニーズに答えられる努力をしていますが、HTABOXコアは特化されたブラウザと
して使用することも出来るわけですから、twitterのように緩い結びつきで、
コミュニティーが形成されてゆく情報交換ルールを作ることも夢ではないと
思います。

241:デフォルトの名無しさん
10/04/20 16:49:17
プログラミングをしてみない?
URLリンク(www.nicovideo.jp)

こういう動画のHTA版があると面白いかもしれんが
WSHと違ってHTMLの説明も書かなきゃいけないから大変そう

242:デフォルトの名無しさん
10/04/20 17:16:33
>>200
>プログラミングは楽しいのに説明を書くのは苦手です。


URLリンク(www.ruby-lang.org)
ソースがドキュメントだ。バグも完全に記述されている

243:hidebou
10/04/20 18:44:19
>>241
まさしく情報の範囲として実に広範なものになりますから、細部までとなると
一人がどうこうしても追いつかない情報量になろうかと思います。
それぞれの分野で興味を共有しあって助け合える仕組みが必要だと思います。

244:hidebou
10/04/20 18:49:50
自身サイトの掲示板を改良しました。
URLリンク(kuroda.bglb.jp)
せっかく訪れていただいてもお土産がないと失礼ですのでタイプライブラリス
レッドを用意しました。タイプライブラリスレッドにリクエストをいただけれ
ば可能なかぎりお答えしたいと思います。

245:デフォルトの名無しさん
10/04/20 19:56:07
OLE/COM オブジェクト ビューア
URLリンク(msdn.microsoft.com)(VS.80).aspx

これでよくない?
と思ったけど定数は表示されないのかな

246:hidebou
10/04/20 20:26:20
>>245
C++で利用するならおっしゃる方法も素敵ですし、私は#importした後に生成
される.tlhや.tliファイルを直接眺めたりもします。要はスクリプトにコメ
ントとして貼り付けて必要な部分をコピペしやすい形式のファイルとしてい
るだけです。


247:hidebou
10/04/20 20:48:55
またCOMの全体像を把握したい場合も整形されたタイプライブラリが便利です。
FileSystemObject.CreateTextFile(.......) return ITextStream ですから
今度は後方からITextStream.で検索をかけITextStreamのメソッドやプロパテ
ィーを確認するといった具合です。

248:hidebou
10/04/20 23:45:30
HTML Applicationという手法の最大のメリットは「省力化」だと思っています。
生涯のテーマとして少数のアプリケーションを維持するだけなら全部C++で書く
のが正解ですが、行きずりのテーマをささっと短時間でアプリケーションに
仕上げてしまうような状況でこそ本領を発揮するはずです。それを可能にして
いるのが他人の褌であるCOMの利用なわけですから、その構造を短時間で理解
する工夫がなければHTML Applicationのメリットが削がれてしまうと感じてい
ます。

249:hidebou
10/04/21 09:57:57
個人的には1週間で1本のアプリケーションをリリースする体制を目標にしています。
つまり年間で52本をリリースするわけです。「下手な鉄砲数打ちゃ当たる」を実践
するためにHTABOXコアを書きましたし、HTABOXコアを知らない人も短時間にどんど
んリリースしてくる不思議な人間がいることに気づいてHTABOXコアの存在に気づく
という展開になるんじゃないかと思います。

250:デフォルトの名無しさん
10/04/21 17:15:26
ゲーム作るのに joyなんたら~な API がラップされると嬉しかったり。
URLリンク(www.geocities.jp)

251:hidebou
10/04/21 17:51:32
>>250
ジョイスティック系のAPIがあることすら知りませんでした。
今後勉強して喜んでいただけるよう努力します。



252:hidebou
10/04/21 18:27:25
>>250
ちらりとMSDN見たんですが、いよいよ構造体がらみになりそうですね。
いつかは構造体をスクリプトで定義、参照できる規格を決めなければと思っ
ていましたので良いきっかけをいただいたと思います。JScriptならイメージ
が沸くのですがVBSriptのclassインスタンスがC++からIDispatchExに見える
のかというような実験を繰り返す必要がありますので、お時間をいただくこと
になります。

253:デフォルトの名無しさん
10/04/22 00:55:48
全くゼロから覚える場合、何をやったら良いか教えていただけますか?

とりあえず、教育用言語とアルゴリズムは学生時代に習いました。
HTMLはスタイルシート以外は分かります。


254:デフォルトの名無しさん
10/04/22 01:05:47
やはり最初は Hello, World からでしょう。

URLリンク(msdn.microsoft.com)

255:hidebou
10/04/22 03:16:39
>>254
HTMLでユーザーインターフェースを作ることを理解されていらっしゃるので
したら自分の興味がある機能を提供してくれるCOMを使ったスクリプトを書い
てみてはいかがでしょうか?私の知識の範疇にあれば使えそうなCOMを紹介し
て簡単な導入部を書けるかも知れません。
HTML、Script、COM、C++と広範な技術を活用できますが、最も重要なのは書い
てて得してる気分とか、楽しいとかだと思います。

256:hidebou
10/04/22 03:37:42
>>254
私の経験で恐縮ですが、HTMLは単に表示されるだけと思っていた時に、結果を
ファイルに書き出せるだけでとっても感動した記憶があります。scrrun.dllに
存在する"Scripting.FileSystemObject"はテキストファイル入出力機能を提供
してくれるCOMです。クォート内のワードで検索すれば数十万件ヒットしますの
でサンプルは沢山あるはずです。


257:hidebou
10/04/22 12:44:56
ねぼけまなこで書き込んだものですから>>254ではなく、>>253でした。
すいませんでした。

258:hidebou
10/04/22 13:12:52
>>253
スクリプトを書くときにJScriptかVBScriptかで悩むかもしれませんが、HTML
中には両方書いてそれぞれグローバルな要素を参照できますので、両方を齧っ
て自分のスタイルに合った方を使えばいいと思います。

JScriptはJavaScriptの拡張ですので、他のブラウザ用にHTMLを書くときにも
知識が生かせます。VBScriptはIE限定ですがoffice系のVBAをスクリプトへ移
植する際には僅かの書き換えで済みますから便利だと感じています。

259:hidebou
10/04/23 10:07:56
HTML Application用いてMSWORDやEXCELを操作するメリットはマクロのセキュ
リティー設定に関わりなくマクロと同等の動作を実行できることです。一見
回りくどいように思われるかも知れませんが、VBAをVBScriptでの外部呼出し
に替えることは簡単ですし慣れればJScriptへの翻訳も問題ありません。


260:hidebou
10/04/23 10:20:01
ひとつ面倒な点があるとすればMSWORDやEXCEL固有の定数をスクリプト環境で
定義しなければならない事ですが、この問題を解決する目的でタイプライブ
ラリ解析システムが生まれたと言っても過言ではありません。
//WdNewDocumentType type enum
var wdNewBlankDocument = 0;
var wdNewWebPage = 1;
var wdNewEmailMessage = 2;
var wdNewFrameset = 3;
と宣言しておけばVBAでの定数名を書き換えることなくスクリプトへ移植でき
るからです。

261:hidebou
10/04/23 10:32:37
HTABOXコアはまだVBScriptを使用したスクリプトブロックのエンコードに対
応していませんが、対応後はマクロの記録でVBAを自動生成させ、少ない労力
でスクリプトへ移植し、1本のアプリケーションとしてリリースできる事をご
理解いただけると思います。これぞ究極の他人の褌でとる相撲だと思います。

262:デフォルトの名無しさん
10/04/24 18:49:51
>>252
>VBSriptのclassインスタンスがC++からIDispatchExに見えるのか

Windows スクリプト コンポーネント
URLリンク(msdn.microsoft.com)(v=MSDN.10).aspx
これとは違うんだよね よく分からん

263:hidebou
10/04/24 19:59:18
>>262
C++側から見た場合、スクリプトから呼び出されたCOMの引数はVARIANTですが
JScriptのObjectの場合はIDispatchExポインターを保持しています。VBSript
のclassインスタンスもそうなら....という話です。

264:hidebou
10/04/24 20:09:54
もしそうならC++側で要素を列挙できますから構造体の代わりに使えます。

265:hidebou
10/04/25 01:08:36
「柔軟に扱える」の方が適切な表現かも知れません。うまくいけば必要な要
素のみを宣言した「省略構造体」を引数として渡せばC++側が要素を追加して
「完全構造体」を返すというルールが作れるかも知れません。

266:hidebou
10/04/25 22:10:59
従来スクリプトから呼ばれるCOMを作成するためにはレジストリに登録する
パブリックコンポーネントを作成しなければなりませんでした。全くのスク
ラッチでこれを書くこともできますが事実上VC++のATLがないと困難でした。
HTABOXコアはその面倒を内部で処理し単純なDLLでもスクリプトから呼び出さ
れるルールを実現しています。ATLなしでも書けるということは無料の2008で
十分だということです。

267:hidebou
10/04/25 22:21:55
HTABOXコアのサンプルで使用しているCONSOLE.DLLのC++ソースを置きます。
単にWIN32DLLの環境を作りビルドしてください。
URLリンク(www5a.biglobe.ne.jp)
スクリプトとは何か?を理解する最も有効な方法はもっと低水準な観点から
スクリプトを眺めてみる事です。

268:hidebou
10/04/27 21:45:39
最近ASPばかり眺めててHTABOXコアに手を付けられずせっかく作ったプロトも
リリースしていなくてすいません。ASPを眺めていて不思議な現象を発見した
ので話の種にさせてください。#include virtualで別WEBにあるASPを参照し
被参照側のグローバル変数を呼び出し側で<%=HOGE%>すると見えないんです。

269:hidebou
10/04/27 21:53:55
いろいろ設定を変えてもだめでIIS5.0でもIIS5.1でも同じ状態なのです。
でも、ひょんな事からその対策を発見しました。両方同じ言語な場合のみこの
現象が発生しているのです。JSとVB又はVBとJSならこの問題は発生しません。
引き換えにユーザー定義系クラスは参照できませんが、改めてVBScriptの
存在に感謝したしだいです。

270:hidebou
10/04/28 11:50:39
という訳でMSE7.EXE(Microsoft Script Editor)でVBScriptを書く機会が多く
なっているのですが、複数行を一度にコメントアウトする場合面倒だったり
します。VBA環境の場合はその機能があるのですがMSE7.EXEにはありません。
これは検索置き換えで正規表現を使えば簡単に解決できます。コメントアウト
したい範囲を選択して行頭「^」を「'」に置き換えればいいのです。


271:hidebou
10/04/28 12:10:05
正規表現という手法はとっつきにくくて、各環境で微妙な差異があったりし
ますが、使ってみると劇的に作業が楽だったり、ソースコードが簡潔になっ
たりします。特にJScriptのreplaceでは置き換え文字列生成に関数を指定で
きますので柔軟な置き換え結果を生成できます。

272:hidebou
10/04/29 01:07:48
HTABOXコアではなくHTABOXサーバーの話題なのですが、IISで独自認証システ
ムを構築する場合ISAPIフィルタDLLが必須となります。ASPは画像等のGET要
求を知り得ないからです。しかしISAPIフィルタDLLとASPはASPがIISインプロ
セスで動作していない限り交信できません。つまりISAPIフィルタDLLはASPの
セッション情報にアクセスできないというのが通説です。

273:hidebou
10/04/29 01:24:50
HTABOXサーバーのアドバンテージはそれを実現している事です。IISプロセス
とASPプロセスでそれぞれCOMをインスタンス化し、IISの保護されたプロセス
境界を突破する通信手段をCOM内に構築することでDLLとASPは連携できます。
勿論ASPは勝手気ままに消滅するかも知れませんから、DLL側のXMLインスタン
スへ動作を報告し、DLL側は必要に応じてXMLを読むというからくりです。

274:hidebou
10/04/29 01:42:49
ネットでプログラミング系の情報を見ている時に
「○○では○○したくてもできない」
というフレーズを見つけた時はチャンスだと思うんです。なぜならそれを実
現すれば確実にアドバンテージを得ることができると教えてくれているから
です。

275:hidebou
10/04/29 11:30:20
プログラミング業界の格言に「人のやっていないことはやるな」というのが
あります。これは「万人がチャレンジしてだめな手法へチャレンジするな」
という意味です。決まった納期に仕様どおりの製品を納める仕事なら当然の
ことですが、フリーランスプログラマーの場合は逆だと思います「人ができ
ないからチャレンジする」でなければ新しいものは生まれません。

276:hidebou
10/04/29 23:52:24
なんとかHTABOXサーバー側のシステムも営業稼動できる状態に漕ぎ着けたよ
うです。技術的に可能か?が判明すると興味を失って実装部を煮詰めないの
が私の欠点なのですが、霞を食って生きてはゆけないので睡眠時間の少ない
日々をすごしました。最終的に販売動作はサーバーが自動的に行い、私はコ
ンテンツの充実のみに集中できるはずです。


277:hidebou
10/04/30 00:19:56
プログラミングに限って言えばスキルとは頭の良さと無関係なものです。
要は「知っている」か「知らない」かの違いだけだと痛感しています。
私の家族に霞ではなくお米を食べさせなければならないので総てを無料閲覧
可能にはできませんが、実践的で理解しやすい情報を提供してゆく予定です。

278:hidebou
10/05/01 03:33:49
朝4時からですから24時間耐久になりましたがFrontPage Server Extensionsが
管理するDBと独自認証系DBとの良好な位置関係に結論をだすことができました。
これによって書きかけだった救急隊用医療情報分析システムをサーバーに組み
込む作業も終了し一般公開へ大きく前進できたと思います。

279:hidebou
10/05/01 03:58:45
こいつはソースで250Kくらいになる退屈な構造のプログラムなのですが、HTA
BOXコアがきちんと大きなボリュームに耐えられるのかのテストでもありました。
勿論パース中は若干もたつきますが、サーバーからの認証ダイアログに答える
必要があるので、それに気をとられてあまり気にならないという素敵な誤算も
あるようです。


280:hidebou
10/05/08 23:39:03
いまだサーバー側の独自認証システムコードから抜け出せずにいます。
FrontPageが生成するVBScriptコードを再利用するという発想がいやらしすぎ
るらしく、最後に蹴られるという展開を何度も繰り返してしまいました。
まさに「策士策に溺れる」の展開なので、初心に帰って朴訥なコードを書き
HTABOXコアのほうに手をつけれるようにしたいと思っています。

281:デフォルトの名無しさん
10/05/14 18:43:04
<script language="VBScript">
Class HelloWorld
  Sub Print
    document.write "Hello, World"
  End Sub
  Function toString
    toString = "見せられないよ☆"
  End Function
End Class
Set hello = New HelloWorld
</script>
<script language="JScript">
alert(hello instanceof Object); //=> false
alert(typeof HelloWorld); //=> "undefined"
alert(typeof hello); //=> "object"
alert(typeof hello.Print); //=> "unknwon"
alert(typeof hello.toString); //=> "unknwon"
alert(hello); //=> "[object]"
alert(hello.toString()); //=> "見せられないよ☆"
</script>

VBScriptは難しすぎ

282:281
10/05/14 18:55:11
間違えた
×unknwon → ○unknown

283:hidebou
10/05/14 21:37:14
>>281
私も同じような実験コードを何度か書きました。
Class HelloWorldが直接JScriptから参照できればもっと有機的な絡み方がで
きるんですが、あくまでもNewしたインスタンスしか見えないようでした。

JScriptにVBという名前空間を、逆にVBScriptにJSという名前空間を出現させ
異なる言語の標準関数を使えるようにしたら面白いかも?という構想を持って
います。



284:デフォルトの名無しさん
10/05/14 22:00:41
VBSは撲滅すべき

285:hidebou
10/05/14 22:08:33
>>284
私はVBS初心者なんですが、どうも一旦ばかばかしいミスのコードを実行する
と、その後正しいコードを書いてもエラーとなる気がしています。ひょっと
するとVBSはJSよりWindowsシステムに近いところで動くのかも知れません。
だとすればJSよりちょっと高速に動くという推理をしています。

286:hidebou
10/05/27 01:28:59
本番サーバーの最終調整とセットアップドキュメント作成をやっています。
ひとつの目標として、私が書いたものでないHTABOXコアプラットホームの
アプリケーションを販売できる体制作りを掲げています。そのためには認証
や登録を軽量でありながらも堅牢なものにしなければなりません。

287:hidebou
10/05/27 01:40:47
私のような年になると、未来への沸き立つ希望などは消えうせて、何かを次
の世代へ伝えられればという想いだけになります。これからこの世界を担う
方たちが希望をもって生きてゆける材料をひとつでも作っておければと、し
ょぼくれた目をこすりながらIISと格闘しております。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch