HTABOXコア
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2010/03/09(火) 17:13:460002hidebou
2010/03/09(火) 17:29:16ご意見を伺えれば助かります。
0003デフォルトの名無しさん
2010/03/09(火) 18:11:41人によると思いますが、自分的に同じ名前を複数存在させるの嫌なんです・・・
0004デフォルトの名無しさん
2010/03/09(火) 18:19:280005hidebou
2010/03/09(火) 18:46:43するというアイディアはどうでしょう?
0006某330
2010/03/09(火) 18:56:17あと、F5 を押すと MSHTA 同等になるざます。
(メニューとか右クリックとかはそのままですが)
0007hidebou
2010/03/09(火) 19:08:550008hidebou
2010/03/09(火) 19:11:52しばらくお待ちを。
0009hidebou
2010/03/09(火) 19:23:193回MessaeBoxが表示されると思うのですが、その結果を教えてください。
0010hidebou
2010/03/09(火) 19:36:570011デフォルトの名無しさん
2010/03/09(火) 20:17:27開始初期CommandLine
"R:\test.exe"
第一引数認識文字列
空
絶対パス結果文字列
空
ビルド情報
HTABOX
Mar 9 2010 19:16:08 リリース
0012hidebou
2010/03/09(火) 20:20:45起動はコマンドラインでしょうか?それともファイル名を指定でしょうか?
0013hidebou
2010/03/09(火) 20:32:22引数を認識していませんね。明日までの宿題にさせてください。
ご迷惑をおかけします。
0014hidebou
2010/03/09(火) 21:03:30時で結構ですから動作をご確認ください。
0015デフォルトの名無しさん
2010/03/09(火) 21:07:07エクスプローラからダブルクリックなどで起動した場合も同様。
コマンドプロンプトから実行した場合はメッセージボックスは一度だけ。
ファイル名を指定して実行の場合は
r:\test r:\test.html
開始初期CommandLine
"r:\test.exe" r:\test.html
第一引数認識文字列
r:\test.html
絶対パス結果文字列
r:\test.html
で正常に起動しました。
引数を指定しない場合はファイラから起動した場合と同様です。
0016デフォルトの名無しさん
2010/03/09(火) 21:13:08だいたい正常に起動するようになりましたが、
コマンドプロンプトから引数指定の場合はうまく行きません。
0017hidebou
2010/03/09(火) 21:26:25お詫びに粗品として旧HTABOX256Kスペシャルバージョンを置きます。
ttp://kuroda.bglb.jp/htabox/HTABOX2.lzh
0018デフォルトの名無しさん
2010/03/09(火) 21:32:16言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0019デフォルトの名無しさん
2010/03/09(火) 22:48:38現状のメニューだけだとちょっとまだ使えないから何も出来ないけど、頑張って下さい。
0020hidebou
2010/03/09(火) 23:34:29自分が使う為に作り始めて、こつこつ成長させてきたソフトなんですが、
書いてしまうと書く側のエゴが出てしまうんですね。ここでいろんなご意見
をうかがって、プログラムなんて書いたこと無い人が書いてみようかと思う
環境を作れたらいいなと思っております。
0021hidebou
2010/03/10(水) 08:29:19だった起動時読み込みファイルという概念を導入して、
[STYLE_EX]hoge|hoge;
[STYLE]hoge|hoge;
で設定するだけというのが簡単でいいのではと、
あらゆるAPIは追加可能なんですが、
どっかの外人さんの書いたなんとかみたいに、
単にC++を遠まわしにやるだけっだら意味ないと思うのです。
0022hidebou
2010/03/10(水) 08:35:15HTABOXコアの場合APIを使えるのは起動後なんです。軽量なHTMLの場合既に
表示された後になるかも知れません。たとえ一瞬でも表示されたスタイルが
変更されるのは美しくないだろうという理由もあります。
0023hidebou
2010/03/10(水) 08:45:12HTMLを実行するとか、さまざまなオプションを付けることもできます。私は
この方向で行こうと思っているんですが、異論のある方いらっしゃいますか?
0024デフォルトの名無しさん
2010/03/10(水) 10:17:40windowsのコンポーネントに依存しないのなら他のプラットフォームでも稼働するのかな?
0025hidebou
2010/03/10(水) 10:30:23スクリプトのみです。HTMLも独自パースが理想ですが、IEと同じ大きさの
巨大なプロジェクトとなりますので個人では支えきれないと考えています。
0026hidebou
2010/03/10(水) 10:35:13ttp://kuroda.bglb.jp/htabox/HTABOXCORE.lzh
0027デフォルトの名無しさん
2010/03/10(水) 10:37:31速攻の回答ありがと
そうか、他のシステムには移植できないのか。
ieコンポーネントは化け物だからしょうがないかもね(つかffとかもコンポーネントベースになればいいのに)
0029hidebou
2010/03/10(水) 12:45:30任意な事案項目、傷病者項目をデータとして取り出したり、国表統計
月報統計を出力するサービスの準備を開始します。
HTABOXコアをこういったピンポイントなサービスを提供する手段として
捕らえていただければより深いご理解がいただけると思います。
0030hidebou
2010/03/10(水) 15:15:32単純にこの形式のデータを報告してくださいが行われた場合、2重にデータを作成し、突合するという本末転倒な状態
となります。かといって中央官庁が各自治体の御用聞きをおこなってシステムを設計するはずもありません。
私はこの隙間を埋めるソフトウエアサービスを提供することが自分に課せられた使命のひとつだと思っています。
0031hidebou
2010/03/10(水) 15:42:18大きな力に押しつぶされるでしょう。
しかしHTABOXシステムはそれを可能にするために書かれたソフトです。
0032hidebou
2010/03/10(水) 21:50:02が、ソフトウエアで解決できるのであれば、どんどん開発して発表してください。
その業務のつらさを知っている人間だけがそこにフィットするソフトを書けるのです。
まだ生まれたばがりのHTABOXコアですが、そんなときの道具になれるよう努力してゆ
きますのでご指導お願いします。
0033hidebou
2010/03/11(木) 07:49:35「どうしてソース隠すことにこだわるのか?」についてお話します。
答えは「書いた人のアイディアがお金にならなければ人は育たない」と考える
からです。どんなに優れた発想でソフトを作っても大手企業さんがその拡張版
をすぐ出すようでは書いた人の苦労って水の泡ですよね。
もちろん、ソースを公開し共同開発して人類共通の英知とするっていうのも素
晴らしいとは思いますが、それは片手間にそんなことをしても食べていける人
の場合で、少なくとも私にそんな余裕はありません。
0034hidebou
2010/03/11(木) 08:34:59いらないのですが、そうじゃないユーザーのアイディアをいかに簡単に具現化
して、保護するかというテーマで考えた結果が「HTML Applicationでソース隠
蔽」だったわけです。
でも旧HTABOXではMSHTA.EXEの壁を越えられず、最終的に名前パイプ経由とい
う消極的な手法しかとれませんでした。これはデバッガでこそ見えないものの
オブジェクトの単純GETで関数コードが見えてしまいます。
MSHTA.EXEを自分で書ければその問題を解決できるのは明白でしたが当時の私
にそのスキルはありませんでした。
0035hidebou
2010/03/11(木) 08:52:42あり、この世から消し去りたい事実となったのです。
HTABOXシステムとかHTABOXコアというネーミングはHTABOXという検索で旧HTABOX
の事がヒットしないようにという単純な理由です。勿論、現状の隠蔽手法にも穴
が発見される可能性はありますが、だったらこうすればという対策を直ぐ発想で
きるとこまで研究したつもりです。
0036hidebou
2010/03/11(木) 14:34:19には流用できないだろうと思うものです。しかし、十分に経験を積むとアルゴ
リズムは無視して、結局「どのCOMまたはどのAPIを使っているのか」を見るだ
けで内容が推察できるようになります。
そいう観点から見た場合ソースが長大で難解に書かれていたとしても目くらま
しにはなりません。また、ネイティブコンパイラの場合リリース前に配布EXE
をメモ帳で眺め、要所となる手続きが推察不能であることを確認すべきです。
0037hidebou
2010/03/11(木) 14:54:36「書いた人の汗が報われる」
というごく当たり前でフェアなルールを導入しましょうということです。
0038hidebou
2010/03/11(木) 19:57:59フトの配布形態、ビジネスモデルを実現できることを説明します。
HTABOXコアでフレームアプリケーションを作成し、子フレームをURL上のもの
とします。サーバーには認証を設定せず、フルスペックなフリーソフトとして
Vectorに投稿します。サーバーのログを監視すればユーザーの利用状況が判り
ます。リリース当初はユーザーからの報告でバグフィクスが必要となりますが
サーバー上のファイルを更新するだけで即座に対応することができます。
つまり、リリースしながら手元にあるという状態を作り出すことができます。
0039hidebou
2010/03/11(木) 20:12:10ックダウンさせ、フルスペックの機能が必要であれば別のソフトをダウンロー
ドするように促します。別のソフトの内容は当初のフルスペックバージョンで
あり、子フレームURLには認証を設定します。あとはアカウントを販売するだけ
です。
従来の静的配布ではフルスペックを配布した後に制限を加えるなどということは
できませんが、HTABOXコアならあたりまえのように実現できます。Vectorで何を
基準にソフトを審査しているのかは知りませんが、少なくとも一部をURL上の子
フレームとしている私のHTABOXエンコーダーが承認されていることは事実です。
0040hidebou
2010/03/11(木) 23:32:44HTABOXコアはMSHTA.EXEとは比べ物にならないくらい自由度が高い環境です。
逆な観点から言えばそれを使用する側の強い倫理観が求められます。もし、
この技術が悪用されるなら個々のHTABOXコアにシリアルを埋め込んで名前を
固定し申請がなければ使用できない状態にせざるを得ないでしょう。
私は決してそんな日は来ないと信じています。
0041hidebou
2010/03/12(金) 06:13:40是非知っていただきたい事は書かせていただきました。
今一番重要なのは、実際にこの環境を使ったサービスが成功するのか否かです
から、しばらくはHTABOXコアを使った具体的サービスプログラムの作成に重心
を置きたいと考えています。このスレッドに直ぐレスポンスできないかも知れ
ませんがお許しください。
もっと荒れるかと思ったのですが、つまらないつぶやきにお付き合いいただい
てありがとうございました。
ttp://kuroda.bglb.jp/
0042デフォルトの名無しさん
2010/03/12(金) 16:34:03言葉を目にし、HTABOXコアがいかに魅力的なソフトであるかが伝わって
きました。
HTABOXコアの誕生によって、多くのプログラマーの汗が報われる事を願って
やみません。hidebouさんのサービスプログラムの成功を、心から期待して
おります。
0043hidebou
2010/03/12(金) 19:46:39もう50才になろうとする爺ですが、爺になると開き直りの境地の達します。
万人からアホ呼ばわりされたとしても、たった一人の方の心に残る何かを
残せたらそれでいいじゃないかと...
ですから少し泣かせてください。ありがとう!。
0044hidebou
2010/03/13(土) 16:38:31つぶやかせてください。テーマは「C++とスクリプト」になるでしょうか。
バイナリの再利用というと響きはいいですが、要は他人の褌でいかに相撲をと
るかの工夫なわけです。C++が一般的になる前は「関数」がライブラリを形成
していたわけですが、「クラス」という概念を導入し単一アドレスへの問い合
わせで他言語からもバイナリモジュールをコールできるようにしたのがCOMだと
理解しています。
0045hidebou
2010/03/13(土) 16:50:41ていた場合、その実行速度はどんな言語でもほぼ同一となります。これは
Microsoft Office系のオブジェクトをC++で操作したところで早くならないこ
とから理解できると思います。こういう動作は主にスクリプトで書くべきです。
0046hidebou
2010/03/13(土) 17:08:32でラップされていた場合「そういう名前あります?」「ああIDはこれですよ」
「じゃそのIDでInvokeしますね」が繰り返されるわけですから、膨大な時間
リソースを消費します。それはC++で書くべきでしょうとなるわけです。
0047hidebou
2010/03/13(土) 17:33:09スクリプトではVARIANTのvtしか型を限定する要素がありませんが、C++では明
確な型宣言が必要ですので、勘違いがおこりにくいのです。久しぶりに目にす
るソースファイルにたいしたコメントが無くても即座に修正作業に入れます。
C++でWIN32アプリを書くと痛感するのですがGUIの形成は地獄絵図になります。
「メインウインドウにボタンを一個置いてクリックしたらダイアログを表示し
ましょう」というプログラムを書きながら「onclick="hoge()"」で済む世界が
天上の世界に思えるのです。
0048hidebou
2010/03/13(土) 17:41:03済ませてしまいたい。という発想でHTABOXコアを眺めていただければ、狂気
乱舞する方がいらっしゃると思うんですが、だめですかね。
0049hidebou
2010/03/14(日) 03:52:46Microsoft Script Control
msscript.ocx:{0E59F1D2-1FBE-11D0-8FF2-00A0D10038BC}
の機能にプラスしてHTML解釈によりGUIが形成できるCOMDLLを提供すると
喜んでもらえるんでしょうか?
HTABOXコアがやってる事の順番変えるだけで供給できるんですが。
0050hidebou
2010/03/14(日) 04:16:11せている場合が見受けられますよね。要はそれと同じ事をWIN32環境でできる
ようにすれば.....ということはCOMDLLよりスタティックリンクできるライブ
ラリの方がいいかも知れませんね。
今のところ余裕が無いのですぐ設計するわけにはいきませんが。
0051hidebou
2010/03/14(日) 10:52:22話します。「プログラミング新規参入者の減少」についてです。
私の住んでいる田舎の場合、どこの書店でも売れない本は置きません。ここ数
年で開発言語系の書籍は激減しました。プログラミングしたいという人はWWW
経由で調べてるからという理由ならいいでしょうが、現実は違うと思います。
0052hidebou
2010/03/14(日) 11:05:42当時はそこでちょっとしたゲームとかを書くと、それは誰も見たことがない最
先端テクノロジーですので「凄い!」になるわけです。その後業務用OSである
PTOSでBASICをいじり、MS-DOS、Windows、とプラットフォームが変化してゆく
歴史を目撃しているわけですが、今までいかに不自由だったかという理由を踏
まえると納得できる規格の変化も、いきなり新たな規格を突きつけられた人間
には理解できないという現象が生じています。
0053hidebou
2010/03/14(日) 11:17:23他のプログラムは今動いているプログラムを停止しない限り起動できませんで
した。その代わり、ディスプレイもキーボードも自分が好きなようにコントロ
ールできますから、今のようにWindowsから肩を叩かれて動く配慮は必要なか
ったのです。プログラム特に業務で使うものは現場で作るものという風潮が
まだ残っていたと思います。事実私のような人間でもちょっと本を読めば実用
的なプログラムが書けたのです。
0054hidebou
2010/03/14(日) 11:26:25いう欲求はごく自然な流れです。今までキーボードは直接のハードウェア割り
込みだったものが、そうは行かなくなります。CPUは結局ひとつのストーリー
しか理解しませんから、常駐する親プログラムがキーボードを監視して、どの
プログラム向けに入力されたものかを子プログラムへ通知する必要が生じるの
です。これがWindowsメッセージです。
0055hidebou
2010/03/14(日) 11:41:45ブラをもっと使いやすくしましょうという規格として存在しました。重要なの
はこの時主導権を持っていたのはANSIという営利とは関係の無い協会であった
ことです。規格が定まればバイナリのライブラリは共有できる資源となります
ので、結果的にプログラマーはハードウェアを意識せず標準関数を使いプログ
ラムが書けるのです。
0056hidebou
2010/03/14(日) 11:51:47名前の衝突が頻繁に発生します。Cでの名前は最終的にただのアドレスに変換
されるマークなのですが、リンク中に名前の衝突が起これば致命的な破綻と
なります。複数の人間がひとつのプロジェクトに関わる場合、自分が使える
名前の範囲をペーパーで確認するといった作業が必要になるわけです。
C++のクラス、名前空間はそれを解決する素晴らしい英知なわけですが、その
苦労を知っていない、若しくは想像できない人間にとって、これほど煩わしい
ものは無いわけです。
0057hidebou
2010/03/14(日) 12:03:08そこに向かって動的なバイナリモジュール呼び出しをしようとするものです。
実行時の名前解決ですので、ソースコードに名前情報が含まれ、ソースが暴か
れるという欠点はあるのですが、人間も賢くなったものだなぁーと思いました。
Java裁判がおこるまでは...
0058hidebou
2010/03/14(日) 12:20:22Microsoft社のJava仮想マシンはSUNのそれを完全に凌駕していました。当然
Windowsには同社しか知りえない情報があるわけですから当然です。
悲劇は起こりました。正統な英知の集積であるJ++は息の根を絶たれることに
なってしまいました。高速なJavaという夢はこれで終わったのです。
0059hidebou
2010/03/14(日) 12:37:55Microsoft社は所詮メインの開発プラットホームにはなり得ない仮想マシンを
意地になって開発し続けます。それにかかるコストを回収しようとあたかも
最高のものであるかのようにコマーシャルし続けます。結果的にユーザーは
プログラミングそのものに失望し、現状に至っているというのが私的分析です。
0060hidebou
2010/03/14(日) 12:50:43がポケコンでゲームを書いた時のように、ちょっとした自作プログラムに自身
が感動できるか、友人が「凄い!」と言ってくれるかだと思います。
私の息子達もそうなのですが、プログラミング=ビデオゲームだと思ってい
ます。また、WWWの発達によって何でも目にできますから地味なアプリケーシ
ョンを見せても「何これ?」になるわけです。開発環境に対する情報はめちゃ
くちゃ、苦労して書いても誰も見向きもしない。開発環境を誤ればソースコード
は丸見え。これで「さあプログラミングしましょう」と声高に叫んでも、
若い人がついてくるわけありません。
0061デフォルトの名無しさん
2010/03/14(日) 12:54:48Java VMが存在していたらならば
かなり歴史は変わっていたでしょうねぇ
.NET Frameworkが産まれなかったかも
0062hidebou
2010/03/14(日) 13:07:41大げさに聞こえるかも知れませんが、この国は若者たちの英知無しでは滅び
ます。
どんな些細なプログラムでも自分が使って便利だと思えるツールは誰かが喜んで
くれます。「ありがとう」という声は必ず作り手のパワーとなります。
いかにそれが虚しく空を切ろうが、私は死ぬまで叫び続けようと思います。
「さあプログラミングしましょう」
0064デフォルトの名無しさん
2010/03/14(日) 13:13:38いえいえ、手軽にGUIを構築できるHTABOXには期待しています
0065hidebou
2010/03/14(日) 23:51:36訂正させてください。
57:ソースコードに名前情報が含まれ->クラスファイルに名前情報が含まれ
0066hidebou
2010/03/15(月) 01:57:42「私が抱いている具体的な構想」についてです。
こんな環境を提供したところで、みんなが急にプログラム書き始めるとは思っ
ていません。プログラムを発表できる場を提供することが絶対必要だろうと
考えています。今までの私の断片的な書き込みから想像できると思いますが、
「プログラムの100円ショップ」を実現したいんです。
0067hidebou
2010/03/15(月) 02:12:29単純に労力が金額に換算できるとすれば、本来1時間かかる面倒な作業をその
プログラムで回避できればその時給分の価値があるはずですよね。実際にオー
ダーメイドの業務アプリケーションなら結果的にコストダウンだと判断されれ
ば導入されるはずです。
日常のツールでそれを主張しても受け入れられないでしょうから「100円」が
いいのではないかと考えています。
0068hidebou
2010/03/15(月) 02:35:14いなのが沢山あって、手作業じゃ面倒だし、安かったらお金で解決しちゃおう
というニーズに答えるシステム作りをしたいんです。
HTABOXシステムは実行時のプログラム配布を実現できますので、場合によって
は「使っただけ課金」というシステムにすることもできます。
0069hidebou
2010/03/15(月) 02:51:43です。従来は静的に配布される高機能なエディタの正規表現機能を使って小文
字に変換するしかなく、結局お金も時間もかかったわけですが、そういった用
途のためのツール群がオンライン上にあって必要な時にチョイスできる状態。
プログラムを投稿する側もエディタ全体を設計して競い合う必要はなく、自分
が得意とする分野のアクションで個性を発揮し、確実に収益が上がる状態。
私がおぼろげながらも、目指しているのはそんな未来なんです。
0070hidebou
2010/03/15(月) 03:11:13「プログラム書くってステータスの高い仕事なんだ」と世間が気づけば
後に続く人も出て、私の仕事も一段落なのかなぁっと思っています。
0071hidebou
2010/03/15(月) 03:26:27であることろの「HTABOXコアに対するご意見ご要望」を気兼ねなくお寄せく
ださい。
「プログラムは書いたことがないんですが」という方のご意見ほど貴重な
ものはないと考えております。そういう方をメインターゲットに書いたツ
ールなんですから。
0072デフォルトの名無しさん
2010/03/17(水) 01:54:05まーなにはともあれ体壊さんようにがんばったってや〜
0073hidebou
2010/03/17(水) 08:21:27私は3年間このことだけ考えて、このことだけ見つめてきたわけですので、
どこか感覚がズレてないかをここで確かめたいという気がしてるんです。
暖かいお言葉ありがとう!
0074hidebou
2010/03/17(水) 23:19:33テーマは「ソースコードの美しさとは」になるでしょうか。
私にとって至福な時間というのは、自身が書いたソースコードに見惚れてい
るときです。決して動作にホレボレするのではなく、ソースコードなのです。
ただし、その美しさは「機能美」でなければなりません。美術彫刻は確かに
美しいわけですが、機能が存在しないという点で物足りなさを感じます。
0075hidebou
2010/03/17(水) 23:34:09結果的に美しいという形の方に心を奪われます。プログラムで言えば「速度」
です。
世の中には「アーティスティックな美しいコード」のために存在する言語も
あるそうですが、そういうことは「美術」か「文学」の世界で論じるべきこ
とであって、最終的に情報処理の手段にすぎないプログラミングコードに
速度を犠牲にした美しさを求めるなどナンセンスです。
今夜は庄内平野も久しぶりに雪景色です。
0076hidebou
2010/03/18(木) 10:52:00の部分は各自のアプリケーションタイトルに置き換えてくださいね。
<script language=javascript onreadystatechange="">
window.onCreate = function()
{
var WM_SYSCOMMAND = 0x0112;
var SC_MAXIMIZE = 0xF030;
var Hwnd = WIN32.FindWindow("HTML Application Host Window Class", "救急オフラインユーティリティー");
if(Hwnd != 0) WIN32.SendMessage(Hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
}
</script>
0077hidebou
2010/03/18(木) 11:30:14どこから出てきたのか不思議に思うかも知れませんが、WINUSER.Hにこの辺の
定数はずらりと書いてあります。ということは、無料版のVC++をダウンロード
してWIN32SDKのヘッダを眺めているだけでもずいぶんと賢くなれることを意味
します。
0078hidebou
2010/03/18(木) 12:10:45意見が生じるのはごもっともなんですが、一旦決めた「規格」は動かしがた
いものになります。
不親切に感じるかも知れませんが、できるだけWIN32APIのイメージのまま実装し、
各ユーザーの好みで、関数としてくくってもらう方が望ましいと考えています。
0079hidebou
2010/03/18(木) 15:32:42いからです。アルゴリズムをスクリプトで考えてそのままVC++のソースへ貼り
付け、型宣言を変えることはよくやります。勿論その逆もありです。
なんでVBScriptはサポートしないの?っていう声があれば技術的には何の問題
もなくサポートできるんですが、VBScriptじゃないと書けないという方はいら
っしゃるのでしょうか?
0080デフォルトの名無しさん
2010/03/18(木) 19:03:46エクセルVBAから入って、vb、vbscriptなどほんの少しかじりました
結構そういう方は多いのかなと思いますがどうなんでしょ?
最初にvb系から入ってしまうと、{}や行の最後の;などの表記のある言語に違和感を
覚えてしまいます
0082hidebou
2010/03/18(木) 20:16:40「旧HTABOXのようにファイルを単一EXEにできること(リソース格納)」
「メインウインドウのスタイルをコントロールできるようにすること」
「VBScriptのスクリプトブロックでもエンコードできること」
0083hidebou
2010/03/18(木) 21:22:18GDIで単純な図形をスクリプトから描けたらいいかなぁと思っています。
LineTo(x, y)みたいな関数があって、描画結果をバッファリングで保持。
小学生なんかが喜んでくれるんじゃないかなぁっと思うんです。
0084hidebou
2010/03/19(金) 04:05:36ブリッジするものを作ればいいわけですよね。
0085hidebou
2010/03/19(金) 04:32:02手法を紹介します。「MSE7.EXEの活用法」です。
Microsoft Office2000以降にはスクリプトエディタが存在します。2000の場合
は確かMSE.EXEでそれ以降はMSE7.EXEですよね。ただし標準ではインストール
されないので、完全インストールしてofficeがインストールされたフォルダを
眺めると必ずいらっしゃいます。
0086hidebou
2010/03/19(金) 04:38:43す。また、WORDやEXCELのEXEがあるフォルダの親を見るとMseNewFileItemsと
いうフォルダがありますが、ここにはMSE7がファイルを新規作成する場合の
テンプレートが存在し、デフォルトではcharset=UTF-8のHTMLとなっています。
0087hidebou
2010/03/19(金) 04:48:47HTML Page1.htmがメモリ上に作成されます。編集画面を右クリックすると
ページのプロパティーを変更するダイアログが表示されますので、私の場合
HTML3.2 -> HTML 4.0、UTF-8 -> shift-jis、VBScript -> JavaScript
に変更して先ほどのテンプレートファイルHTMLPAGE.HTMを上書きします。
一旦MSE7.EXEを終了して再度起動します。
0088hidebou
2010/03/19(金) 04:58:10ートを置き換えましたので、自分の望むキャラクタセットのHTMLなはずです。
HTMLの適当な位置にカーソルを置き、編集->スクリプトブロックの挿入->クライアント
を行うとスクリプトブロックが挿入されます。作成されたスクリプトブロック
内にカーソルを置きCTRL + jを押してください。知らなかった人は感動の涙
にむせぶと思います。
0089hidebou
2010/03/19(金) 05:08:21行の左に赤丸が付いた状態とします。デバッグ->開始やF5でHTMLを開始します。
MSE7の場合は未保存だから保存しますか?ときかれるのでyesと答えます。
ソースコードはブレークポイントで停止しますので、デバッグ、クイックウォッチ
等で変数の状態や場合によってはdocumentと入力して全体の状態を確認します。
この画面を見て知らなかった人はもう一度涙を流すはずです。
0090hidebou
2010/03/19(金) 05:14:15->スクリプトのデバッグを使用しない がデフォルトではオンですので、チェック
をオフにしないと停止しませんから事前にオフにしておいてください。
0091hidebou
2010/03/19(金) 05:22:39又は最後まで実行しないと、他のアプリが動かないほどリソースを消費する事
に注意してください。これでwindowやdocumentから芋ずる式に全てのオブジェ
クトの状態を眺めているのと、手探りでコーディングしているのとではハイテ
ク兵器と竹やりほどの差が生まれると思います。
0092hidebou
2010/03/19(金) 05:34:22画面上ではテーブルがそのまま行列に見えるので、メニューのイメージどお
りなわけです。onclickが設定してWIN32APIを使わなければMSE7の状態でデバ
ッグできます。
実はここでHTABOXコアをActiveXObjectするとWIN32APIが使えるのですが、
当然EXECOMサーバーとしてHTABOXコアをレジストリ登録しなければなりま
せんので今のところ非公開機能としています。
0093hidebou
2010/03/19(金) 06:07:02ないブラウザでしたので、私はIE8そのものを使った事がありません。
0094hidebou
2010/03/19(金) 07:06:08トだったりするとインスタンスの生成そのものがエラーとなりますが、スク
リプトをHTML中のブロックではなく単独JSとして作成し、開けばコードヘル
パーが効いた状態となります。ブレークポイントはCSCRIPT.EXEの規則に則る
必要があるのですが、面倒なときはわざとエラー行を書くとMSE7.EXEがデバ
ッガとして起動します。
0095hidebou
2010/03/19(金) 07:24:04し違うことにも注意が必要ですから、ご自身の環境でファイルの拡張子をhta
にしてみたりして動作を確認してください。
私が「HTML Applicationは生産性が高い」と考える最大の理由はこのMSE7.EXE
が存在することなのです。「救急オフラインユーティリティー」は250Kほどの
ファイルですが、MSE7.EXEが無かったらC++で全部書いた方がメンテナンスしや
すいという判断をしたでしょう。
0096hidebou
2010/03/19(金) 16:57:23ttp://www5a.biglobe.ne.jp/~javajava/ari/
に作成しました。もしMicrosoft Officeをお持ちの方でMSE7.EXEを使ったこと
が無いという場合は一見していただければ概要を理解していただけると思います。
MSE7.EXEはHTML用のVisual Studioなんです。
0097hidebou
2010/03/19(金) 22:31:04書き込み不能媒体で配布されても動作することをガイドラインとしています。
したがって単一EXE格納はすべてリソース格納したres://経由とする予定です。
また、この機能はエンコードを同時に行われると考えています。
0098hidebou
2010/03/20(土) 00:01:14ですから旧HTABOXのように何でもかんでも格納できるものにはなりません。
SRCでパスを指定するものなら格納してリソース参照に置き換えられると考
えています。
0099hidebou
2010/03/20(土) 07:42:08エンコード動作時にソースHTML、画像等、アイコンをリソース格納し、
エンコード済みのHTABOXコアは著作保護の為に再利用できないという
ルールがいいのではないかと考えています。
0100デフォルトの名無しさん
2010/03/20(土) 11:10:47ました。昨今、書店ではプログラムに関する書籍も減り、為になる書籍を手にす
ることが少なくなりました。hidebouさんのホ-ムページは、とても参考になりました。
0101hidebou
2010/03/20(土) 11:32:20ありがとうございます。
VMLで思い出したのですが現状ではエンコードすると<html>タグをHTABOXコア
で生成するためVML無効になってますね。
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns="http://www.w3.org/TR/REC-html40">
は決まり文句みたいなので出来るだけ早く対応したいと思います。
0102hidebou
2010/03/20(土) 21:33:33「動かないよ!」「エラー後にPCが不調だよ!」「こんなん使えないよ!」の
嵐になるんじゃないかとうなされていたのですが、暖かく見守っていただいて
ありがとうございます。
前職では若くしてお亡くなりになる方を多く見たものですから、この年まで生
きることができ、しかも私の書いたものに興味を持っていただける幸運に感謝
しております。
0103hidebou
2010/03/21(日) 11:56:14ttp://kuroda.bglb.jp/htabox/htaboxcore.lzh
サーバーが返すエンコードの仕様もやや変更されましたので
バージョン1.20以前のエンコーダーはサポート外となります。
0104hidebou
2010/03/21(日) 12:14:23IE以外のエンジンで動かすことは無いわけですので積極的に使用すべきです。
FrontPageやMSWORDでHTMLをデザインすればワードアートやオートシェイプを
画像ファイル無しに使用することができます。
0105hidebou
2010/03/21(日) 16:39:42余計な変換を自動的に行うものですから痛し痒しのジレンマに陥りますね。
FronPage内のMSE7ならそれは起こらないのですが、今度はActiveXできない。
逆にMSE7でベースを作成し、最後の装飾としてワードアートを追加するのは
ありかもしれません。
0106hidebou
2010/03/22(月) 09:53:551.30ではソースコード全体をエンコードし<html encode='true'></html>の中
に保存しています。したがってVML等HTMLタグのアトリビュートが必要な場合
でも破綻しないことになります。また、HTMLタグの外に何かが書いてあった
場合もそのまま反映されます。
0107hidebou
2010/03/22(月) 11:29:55「救急オフラインユーティリティー」はあまりにベタな名称なので
「Medical information analysis system for ambulances」の頭文字をとって
MIASAサービスと名づけました。HTABOXシステムはクライアントCPUで動く
オンラインサービスを実現できますので20K程のGETにレスポンスするだけで
250Kを超えるスクリプトを認証付きでコントロールできるはずです。
ttp://kuroda.bglb.jp/miasa/index.htm
0108デフォルトの名無しさん
2010/03/22(月) 12:26:35そもそも、なぜテキストベースでバイナリデータではないのでしょうか。
0109hidebou
2010/03/22(月) 17:12:31「html タグをエンコード時に残している」のは<html xmlns:v="....をそのま
ま再現する必要からです。
「バイナリデータではない」のはHTTP経由で破綻しないこと、HTML中のコメン
トとしても破綻しないが要求されるからです。
0110hidebou
2010/03/22(月) 17:18:03回答が的を得ていない場合は気兼ねなく質問してください。
0111hidebou
2010/03/23(火) 10:27:44MSWORDにVMLを置きPNG代替オプションオンでフィルター後HTMLを出力し、
生成された画像フォルダからPNGをコピーしMSE7で<IMG>参照するという
先祖がえりした手法になりました。静的なVMLはこれが一番確実ですね。
0112hidebou
2010/03/23(火) 23:35:19という思想の元に開発したのですが、>>38で説明したようにHTABOXコアだけで
も自宅サーバーでビジネスができます。
私なりの小規模サーバーに対する考え方を説明します。参考になる部分もある
かも知れません。
0113hidebou
2010/03/23(火) 23:39:26絶対に中断が許されない業務の場合「現有」「予備」という二重体制をしき
ます。この場合「予備」は非常用ですのでやや能力が劣ってもかまいません。
0114hidebou
2010/03/23(火) 23:46:59の体制をしくべきです。私の場合はNECが投売りした14kのサーバーを迷わず
2台購入しました。若干のオプションを加えても50kにおつりがありました。
現在は実験機と本番機という扱いですが、将来は両者を定期的に同期し、
障害がなくとも切り替えて、有事に備えることになります。
0115hidebou
2010/03/23(火) 23:54:25はNTT純正のものとし、プロバイダ、回線、ルータに障害が発生した場合は
単純につなぎ変えて80番を開ければ対応できるようにしています。こういった
柔軟な対応が可能なのはダイナミックDNSを選択しているからです。
0116hidebou
2010/03/24(水) 00:07:47シュミレーションは大変重要ですし、復旧にかかる時間を短縮する最も単
純で確実な手法が「安いのもを2つ用意する」ことだと考えています。
0117hidebou
2010/03/24(水) 08:55:40具体的には非.NETであることをガイドラインとしています。
オークションでWindows2000ServerやSQL2000Serverがあったら是非確保して
情報が存在するうちにその取り扱いを研究することをお勧めします。
0118hidebou
2010/03/24(水) 22:28:39だわるのかについてお話します。テーマは「実行権は誰のものか?」です。
従来の静的に配布されたなアプリケーションの認証は、認証前と認証後のバイ
ナリを比較検討されてしまえば、必ずクラックされる運命にあります。しかも
WWWの普及によって、たった一人のクラッカーがそれを発見すれば、瞬く間に
その手法は周知の事実となってしまいます。
0119hidebou
2010/03/24(水) 22:41:02実行体とならないプログラムを配布すること」だと考えます。
今までもソフトウエアの多くは「販売」ではなく「ライセンスの供与」だった
わけですが、実際にその契約形態は絵に書いた餅でライセンスを供与した側が
「今日から使っちゃだめ!」と言ったところで意味を成さなかったわけです。
0120hidebou
2010/03/24(水) 22:53:53ンス契約は成立しませんから、今後のソフトウエア配布は総てHTABOXコアのよ
うなものになって行くと考えます。使う側からしてみれば息苦しく感じるかも
知れませんが、結局、いくばくかの収益が上がらなければソフトウエアは生ま
れませんし、しつこいようですが、それを目指す「人」も育ちません。
0121hidebou
2010/03/25(木) 01:54:55う。そのこと自体は必然でしょうが、そのプログラミング環境規格は単に企業
の利害で決定されてしまうでしょう。中間言語やスクリプトでどんなに優れた
アプリケーションを書いても、直ぐにそのエッセンスを横取りされるでしょう。
私がどんなにあがいてもそんな未来がそこまで来ています。
0122hidebou
2010/03/25(木) 22:05:52イブラリ情報です。通常はMSE7のオブジェクトブラウザでひとつの定数とか
関数を眺めるしかないわけですが、複数のオブジェクトが絡み合う場合、全体
像が見えないと混乱します。私は自分でタイプライブラリ解析ツールを書いて
結果をソースに貼り付けてスクリプトを書きます。scrrun.dllのデータです。
ttp://www5a.biglobe.ne.jp/~javajava/ari/Scripting.txt
0123hidebou
2010/03/25(木) 22:20:56クラスには、GetTypeInfo(UINT as itinfo, UI4 as lcid, VOID as pptinfo) return VOID
が存在します。スクリプトからこれを呼び出すことはできませんが、C++なら
ITypeInfoポインターからこの情報を引き出すことができます。
0124hidebou
2010/03/25(木) 22:36:58クリプトを丸写ししてなんとか動くけど、その理由はさっぱり解らないという
状態になると思います。今書いているものが一段落したらタイプライブラリ解
析サービスも開始しようと考えています。
msxml3.dllです。眺めているとプログラムのアイディアが浮かんでくるかも?
ttp://www5a.biglobe.ne.jp/~javajava/ari/MSXML2.txt
0125hidebou
2010/03/26(金) 06:34:31だと思います。特にXMLは劇的にスクリプトを設計しやすくします。
単純な例として自分のPCの全ファイル情報を一旦取得し、あるアプリケーショ
ンがインストールされた後と比較するプログラムを書くとしましょう。
0126hidebou
2010/03/26(金) 06:42:05で、構造体が正しく情報を保持しているのかを確認したくなります。
この時設計の段階から構造体ではなくXMLDOMにデータを保存すれば、saveする
だけで全情報を確認できますし、データの永続化にもなります。また、特定の
条件のファイルを検索する場合もXPathを指定した柔軟な条件設定ができます。
0127hidebou
2010/03/26(金) 06:55:12に解説して公開することは重要だろうと考えています。正直そういった解説が
なかったので、HTML Applicationは書きやすいはずなのに、情報が無くて使え
ない手法。悪い言い方をすればアンダーグラウンドな手法と思われているのだ
と思います。
3D
http://svn.dojotoolkit.org/src/tags/release-1.4.3/dojox/gfx3d/tests/test_cube.html
ドローソフト
http://svn.dojotoolkit.org/src/tags/release-1.4.3/dojox/drawing/tests/
グラフ
http://svn.dojotoolkit.org/src/tags/release-1.4.3/dojox/charting/tests/
Flashを使わないのがミソ。たしか、VMLやShilverLightを使っていたと思った。(FFではSVG)
http://svn.dojotoolkit.org/src/tags/release-1.4.3/dojox/charting/tests/test_chart2d_updating.html
アニメーションもできるぞ。
0129hidebou
2010/03/27(土) 04:15:39貴重な情報をありがとうございました。参考にさせていただきます。
それぞれの分野で突き詰めた研究をしている方もいるものだと改めて感心しま
した。いつか子供たちがプログラミングに興味を持つきっかけとなるような簡
単なグラフィック命令系を追加できればと夢見ております。
0130hidebou
2010/03/27(土) 04:28:03が数値演算や文字列置き換えなんかに興味を示すはずがありませんから、グラ
フィック系の単純なプログラムを解説していました。しかしそれは既に絶滅した
N88-BASICでのプログラミングだったのです。
0131hidebou
2010/03/27(土) 04:34:03教員に開発言語の推移を理解する能力があるのか?必要なのか?
プログラミングという概念を理解するだけならその本は有益なのか?
しかし、どう考えても実践不可能なサンプルを目を輝かせた子供たちが見るか
と思うと、胸が痛みました。IEがあるかぎり有効な、単純なグラフィック命令
を作って子供たちに提供したいという想いはそんな動機なのです。
0132hidebou
2010/03/27(土) 15:55:43を書いて、投稿せず削除しました。理由は投稿しても意味が無いからです。
いつか子供たちが自分で作った落ちゲーやシューティングを友達とワイワイ
言いながら書き換えている姿を見たいと思いますし、それを可能にする環境
作りも私の使命だと考えています。
0133デフォルトの名無しさん
2010/03/28(日) 16:58:56http://pc12.2ch.net/test/read.cgi/tech/1256536933/
これはまだ日本語版が無いしhidebou氏がお嫌いらしい.netベースだから難しいね
0134hidebou
2010/03/28(日) 18:03:02貴重な情報をありがとうございました。
いろんなアプローチがあることは大変いいことだと思います。
HTABOXコアは初心者がとっつきやすくという事と、玄人が使えるということを
両立させたいという方向性で考えています。これは難しいことなんですけれど
小窓からWIN32APIやCOMの仕組みが見える状態がいいのかなぁっと思います。
0135デフォルトの名無しさん
2010/03/28(日) 19:25:42ttp://kmaebashi.com/zakki/lang0003.html
いっその事この人みたいに新しい言語を作っちゃうのも面白いかも
0136hidebou
2010/03/28(日) 21:07:17とても興味深いサイトですね。
「言語から」という発想は魅力的ですが、最後はC++やってもらいたいなぁっと
いうのが私のスタンスになるでしょうか。HTABOXコアの特色はWEBプログラミン
グとローカルなプログラミングを融合させようという試みでもあります。
HTMLとJavaScriptを習得すればWEBページも書けますよね。最もずるい方法が
これじゃないかなぁっと思うんです。
0137hidebou
2010/03/29(月) 09:35:45ません。初期XPの「アプリケーションの追加と削除」はこれで書かれていた
ほどOS機能の一部だったわけですが、書きやすく強力なものですから悪用さ
れて今日に至っているわけです。
0138hidebou
2010/03/29(月) 09:49:24につながる可能性が無いとは言い切れません。その場合Windows環境全体に及
ぼす被害は甚大なものになるだろうと予測されます。その意味からエンコード
動作は私のサーバーで制御できる状態としていますし、今後はアカウント登録
したユーザーのみが利用できるサービスとなる予定です。
0139hidebou
2010/03/29(月) 14:38:21を使ったプログラミングを行うわけですが、あれは入門者に混乱をもたらすだ
けで、むしろ入門者を蹴落とすトラップに思えてしまいます。
C++は演算子を再定義して自分が使いやすい言語を作れる言語と表現すること
ができると思います。iostreamの構造は確かに対称的で美しいのですが、私は
必要だと思った事はありません。誰かが作った一つの例とて眺めるだけです。
0140hidebou
2010/03/29(月) 14:49:25抽象クラスを最初から設計できるはずがありません。まず「猫」というクラス
を書き、次に「犬」というクラスを書きます。そこで同じ事を二度書いている
部分に気づくはずです。つまり複数の具象クラスを書いて、そのメンテナンス
が容易ではないことを理解できれば、共通点である「哺乳類」クラスの必要性
を感じるはずです。
0141hidebou
2010/03/29(月) 15:24:48ます。「哺乳類」クラスがあれば新たな「虎」クラスは最小限のコーディング
で済みますし、すべての具象クラスに新たなメソッドを追加する場合でも基底
クラスが知りえる情報で処理可能ならば「哺乳類」クラスに追加するだけで
済むからです。
0142hidebou
2010/03/29(月) 15:34:12いなサイトを書いてみたいと思っています。ちょっとした言い回しの違いで
本来労力やミスを軽減するために存在するC++の規格が難解で使いにくいもの
と誤解されているケースがあるように思うからです。
0143hidebou
2010/03/29(月) 19:53:41140:は「オブジェクト指向の解説」->「クラス継承の解説」です。
お詫びして訂正いたします。
0144hidebou
2010/03/30(火) 09:24:55考える必要は全く無くて「単にコピペしやすから」と考えれば素直に受け入れ
られると思うんです。
個人のプロジェクトでクラス定義をヘッダファイルにして本体と分ける必要は
ありませんからclass hoge{};の中に全部を書けば貼り付けることが容易です。
0145hidebou
2010/03/30(火) 09:47:04た関数を選んで貼り付けるよりもオブジェクトをコピペしてReadとかWriteな
んていう直感的な名前のメソッドを呼んだ方が可読性が向上しますし、
オブジェクトのバグが発覚して修正を行った場合も、それを使用する他のプロ
ジェクトへ貼り付け易いわけです。
0146hidebou
2010/03/30(火) 10:05:10ないと思うんです。そうでないとコーディングテクニックは向上しませんし、
結局、長大なプロジェクトになった時、自分が作ったスパゲッティーで具合
が悪くなってしまいます。(多分に自戒の意味を込めて)
0147hidebou
2010/03/31(水) 15:49:24コンがそのまま表示されてしまう現象を認識しました。サンプルにあるよう
なそっけないダイアログでは発生しないようです。これはちょっと原因の
究明に時間がかかるかもしれませんが次のマイナーアップデートで対応した
いと考えています。
0148デフォルトの名無しさん
2010/04/01(木) 17:13:19#include ...
#include ... // この辺は簡単に理解できる
using namespace std; // まったく理解不能
int main() // Cで関数の知識が無いと理解不能
{
cout << "Hello World!" << endl; // いきなり行儀の悪い演算子オーバーロード、まったく理解不能。
// しかもまともな説明なしであっさり通り過ぎる
}
初心者は拒絶反応起こすって
0149デフォルトの名無しさん
2010/04/01(木) 17:20:24includeも、そこにそのファイルの中身を挿入するんだろ?
でもusing namespace std;はさっぱりわからんわ。
0150デフォルトの名無しさん
2010/04/02(金) 22:26:26http://pc12.2ch.net/test/read.cgi/tech/1270139718/
0151hidebou
2010/04/03(土) 08:40:440152hidebou
2010/04/03(土) 08:56:34まいました。
using namespaceは文字通り「名前空間を使いますよ」なわけですが、私は本
番ソースコードでこれを使いません。例えばstd::stringと書いた方が読みや
すいからです。名前の衝突が起こらなければそもそも名前空間を使う必要も
ないわけですが、Cで大きなプロジェクトを書くと変数や関数に直感的な名前
を付けたつもりが、既に使われていて、新たな名前を作ることが可読性を低
下させる場合は便利な規格です。
0153hidebou
2010/04/03(土) 09:18:40私の欠点は自分が興味を持った事へはとことんダイブするんですが、他の方が
何を書いているのかを全く知らないことです。ここでこういう貴重な情報を教
えていただけると大変助かります。ありがとうございました。
NILScriptについてはこれから勉強させていただきます。
HTABOXコアのスタートはMSHTA.EXEの置き換えな訳ですが、歴代のMSHTA.EXE
はそのサイズから想像できるように「Hello World」程度のことしかしていま
せん。ならば「Hello World」プラスアルファ程度のコードでHTML Application
をより自由なものにできるという実に横着な発想なわけです。
0154hidebou
2010/04/03(土) 09:36:26ば動くことを意味します。プログラムをリリースして、それがミドルウエアで
ある場合、サポートする総てのOSを手元においてテストする必要があるわけで
すが、MSHTA.EXEの為に用意されている環境プラスアルファなら枕を高くして
眠れるだろうという安直さで書かれています。
0155hidebou
2010/04/03(土) 22:42:38こうして書き込みできていますが、両方アウトならダンマリになってしまいま
すね。私は携帯電話という物が大嫌いですから息子にでも頼んでここに事情を
報告するしかないでしょうね。
でもこうして他人のサーバーに好き勝手なことを書いて、多くの方が目を通し
ていただけること自体には感謝しています。2chって素敵な文化だと思います。
0156hidebou
2010/04/04(日) 23:49:42私が思う最短経路を説明したいと思います。勿論、遠回りがいけない事である
とは思いません。私自身何年も遠回りをしたのでこういう意見を持つことがで
きたのは事実ですから、いろいろな手法を体験し早期にその長所、短所を見抜
く事が理想ですが、老いぼれの独り言とお許しください。
0157hidebou
2010/04/05(月) 00:02:13そうでない物も存在しますが、多くの場合操作対象のファイルパスやURLや処理
におけるオプション等を実行前に指定してもらうためのユーザーインターフェ
ースが必要です。これは皆さんが見慣れているメニューやボタンです。
これは多くの開発環境で見た目通りに部品をドラッグして作成できますが、一旦
作成したデータを再利用しようとすると、使いにくい事に気づきます。最悪の
場合、自動的に生成された位置情報データがクラッシュし、最初から作り直さ
なければならない状況に陥ります。
0158hidebou
2010/04/05(月) 00:11:18ると一旦実行して見た目を確認し、数値を変化させてまた見た目を確認すると
いう作業を総てのコントロールについて行わなければならず、これも非効率的
です。
HTMLエディタでWEBページとしてユーザーインターフェースを設計すればこの
問題をスマートに解決できます。
0159hidebou
2010/04/05(月) 00:25:14知識でもあります。なぜなら、貴方の作ったプログラムを実行する前にそれを
紹介する貴方のWEBページが評価されるからです。
HTMLに関する情報を収集する場合、情報の発信用に他のブラウザを対象とする
のかアプリケーション用にIEのみを対象とするのかの判別をすることは重要で
す。officeが完全インストールしてあれば\1041\HTMLREF.CHMが存在しますから
ディスクトップにショートカットを作成して常に参照できるようにすべきです。
0160hidebou
2010/04/05(月) 00:36:42「scd56jp.exe」で検索しWindows Script V5.6 ドキュメントを入手してく
ださい。これも即座に参照できるようディスクトップにショートカットを
作成すべきです。
スクリプトに関する情報を収集する場合、HTTP経由の制約されたセキュリ
ティー環境なのか、HTAやHTABOXコアのように自由にファイル入出力が許
されている環境なのかを認識することは重要です。
0161hidebou
2010/04/05(月) 00:52:28の複雑な処理を簡潔な記述で行う事ができます。ファイル入出力、XML、HTTP
データベース、ADSI、メール送受信....etc この時、是非COMのタイプライブラ
リを俯瞰してください。その情報を提供する努力を私も行います。
0162hidebou
2010/04/05(月) 01:06:05オリジナルなCOMDLLをC++で作成してください。HTABOXコアの場合はレジス
トリに登録する必要のないプライベートコンポーネントのDLLでも機能します。
C++のソースコードを不安なく書けるようになるには確かに時間が必要かも
知れませんが、速度や柔軟性の面において最良のパフォーマンスを発揮する
ことができます。既存のCOMでは逆に考えれば「こういう機能が必要」と予測
されている領域から出ることができませんが、WIN32APIを探検すれば誰も
見たことの無いマジックを披露することもできるでしょう。
0163hidebou
2010/04/05(月) 01:39:09するテクニックが問われる時代となります。従来は一旦リリースしてしまえば
駟馬も追う能わずで製作者側が不利なものでも取り消しは効きませんでしたが
サーバーに紐を付けた状態でリリースすれば、リアルタイムでコントロール可
能です。
0164hidebou
2010/04/06(火) 09:14:06私ごとですが、スランプに陥っています。ただただ休みたいというのが本心で
すが、それでは干上がってしまいますのでエンコード後のデバッグという辛い
作業をしなければなりません。何か私が考える以上にエンコード後には制約が
存在するようです。解りしだいご報告します。
0165hidebou
2010/04/06(火) 11:10:13策ですが、非エンコードスクリプトブロックで明示的にshift_jisを指定して
ください。
<script language="javascript" onreadystatechange="">
document.charset = "shift_jis";
</script>
0166hidebou
2010/04/06(火) 11:19:03であるHTMLREF.CHMには存在しませんね。この場合IE7のタイプライブラリを
確認することになりました。ちょとサイズ大きいのですがIE7のタイプライブ
ラリを置きます。
ttp://www5a.biglobe.ne.jp/~javajava/ari/MSHTML.txt
0167hidebou
2010/04/06(火) 14:03:12「MSHTML.HTMLDocument」がdocumentのディスパッチです。ここに
PROPERTYPUT HTMLDocument.charset return BSTR
PROPERTYGET HTMLDocument.charset return BSTR
が存在するので読み書き可能な文字列プロパティーとしてcharsetが存在する
ことがわかります。
0168hidebou
2010/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>
0169hidebou
2010/04/06(火) 22:31:53デコード後に実施するように変更します。上記ソースのalert("ok");の部分を
エンコードスクリプトブロック中の任意関数呼び出しに置き換える事ができる
わけです。これによりユーザーの操作を待たずともグローバルに参照するオブ
ジェクトを無警告でActiveXObject生成することができます。
0170hidebou
2010/04/07(水) 16:17:14以外のInvokeを禁止しているのですが、これだと自由度がなくてコーディング
しにくいですね。typeofでfunctionが返された場合のみ厳格にして全体に緩い
規則に変更しようと思います。
ところでVBScriptはmainという関数があってもalert(main)とできませんから
もともとソース見えにくいという認識でよろしいのでしょうか?
0171デフォルトの名無しさん
2010/04/07(水) 17:04:17WSHの最新バージョンは5.8なのにドキュメントが更新されてないって変だよなぁ
0172hidebou
2010/04/07(水) 19:19:26まったく個人的な推測ですが強力すぎるからWSHを使って欲しくないと考えて
いるんだと思います。もっとおとなしい方法を使ってほしいんでしょうね。
0173hidebou
2010/04/08(木) 10:51:21が来てもおかしくないと考えています。HTABOXコアはその日に備えた対策という
意味もこめられています。
0174hidebou
2010/04/08(木) 16:15:29windowを省略したshowModalDialogという表現だとエラーとなりません。
美しくない仕様ですが、今のところ許容していただくしか無いようです。
0175hidebou
2010/04/09(金) 06:30:18がありました。再構築時に読み取り専用であるdialogArgumentsを退避させて
別名参照させる時に同名大文字変数としていましたが、この局面では大小の
文字は区別されていないので読み取り専用への書き込みと判断されて致命的
なエラーで停止します。ちゃんと別名にすることで解決できたようです。
0176hidebou
2010/04/09(金) 06:46:39になった原因がHTMLダイアログの表示であった場合HWNDを捕捉して制御すると
いうアルゴリズムですから、ダイアログ中のActiveXで警告ダイアログが表示さ
れた場合は非アクティブになった原因が警告ダイアログとなるので制御しません。
現時点でこれは仕様ということにします。
0177hidebou
2010/04/09(金) 22:33:45関数をIDispatchExのまま制御すればオブジェクト内の関数も同じ扱いで制御
できるので、従来オブジェクトの参照や列挙まで制限していたものを緩め、
関数コードのみを保護できそうです。
0178hidebou
2010/04/10(土) 10:03:14を表示させない目的でも使えます。例えばエンコードスクリプトグローバル
var FSO = new ActiveXObject("Scripting.FileSystemObject");
が評価されても警告ダイアログは表示されず、初期化された変数FSOへの参照
はあらゆるスコープから有効です。
ただし、button等のHTMLエレメントonclickで直接代入を行う変数は遅延出現
する前に解決されるので非エンコードブロックで宣言しなければなりません。
関数呼び出しの場合こういった配慮は必要ありません。
0179hidebou
2010/04/10(土) 13:25:38たのですが、改めて言語仕様を眺めてみるとなかなか興味深いですね。
特にClassのTerminateイベントは魅力的です。JScriptではデストラクタが書
けないのでこれは羨ましい。VBScriptにはソースを暴露するtoString()も無い
わけですから私自身VBScriptを再評価すべきかもと思っています。
0180デフォルトの名無しさん
2010/04/10(土) 17:27:56継承をサポートしてないのが糞だけど元になったVBにも無いから仕方ない
(VB.NETなら継承使える)
JScriptは
delete Function.prototype.toString;
を最初に入れとけばソース表示されないよ
0181hidebou
2010/04/10(土) 17:45:11「継承できない」なるほど気づきませんでした。
delete Function.prototype.toString;も大変賢い方法だと思います。
別インスタンスからtoStringを復元されないかを実験したいと思います。
0182hidebou
2010/04/10(土) 18:14:27がダイアログを追加し、有効なtoStringを追加するとソースを見ることができ
るようです。実験に使用した用本体側HTMLとダイアログ側HTMLを書き込みます。
0183hidebou
2010/04/10(土) 18:15:12<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>
0184hidebou
2010/04/10(土) 18:16:22<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>
0185デフォルトの名無しさん
2010/04/10(土) 19:49:44そんなことができるならdelete文を削除したほうが速そう
関係ないけど.htaってなんでコンテキストメニューに編集が無いの?
うっかり項目を追加するスクリプトを作っちまった
new ActiveXObject("WScript.Shell").RegWrite("HKCU\\Software\\Classes\\htafile\\shell\\edit\\command\\", "Notepad.exe %1", "REG_EXPAND_SZ");
0186hidebou
2010/04/10(土) 19:49:59func.toString = Function.prototype.toString;
な訳ですが、これをできなくしているのがHTABOXコアの隠蔽原理です。
toStringを踏み潰した後にDISPATCH_METHOD以外は無視するよう言い聞かせて
おけばプロパティーの追加は不可能になるからです。
0187hidebou
2010/04/10(土) 19:55:39確かに実際には「delete文を削除」は有効ですが、エンコードされた後にと
いうイメージで実験させてもらいました。ダイアログの追加は改編というよ
り単なる追加で可能だからです。
0188hidebou
2010/04/10(土) 20:03:14HTABOXコアでは右クリックを無視していますが、右クリック動作を書いて
メニューを表示させるというアイディアは思いつきませんでした。今後の
課題としたいと思います。
0189デフォルトの名無しさん
2010/04/10(土) 20:17:420190デフォルトの名無しさん
2010/04/10(土) 20:41:15HTML5はmenu要素でコンテキストメニューを作れるらしいね
いつIEで使えるようになるかは知らないけど
http://www.html5.jp/tag/elements/menu.html
0191hidebou
2010/04/10(土) 20:53:36とてもいい質問だと思いますが、詳しくお答えできないという立場をご理解
ください。
>>190
HTML5ならIE9で可能となるのかも知れませんね。私の眠っているVISTAを復活
させる必要があります。
0192hidebou
2010/04/11(日) 09:54:26クトを渡すよりもdocument全体を渡した方が安全のようです。
ダイアログ側で引数オブジェクトを変数格納する場合非エンコードブロックで
var OBJ = dialogArguments.Script.OBJ;
とScriptを介した参照で変数を作成し以降は当該変数への操作とするとエラー
となりません。
0193デフォルトの名無しさん
2010/04/11(日) 17:07:19スレが伸びているのを機に、HTAをゼロから覚えたいと思います。
0194hidebou
2010/04/11(日) 17:47:40HTML ApplicationはHTMLを書くという最も重要な技術をアプリケーションに
発展できる素晴らしい手法です。楽しみながら学習してください。
何か解決できない事があったらttp://kuroda.bglb.jp/の掲示板にでも書き込
んでいただければ、お力になれるかも知れません。
0195hidebou
2010/04/11(日) 18:03:22実際にダイアログを使ったり、ソース内にオブジェクトがあったりするケース
での煮詰めが甘かった事を痛感する日々でしたが、ここに呟いた留意点をドキ
ュメントに追加してバージョン1.40をリリースする予定です。
1.40は「実践的なエンコードルールの確立」と位置づけています。
0196hidebou
2010/04/11(日) 23:36:58var SYSTEM_MENUE = true;
が宣言されていた場合、最大化最小化ボタンを付加することとさせてください。
これをダイアログのスクリプトスコープから行おうとすると複数のWIN32関数
を追加しなければならず、取り扱いが煩雑になるという理由からです。
0197hidebou
2010/04/11(日) 23:40:50SYSTEM_MENUE -> SYSTEM_MENU
です。いつもよく確認もせず書き込んですいません。
0198hidebou
2010/04/12(月) 16:07:31コード生成方法についての説明を追加しました。officeをお持ちでまだ利用
したことがない方は是非ご覧になってください。
ttp://www5a.biglobe.ne.jp/~javajava/ari/Page0002.htm
0199hidebou
2010/04/12(月) 16:27:37されました。原因はCharSetプロパティーはデフォルトで空であり適確な設定
例えば"shift_jis"が設定されていないと不安定であるという事実でした。
MSE7.EXEでコードをドラッグ生成するとデフォルト値を確認できますので原因
の究明がスムーズだったというわけです。
0200hidebou
2010/04/13(火) 12:00:41モードレスダイアログをアプリケーションウインドウのように扱えますから
よりプログラミングの自由度が増すのではないかと考えています。
しかし、毎回思うのですがプログラミングは楽しいのに説明を書くのは苦手
です。くどい説明がいらないようなプログラムを書くというのは理想ですが
なかなかそうもいきません。解りにくかったらどんどんダメダシしてください。
0201hidebou
2010/04/13(火) 15:53:02ttp://kuroda.bglb.jp/htabox/htaboxcore.lzh
ドキュメント(取説)が長くなってきたのでメニューを追加しました。変更点
は「ダイアログの表示」「ソース隠蔽実験」「エンコード時の留意点」を
ご覧いただければ判るかと思います。また、sampleのtest4.htmにダイアログ
へのシステムメニューを追加したデモがありますので是非ご覧ください。
0202デフォルトの名無しさん
2010/04/13(火) 17:13:53仕様をあれこれ考えてる時も楽しいけど
実装する時にはいろいろ妥協が必要なこともあったり
0203hidebou
2010/04/13(火) 17:42:05自分のためのツールだったらとことん尖がっていてもいいんですが、リリース
して使っていただくとなるとその妥協点を見出すことの連続になりますね。
こういったツールって「独りよがり」が一番の敵だと思っています。
0204hidebou
2010/04/13(火) 19:36:12ダイアログをクローズすると親のキャプションの色が抜けてしまいますね。
WM_CLOSEで親へ再描画を促す処理を加えてみたいと思います。
0205hidebou
2010/04/13(火) 20:11:29う解釈が正しいようです。解決のためにすこし実験プログラムを書く必要があ
りそうです。
0206hidebou
2010/04/13(火) 20:29:11た。気づいてみれば本来アクティブなダイアログを非表示としてしまえば親が
アクティブになるという単純なミスでした。まもなくファイルを更新します。
0207hidebou
2010/04/13(火) 21:11:14つく事になりますが、その対策についてはまた考えたいと思います。
0208hidebou
2010/04/13(火) 22:43:31一時的にWS_VISIBLEを剥奪するという手法が円満解決のポイントでした。
0209hidebou
2010/04/14(水) 07:14:12があるわけで、WS_EX_CLIENTEDGEを付加しないとメニューとクライアント領域
がのっぺりしてしまいますね。将来は自由にウインドウスタイルを設定可能に
したいとは思いますがダイアログのSYSTEM_MENUが宣言されていた場合に関し
ては自動的にWS_EX_CLIENTEDGEを有効とさせてください。
0210hidebou
2010/04/14(水) 07:38:10ションウインドウとほぼ同じ3Dで窪んだ外観となります。アプリケーションの
ように扱えますが、HTA用ウインドウではなくHTML Dialogですのでセキュリテ
ィーの取り扱いに若干の制約があったと記憶しています。
0211hidebou
2010/04/14(水) 09:55:02ていて気づいたのですが、フレーム構成でないアプリケーションはHTA扱いで
すから、そこから呼ばれたダイアログもHTA扱いなんですね。
ただしフレーム構成とした場合は子がHTMLでなければなりませんから、そこ
から呼ばれるダイアログもHTML扱いになりエンコードしないと警告が出ると
いうごく自然な展開なわけです。
0212hidebou
2010/04/14(水) 10:03:31さらに自由度が上がることは明白ですが、今後の課題としたいと思います。
0213デフォルトの名無しさん
2010/04/14(水) 20:03:16http://msdn.microsoft.com/library/ms536474.aspx
0214hidebou
2010/04/14(水) 21:10:46<HTA:APPLICATIONという書き方でエラーとはなりませんがMSHTA.EXEと同様の
機能しか提供できません。作った本人も残念なのですがHTA:APPLICATION中で
使用する機能があれば実装しますので気兼ねなく書き込んでください。
0215デフォルトの名無しさん
2010/04/14(水) 21:34:45<FRAME SRC="SUBFRAME.HTML" APPLICATION=YES >
0216hidebou
2010/04/14(水) 21:43:16すいません別の意味でしたね。恐らく
The APPLICATION attribute can be used only in HTAs.
という記述からすると同じ扱いになろうかと思いますが、初めて見る書き方
なので調べてみます。
0217hidebou
2010/04/14(水) 21:59:33<frame name="top" src="page1.htm" APPLICATION="yes">
でセキュリティーがHTA扱いとなるのですね。こんな便利な機能を私はまった
く知りませんでした。教えていただいてありがとうございました。
0218hidebou
2010/04/15(木) 00:49:57実は長い間HTMLダイアログベースで同じ事をやろうと研究していた時期があっ
たものですから頭こんがらがっていました。結局一人で出来ること、気づくこ
とには限界がありますし、私は特にその容量が小さいので今回のようなご指摘
は値千金です。今後ともよろしくお願いします。
0219hidebou
2010/04/15(木) 09:31:30exeはそのままですが、ドキュメントとサンプルの誤りを訂正しました。
お礼に差し上げるものも無いのでウインドウスタイル変更についてプロトを
作成したいと思います。HTML系のウインドウはFrameとDocumentにそれぞれ
HWNDを持っていますので使いようによっては斬新なことができると思います。
0220hidebou
2010/04/15(木) 09:47:41window.FRA_HWND、window.DOC_HWNDで常に参照できるものとします。
GetWindowLong、SetWindowLong、GetSystemMenu、SetWindowPos
をWIN32名前空間に出現させればスタイルの変更が可能になるはずです。
0221hidebou
2010/04/15(木) 13:14:36ttp://www5a.biglobe.ne.jp/~javajava/ari/style_test.lzh
機能の追加は単純作業でしたが、適当なサンプルページを作るのに手間取り
ました。サンプルではシステムメニュー上の最小化、最大化機能を制御して
います。透けてるウインドウとかをサンプルにしたかったのですが、改めて
ウインドウスタイル設定の難しさを思い知らされた格好となりました。
0222hidebou
2010/04/15(木) 13:23:00FRA_HWND、DOC_HWNDとしています。
GetWindowLong、SetWindowLong、GetSystemMenu、SetWindowPos
の各引数は本物と同じです。ただしスクリプトからのプロシージャ取得設定
は危険なのでWindowLong系のGWL_WNDPROCは無視しています。
0223hidebou
2010/04/15(木) 18:29:320224デフォルトの名無しさん
2010/04/15(木) 21:45:100225デフォルトの名無しさん
2010/04/15(木) 23:29:280226hidebouの代理
2010/04/16(金) 00:02:21ROM状態でしょうか。書き込みに対するレスは
ttp://kuroda.bglb.jp/post/index.htm
に書きます。ご迷惑おかけします。hidebou
0227デフォルトの名無しさん
2010/04/16(金) 11:08:410228デフォルトの名無しさん
2010/04/16(金) 23:30:480229デフォルトの名無しさん
2010/04/17(土) 15:06:06もうちょっと抑えて書くといいね。
待ってます。
0230デフォルトの名無しさん
2010/04/17(土) 15:21:270231hidebou
2010/04/18(日) 11:33:160232hidebou
2010/04/18(日) 11:41:07ttp://www5a.biglobe.ne.jp/~javajava/ari/style_test.lzh
のプロトタイプでは以下のAPIが使用可能です。
GetWindowLong、SetWindowLong、GetSystemMenu、SetWindowPos、ShowWindow
SetLayeredWindowAttributes、AnimateWindow
また、右クリックでのポップアップメニュー機能も追加してみました。特に
このメニューの仕様についていいアイディアがありましたら助かります。
0233hidebou
2010/04/18(日) 11:54:51定義をスクリプトから行えるようにする予定ですが、HTMLタグによる宣言の
場合は単純で使いやすい仕様が望ましいと考えています。
プロトでは新たにTDのinnerTextが-(マイナス記号)だった場合セパレータと
する規則を導入しましたが、これでいいのかな?と迷っています。
0234hidebou
2010/04/18(日) 21:37:08を紹介する事にも力を入れていかなければと思っています。今のところHTML
Applicationは知る人ぞ知るという情報であって、肝心のこれからプログラム
を学習しようという人へ情報をいかに広報してゆくか、導けるかが課題にな
ろうかと思います。
0235デフォルトの名無しさん
2010/04/19(月) 01:57:31同一IPから連続で書くと、一日でアウトになるよ
0236デフォルトの名無しさん
2010/04/19(月) 20:25:131日じゃなくて1ヶ月だってばよ。
0237hidebou
2010/04/19(月) 22:04:25も何かと目に留まりやすい2chをあてにしてしまっていることろが悪いのです。
昨日、今日とFrontPageやASPとにらめっこして気軽にご意見をいただけるシス
テム作りを行っております。書いた本人は直後にコメントを消せるルールなら
書き込みやすいかなぁーとか思っています。
0238hidebou
2010/04/19(月) 22:29:42来永劫残る危険性があって発言にブレーキがかかる気がするんです。かと言っ
てメーリングリストのように閉鎖的なのは前時代的ですし、ブログやtwitter
もいいでしょうけれど話題がプログラミングだけにソースをきれいに表示でき
ることを考えると自分でそいう目的のシステムを作った方がいいかなぁっと考
えています。
0239hidebou
2010/04/20(火) 05:54:09た情報の交換が主だったと思うんです。「過去ログ見てから物を言え」的
ムードが参入者にとって障壁となっているのではと。これからという人が気
兼ねなく発言できる場が絶対に必要ですし、私自身その中で気づいてゆくこ
とが多いと思っています。
0240hidebou
2010/04/20(火) 06:04:39ニーズに答えられる努力をしていますが、HTABOXコアは特化されたブラウザと
して使用することも出来るわけですから、twitterのように緩い結びつきで、
コミュニティーが形成されてゆく情報交換ルールを作ることも夢ではないと
思います。
0241デフォルトの名無しさん
2010/04/20(火) 16:49:17http://www.nicovideo.jp/mylist/7143440
こういう動画のHTA版があると面白いかもしれんが
WSHと違ってHTMLの説明も書かなきゃいけないから大変そう
0242デフォルトの名無しさん
2010/04/20(火) 17:16:33>プログラミングは楽しいのに説明を書くのは苦手です。
http://www.ruby-lang.org/ja/man/html/Ruby_CDD1B8ECBDB8.html#Document
ソースがドキュメントだ。バグも完全に記述されている
0243hidebou
2010/04/20(火) 18:44:19まさしく情報の範囲として実に広範なものになりますから、細部までとなると
一人がどうこうしても追いつかない情報量になろうかと思います。
それぞれの分野で興味を共有しあって助け合える仕組みが必要だと思います。
0244hidebou
2010/04/20(火) 18:49:50ttp://kuroda.bglb.jp/post/index.htm
せっかく訪れていただいてもお土産がないと失礼ですのでタイプライブラリス
レッドを用意しました。タイプライブラリスレッドにリクエストをいただけれ
ば可能なかぎりお答えしたいと思います。
0245デフォルトの名無しさん
2010/04/20(火) 19:56:07http://msdn.microsoft.com/ja-jp/library/d0kh9f4c(VS.80).aspx
これでよくない?
と思ったけど定数は表示されないのかな
0246hidebou
2010/04/20(火) 20:26:20C++で利用するならおっしゃる方法も素敵ですし、私は#importした後に生成
される.tlhや.tliファイルを直接眺めたりもします。要はスクリプトにコメ
ントとして貼り付けて必要な部分をコピペしやすい形式のファイルとしてい
るだけです。
0247hidebou
2010/04/20(火) 20:48:55FileSystemObject.CreateTextFile(.......) return ITextStream ですから
今度は後方からITextStream.で検索をかけITextStreamのメソッドやプロパテ
ィーを確認するといった具合です。
0248hidebou
2010/04/20(火) 23:45:30生涯のテーマとして少数のアプリケーションを維持するだけなら全部C++で書く
のが正解ですが、行きずりのテーマをささっと短時間でアプリケーションに
仕上げてしまうような状況でこそ本領を発揮するはずです。それを可能にして
いるのが他人の褌であるCOMの利用なわけですから、その構造を短時間で理解
する工夫がなければHTML Applicationのメリットが削がれてしまうと感じてい
ます。
0249hidebou
2010/04/21(水) 09:57:57つまり年間で52本をリリースするわけです。「下手な鉄砲数打ちゃ当たる」を実践
するためにHTABOXコアを書きましたし、HTABOXコアを知らない人も短時間にどんど
んリリースしてくる不思議な人間がいることに気づいてHTABOXコアの存在に気づく
という展開になるんじゃないかと思います。
0250デフォルトの名無しさん
2010/04/21(水) 17:15:26http://www.geocities.jp/rasuxo/win32.html#mm_joy
0252hidebou
2010/04/21(水) 18:27:25ちらりとMSDN見たんですが、いよいよ構造体がらみになりそうですね。
いつかは構造体をスクリプトで定義、参照できる規格を決めなければと思っ
ていましたので良いきっかけをいただいたと思います。JScriptならイメージ
が沸くのですがVBSriptのclassインスタンスがC++からIDispatchExに見える
のかというような実験を繰り返す必要がありますので、お時間をいただくこと
になります。
0253デフォルトの名無しさん
2010/04/22(木) 00:55:48とりあえず、教育用言語とアルゴリズムは学生時代に習いました。
HTMLはスタイルシート以外は分かります。
0254デフォルトの名無しさん
2010/04/22(木) 01:05:47ttp://msdn.microsoft.com/ja-jp/library/ms536496.aspx
0255hidebou
2010/04/22(木) 03:16:39HTMLでユーザーインターフェースを作ることを理解されていらっしゃるので
したら自分の興味がある機能を提供してくれるCOMを使ったスクリプトを書い
てみてはいかがでしょうか?私の知識の範疇にあれば使えそうなCOMを紹介し
て簡単な導入部を書けるかも知れません。
HTML、Script、COM、C++と広範な技術を活用できますが、最も重要なのは書い
てて得してる気分とか、楽しいとかだと思います。
0256hidebou
2010/04/22(木) 03:37:42私の経験で恐縮ですが、HTMLは単に表示されるだけと思っていた時に、結果を
ファイルに書き出せるだけでとっても感動した記憶があります。scrrun.dllに
存在する"Scripting.FileSystemObject"はテキストファイル入出力機能を提供
してくれるCOMです。クォート内のワードで検索すれば数十万件ヒットしますの
でサンプルは沢山あるはずです。
0258hidebou
2010/04/22(木) 13:12:52スクリプトを書くときにJScriptかVBScriptかで悩むかもしれませんが、HTML
中には両方書いてそれぞれグローバルな要素を参照できますので、両方を齧っ
て自分のスタイルに合った方を使えばいいと思います。
JScriptはJavaScriptの拡張ですので、他のブラウザ用にHTMLを書くときにも
知識が生かせます。VBScriptはIE限定ですがoffice系のVBAをスクリプトへ移
植する際には僅かの書き換えで済みますから便利だと感じています。
0259hidebou
2010/04/23(金) 10:07:56リティー設定に関わりなくマクロと同等の動作を実行できることです。一見
回りくどいように思われるかも知れませんが、VBAをVBScriptでの外部呼出し
に替えることは簡単ですし慣れればJScriptへの翻訳も問題ありません。
0260hidebou
2010/04/23(金) 10:20:01定義しなければならない事ですが、この問題を解決する目的でタイプライブ
ラリ解析システムが生まれたと言っても過言ではありません。
//WdNewDocumentType type enum
var wdNewBlankDocument = 0;
var wdNewWebPage = 1;
var wdNewEmailMessage = 2;
var wdNewFrameset = 3;
と宣言しておけばVBAでの定数名を書き換えることなくスクリプトへ移植でき
るからです。
0261hidebou
2010/04/23(金) 10:32:37応していませんが、対応後はマクロの記録でVBAを自動生成させ、少ない労力
でスクリプトへ移植し、1本のアプリケーションとしてリリースできる事をご
理解いただけると思います。これぞ究極の他人の褌でとる相撲だと思います。
0262デフォルトの名無しさん
2010/04/24(土) 18:49:51>VBSriptのclassインスタンスがC++からIDispatchExに見えるのか
Windows スクリプト コンポーネント
http://msdn.microsoft.com/ja-jp/library/cc392140(v=MSDN.10).aspx
これとは違うんだよね よく分からん
0263hidebou
2010/04/24(土) 19:59:18C++側から見た場合、スクリプトから呼び出されたCOMの引数はVARIANTですが
JScriptのObjectの場合はIDispatchExポインターを保持しています。VBSript
のclassインスタンスもそうなら....という話です。
0264hidebou
2010/04/24(土) 20:09:540265hidebou
2010/04/25(日) 01:08:36素のみを宣言した「省略構造体」を引数として渡せばC++側が要素を追加して
「完全構造体」を返すというルールが作れるかも知れません。
0266hidebou
2010/04/25(日) 22:10:59パブリックコンポーネントを作成しなければなりませんでした。全くのスク
ラッチでこれを書くこともできますが事実上VC++のATLがないと困難でした。
HTABOXコアはその面倒を内部で処理し単純なDLLでもスクリプトから呼び出さ
れるルールを実現しています。ATLなしでも書けるということは無料の2008で
十分だということです。
0267hidebou
2010/04/25(日) 22:21:55単にWIN32DLLの環境を作りビルドしてください。
ttp://www5a.biglobe.ne.jp/~javajava/ari/sample.txt
スクリプトとは何か?を理解する最も有効な方法はもっと低水準な観点から
スクリプトを眺めてみる事です。
0268hidebou
2010/04/27(火) 21:45:39リリースしていなくてすいません。ASPを眺めていて不思議な現象を発見した
ので話の種にさせてください。#include virtualで別WEBにあるASPを参照し
被参照側のグローバル変数を呼び出し側で<%=HOGE%>すると見えないんです。
0269hidebou
2010/04/27(火) 21:53:55でも、ひょんな事からその対策を発見しました。両方同じ言語な場合のみこの
現象が発生しているのです。JSとVB又はVBとJSならこの問題は発生しません。
引き換えにユーザー定義系クラスは参照できませんが、改めてVBScriptの
存在に感謝したしだいです。
0270hidebou
2010/04/28(水) 11:50:39なっているのですが、複数行を一度にコメントアウトする場合面倒だったり
します。VBA環境の場合はその機能があるのですがMSE7.EXEにはありません。
これは検索置き換えで正規表現を使えば簡単に解決できます。コメントアウト
したい範囲を選択して行頭「^」を「'」に置き換えればいいのです。
0271hidebou
2010/04/28(水) 12:10:05ますが、使ってみると劇的に作業が楽だったり、ソースコードが簡潔になっ
たりします。特にJScriptのreplaceでは置き換え文字列生成に関数を指定で
きますので柔軟な置き換え結果を生成できます。
0272hidebou
2010/04/29(木) 01:07:48ムを構築する場合ISAPIフィルタDLLが必須となります。ASPは画像等のGET要
求を知り得ないからです。しかしISAPIフィルタDLLとASPはASPがIISインプロ
セスで動作していない限り交信できません。つまりISAPIフィルタDLLはASPの
セッション情報にアクセスできないというのが通説です。
0273hidebou
2010/04/29(木) 01:24:50とASPプロセスでそれぞれCOMをインスタンス化し、IISの保護されたプロセス
境界を突破する通信手段をCOM内に構築することでDLLとASPは連携できます。
勿論ASPは勝手気ままに消滅するかも知れませんから、DLL側のXMLインスタン
スへ動作を報告し、DLL側は必要に応じてXMLを読むというからくりです。
0274hidebou
2010/04/29(木) 01:42:49「○○では○○したくてもできない」
というフレーズを見つけた時はチャンスだと思うんです。なぜならそれを実
現すれば確実にアドバンテージを得ることができると教えてくれているから
です。
0275hidebou
2010/04/29(木) 11:30:20あります。これは「万人がチャレンジしてだめな手法へチャレンジするな」
という意味です。決まった納期に仕様どおりの製品を納める仕事なら当然の
ことですが、フリーランスプログラマーの場合は逆だと思います「人ができ
ないからチャレンジする」でなければ新しいものは生まれません。
0276hidebou
2010/04/29(木) 23:52:24うです。技術的に可能か?が判明すると興味を失って実装部を煮詰めないの
が私の欠点なのですが、霞を食って生きてはゆけないので睡眠時間の少ない
日々をすごしました。最終的に販売動作はサーバーが自動的に行い、私はコ
ンテンツの充実のみに集中できるはずです。
0277hidebou
2010/04/30(金) 00:19:56要は「知っている」か「知らない」かの違いだけだと痛感しています。
私の家族に霞ではなくお米を食べさせなければならないので総てを無料閲覧
可能にはできませんが、実践的で理解しやすい情報を提供してゆく予定です。
0278hidebou
2010/05/01(土) 03:33:49管理するDBと独自認証系DBとの良好な位置関係に結論をだすことができました。
これによって書きかけだった救急隊用医療情報分析システムをサーバーに組み
込む作業も終了し一般公開へ大きく前進できたと思います。
0279hidebou
2010/05/01(土) 03:58:45BOXコアがきちんと大きなボリュームに耐えられるのかのテストでもありました。
勿論パース中は若干もたつきますが、サーバーからの認証ダイアログに答える
必要があるので、それに気をとられてあまり気にならないという素敵な誤算も
あるようです。
0280hidebou
2010/05/08(土) 23:39:03FrontPageが生成するVBScriptコードを再利用するという発想がいやらしすぎ
るらしく、最後に蹴られるという展開を何度も繰り返してしまいました。
まさに「策士策に溺れる」の展開なので、初心に帰って朴訥なコードを書き
HTABOXコアのほうに手をつけれるようにしたいと思っています。
0281デフォルトの名無しさん
2010/05/14(金) 18:43:04Class 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は難しすぎ
0282281
2010/05/14(金) 18:55:11×unknwon → ○unknown
0283hidebou
2010/05/14(金) 21:37:14私も同じような実験コードを何度か書きました。
Class HelloWorldが直接JScriptから参照できればもっと有機的な絡み方がで
きるんですが、あくまでもNewしたインスタンスしか見えないようでした。
JScriptにVBという名前空間を、逆にVBScriptにJSという名前空間を出現させ
異なる言語の標準関数を使えるようにしたら面白いかも?という構想を持って
います。
0284デフォルトの名無しさん
2010/05/14(金) 22:00:410285hidebou
2010/05/14(金) 22:08:33私はVBS初心者なんですが、どうも一旦ばかばかしいミスのコードを実行する
と、その後正しいコードを書いてもエラーとなる気がしています。ひょっと
するとVBSはJSよりWindowsシステムに近いところで動くのかも知れません。
だとすればJSよりちょっと高速に動くという推理をしています。
0286hidebou
2010/05/27(木) 01:28:59ひとつの目標として、私が書いたものでないHTABOXコアプラットホームの
アプリケーションを販売できる体制作りを掲げています。そのためには認証
や登録を軽量でありながらも堅牢なものにしなければなりません。
0287hidebou
2010/05/27(木) 01:40:47の世代へ伝えられればという想いだけになります。これからこの世界を担う
方たちが希望をもって生きてゆける材料をひとつでも作っておければと、し
ょぼくれた目をこすりながらIISと格闘しております。
0288デフォルトの名無しさん
2010/06/11(金) 18:33:20http://slashdot.jp/security/article.pl?sid=10/06/07/0335205
0290hidebou
2010/06/24(木) 02:03:40従来は他人様のレジストリに触りたくないのでサイドバイサイドにこだわって
きましたが、エンコードを必要としないスクリプトの場合HTABOXコアが提供
するプライベートCOMの生成を待つのが面倒だと自分でも感じています。
0291hidebou
2010/06/24(木) 02:11:58手順でのプログラミングになるものですから、何かのきっかけでプロジェクトが
クラッシュした場合のことを考えると大胆なチャレンジができませんでした。
本来はどんな事が起こっても単純にソースをコピーしてビルドすれば新しいプロ
ジェクトが完成するべきなのですが、手順に頼った分複雑になるのです。
0292hidebou
2010/06/24(木) 02:24:28書いてみて、今まで思っていたより簡潔な記述ができることに気づきました。
さすがに50行で1画面とはゆきませんが、150行で3画面くらいあればレジストリ
への登録部分も含めた全体を記述することができます。どうもCOMの解説にはC++
以前の情報がちらりと見えて学習者を混乱させているように思えます。
0293hidebou
2010/06/24(木) 02:46:09が必要になりますが、IClassFactoryとIDispatchで構成されるモジュールなら
ole2disp.dll {00020424-0000-0000-C000-000000000046}に任せるだけという
あっけない展開に拍子抜けしてしまったくらいです。サイトを新しくしたらCOMの
セクションを設けて詳しい解説ができればと考えております。
0294hidebou
2010/06/24(木) 02:58:43登録し、冒頭から拡張機能を利用できるオプションをつけたいと思います。また、
GUIを持たないツールとしてのスクリプト用に同等の機能を持つCOMDLLを提供できる
と思います。VC++の操作手順から完全に離れた形でCOMを記述することによって
COMそのもののポータビリティーを向上させることができたからです。
0295hidebou
2010/07/08(木) 01:33:54HTML中のScriptにしてもルートにある(若しくはグローバルな)スクリプトディ
スパッチは極めて軽量にラップすることができるという結論に達しました。
このラップ層にWIN32による低水準関数を置くことで本来はActiveXObject要求
である部分をHTABOXコアからのディスパッチ提供にすりかえることができます。
0296hidebou
2010/07/08(木) 01:42:10してレジストリに登録します。開発中のスクリプトには通常のCOMのように
var WIN32 = new ActiveXObject("HTABOX.Application");
と記述して普通にデバッグできるわけです。
0297hidebou
2010/07/08(木) 01:50:54HTABOXコアは内部リソースを実行する際
new ActiveXObject("HTABOX.Application");という要求を見つけた場合
GetHtabox();という単純な関数呼び出しに置き換え、Invoke要求で当該
ディスパッチを返します。これにより配布形式ではレジストリ登録せずとも
同一の動作を実現できるわけです。
0298hidebou
2010/07/08(木) 02:06:34があり、自分自身この規格でばりばり開発したいかというと???だったのですが
今回の研究で本当に足元をしっかり固めることができ、すっきりとしたルールを
確立することができそうです。
0299hidebou
2010/07/08(木) 02:18:08プログラミングにチャレンジする方には参考になると思います。これが明確になっ
ていないのでCOMは敷居が高い分野だと誤解されている気がします。要は何が起こっ
ているかを逐次確認できる環境こそ最も大切なのです。
0300hidebou
2010/07/08(木) 02:32:51クラスをテストします。ウインドウは作成せず、AllocConsole();でコンソール
を生成し必要な情報がすべて表示されるようにします。また全体をcatch(...)で
捕捉しどんなに軽微な異常も見逃さないようにします。
0301hidebou
2010/07/08(木) 02:48:34AddNamedItemで追加、スクリプトをパースしてディスパッチの挙動を監視します。
具体的にはAddRefやReleaseによるrefカウンターの推移等をコンソールへ出力
するのです。この段階でスレッドモデル、デバッグビルド、リリースビルド、
あらゆるチャレンジを行い、仕様を決定してゆきます。
0302hidebou
2010/07/08(木) 03:06:54するような単純なものとします。これは実際にIClassFactoryを実装しCOMとして
外部からの呼び出し行った結果が期待通りでない場合、問題の切り分けを容易に
する目的です。あらゆるプログラミング環境で共通な事ですが、特にCOMの場合
動かない原因をいかにすばやく特定できるかが鍵になると思います。
0303hidebou
2010/07/10(土) 22:59:12いた部分に気づきました。documentの構築直前のタイミングで独自ディスパッチ
をScriptへ送りつけることはできないと認識していたのですが、何の問題も無く
可能であることがわかりました。なんか得したような損したような複雑な気分です。
0304hidebou
2010/07/10(土) 23:06:16WIN32.CreateWindow(html);で任意のHTMLコードをHTA実行できます。これは
最初に生成したWindowを破棄し、新たなWindowを生成できることを意味します。
0305hidebou
2010/07/10(土) 23:19:49転送する形で実行可能です。結果的にHTMLコードはボタンやメニューなど外観に
関する事柄のみとなり、ビューとドキュメントの分離が可能です。また、ソース
隠蔽は起動側スクリプト全体というルールを設ければ、より堅牢な隠蔽ができます。
0306hidebou
2010/07/10(土) 23:31:34HTMLからコールされる関数を2,3宣言しwhile(IsWindow(hwnd))で待機する
スクリプトの構造はWIN32APIで書いたWindowsプログラミングのミニチュア版
のようでとても愛らしいものになります。近日中に実験器を公開したいと思います。
0307デフォルトの名無しさん
2010/07/12(月) 19:36:53<script language="javascript">
window.close();
</script>
</html>
何かこのようにウインドゥを閉じるとエラーダイアログが出るのですが
0308hidebou
2010/07/12(月) 20:30:30貴重なご指摘ありがとうございます。直後にcloseすることは想定しておりません
でした。現状では操作すべきウインドウが無いのでウインドウクラスのアドレスを
登録できないという内部エラーメッセージが表示されます。次期更新時にはウイン
ドウ実体が存在するかのチェックルーチンを追加しますので今後ともご指導お願い
いたします。
0309デフォルトの名無しさん
2010/07/17(土) 17:01:47ttp://www.vector.co.jp/soft/winnt/util/se408592.html
> HTMLは、HTMLファイルと埋め込みコンポーネントを「Web アーカイブ、単一のファイル」のMHTMLファイルにできますが、
> HTAには、そういうファイル形式がありません。
> なので、HTAファイルと埋め込みコンポーネントがばらばらで持ち運びや管理が面倒です。
> そこで、HTAもMHTMLファイルのように単一のファイルにして実行する方法です。
HTABOXコアでもmhtmlドキュメントを実行ファイルとして扱えると有難いです。
↑自体はレジストリの操作が必要なので……
0310hidebou
2010/07/21(水) 00:04:56手元のMSWORDでmhtを作ってみたところ画像等がメールの様にBASE64エンコード
されているのがmhtであると認識しました。技術的には可能だと思いますし、今後
総てをリソース格納するさいに個別のリソースとせずこの形式を利用すればとても
スマートな処理が可能だと考えます。大変貴重なご意見ありがとうございます。
0311hidebou
2010/07/21(水) 00:13:50起動はJS又はVBSファイルとなります。従来のWIN32にHTAを生成する機能を付加
しましたので、何度でもdocument.writeしてHTAを更新する事ができます。
HTABOX2.EXEをレジストリ登録すればwscript.exeで実行可能ですから//Dでデ
バッグできますし、HTABOX2.EXEへのドロップ実行ではレジストリ登録無しに実行
可能です。
0312hidebou
2010/07/21(水) 00:40:28も小回りの利くC++の連携で従来のアプリケーション構築に対する概念を根底から
変革する提案ができると思います。これもひとえに愚かな私を暖かく見守ってくだ
さる皆様のおかげと感謝しております。まだまだ改善すべき点が発見されると思い
ますので気兼ねなくご指摘ください。
0313hidebou
2010/07/23(金) 23:22:56ttp://kuroda.bglb.jp/htabox/demo.zip
含まれるファイルはdemo.js、demo.vbs、HTABOX2.EXEです。
デモの手順はHTABOX2.EXEを起動しヘルプからご覧になれます。
スクリプトからHTMLオブジェクトを扱う感覚は慣れないうちは戸惑いを感じるかも
知れませんが、HTMLは外観の構成に専念し演算部分を隠蔽しながら起動側スクリプト
に置けることをご理解いただけると思います。
0314hidebou
2010/07/23(金) 23:32:00var WIN32;
//#define WIN32 //
WIN32 = new ActiveXObject("HTABOX.Application");
WIN32.ScriptFullName = WSH.ScriptFullName;
//#undef WIN32
WSH環境では当然ActiveXObject生成が必要ですが、HTABOX2環境ではエラーとなりま
す。そこでプリプロセッサー命令を追加しました。#define op1 op2 はHTABOX環境で
単純にオペランド1文字列をオペランド2文字列に置き換えます。したがって#undefまで
の2行先頭はコメントアウトされます。JSには条件コンパイルにより処理できる問題です
がVBSとの統一した扱いを目的に追加しました。
0315hidebou
2010/07/23(金) 23:41:16var DOC = HTA.document;
var WIN = HTA.window;
var SCR = HTA.Script;
var HWND = HTA.FraHwnd;
CreateHtaWindow()関数は非表示な空のHTAインスタンスを生成し、HTAへの操作を
提供するディスパッチを返します。スクリプトを毎回HTA.Scriptと記述しても間違い
ではありませんが、そのつどDISPATCH_PROPERTYGETによるInvokeが発生するわけで
すから変数でインスタンスを握った方が得策です。
0316hidebou
2010/07/23(金) 23:53:59HTA.Open(); HTA.Write(html); HTA.Close(); HTA.Show();
FindSourceMark(op1, op2)関数はソースコード中にop1文字列を検索しop2文字列
との中間文字列を返します。スクリプトソース中にHTMLを書いた場合クォーテーション
問題が発生します。コメント中であればHTMLをそのまま貼り付けても文法的に破綻
しませんから、/*.....*/のコメント中に開始マークと終了マークを置いて抽出する
わけです。関数の引数が"#" + "BEGIN_HTML"なのは"#BEGIN_HTML"と書くとこの位置
が開始と認識されることを防ぐためです。
0317hidebou
2010/07/24(土) 00:07:31SCR.ButtonFunc = WIN32.HideFunc(ButtonFunc);
JSの場合
SCR.ButtonFunc = function(){.....}と直接追加も可能ですが、ここではtoString()
を拒否する加工を行ってからHTAのスクリプトインスタンスへ関数を追加しています。
もし、HTML構築時に必要な関数である場合はHTA.Open(); とHTA.Write(html);の
間にこの追加を行うことで対応可能です。尚、alert()のようにHTA側コンテキストに
しか存在しない関数呼び出しには配慮が必要な事に注意してください。
0318hidebou
2010/07/24(土) 00:21:06現在の仕様ではWiteForWindow(op1)関数はop1を引数にIsWindowVisibleが真である
条件で待機します。この待機が無く母艦スクリプトが終了した場合、生成した関数
実体を提供するスレッドが無くなりますのでHTA側からの呼び出しは失敗します。
0319hidebou
2010/07/24(土) 00:34:52wscript.exeで実行後、HTABOX2.EXEをレジストリ登録解除してアイコンへの
ドロップ起動を行う訳ですが、実際のリリースバージョンでは旧HTABOXと同様
にドロップされたスクリプトは暗号化してEXE内に格納される予定です。
0320hidebou
2010/07/24(土) 01:15:31について納得できる要素を見出すことができました。JSと同じ感覚で
set SCR.ButtonFunc = GetRef("ButtonFunc")
と書いてもVBSではエラーです。ということはVBSは左辺へIDispatchExのQueryInterface
を行わないという推理ができます。あくまでもIDispatchを基本ルールとして動作
しているとすれば「速いのはあたりまえ」という事になります。
0321hidebou
2010/07/24(土) 01:56:25普通に使えるという実験結果でした。さらに考えてゆくと起動起点をスクリプトに
した場合HTAにこだわる必要はまったく無く、むしろセキュリティー制限がHTAと
同等のHTMLインスタンスを生成した方が自由度が高いという結論に達しました。
HTABOX2.EXEを強引にメモ帳で眺めるとヘルプウインドウをCreateDlgWindow();
で生成している部分が見えるとおもいますが、HTAがプロセスと同じ寿命を持つの
に対しこのウインドウは何度でも生成消滅できますし、複数が同時に存在しても
問題とはなりません。
0322hidebou
2010/07/24(土) 10:43:51なわけですが、内部は結構チェレンジングな構成となっています。まずODL、MIDLを
使用せず動的にTypeInfoを生成して引数チェック付きのDispatchとしています。
したがって関数名や引数の変更、ディスパッチ相互の関係等はソースコードを変更
してビルドするだけで完結します。このごくあたりまえに思える操作がATLに依存
するとMIDLがらみで大変気の重い作業になります。
0323hidebou
2010/07/24(土) 11:03:45低水準ディスパッチの有機的な関係を実現していますから、ここは正規表現で楽
をしたいという局面でパース済みのスクリプトディスパッチを高速に利用すること
ができますし、逆にスクリプトをパースする時点で低水準ディスパッチを呼ぶこと
も可能です。
0324hidebou
2010/07/24(土) 11:23:58にはMotherという愛称がついていて彼女だけはIDispatchExです。この母なる存在
は子ディスパッチを乗せるコンテナとして機能しています。ですからJSなら
WIN32.hoge = .....
で新たな機能を追加することもを可能です。
0325hidebou
2010/07/25(日) 16:37:15みました。結果はIDispatchExなんですがGetDispIDで新たな要素のDISPIDを
要求しても知らんぷりする頑固者です。ですから構造体代わりに使うためには
全メンバーが既存でなければならないということになります。まぁそれでも
JOYINFOEX構造体の代わりに引数が13個ある関数を作るよりはましでしょう。
0326デフォルトの名無しさん
2010/07/25(日) 16:51:54BEGIN_HTMLからEND_HTML中に従来のHTA文法で記述したスクリプトも作動するようですが、
自分の書き方だとたまにInvoke〜ダイアログが出たりしたので、
正式版リリースの際にはエラーメッセージのリファレンスが欲しいところです。
それとHP掲示板にスパムが溜まっているようです
0327hidebou
2010/07/25(日) 23:52:40実に本質をついたご意見です。HTABOX2では単純にHTMLをドロップ格納するモード
があって、その場合ソースは隠蔽されず、JSやVBSを使ったスクリプトがドロップ
された場合隠蔽というルールがいいかもと考えています。
格納後(デモではドロップ)でエラーが発生した場合どこまでランタイムエラー情報
を表示すべきかで若干の悩みを持っています。隠したいという目的ならこのソースの
ここがエラーですという表示はおせっかいになるわけです。
0328hidebou
2010/07/26(月) 00:26:22でプロセスを捕捉する部類のカジュアルクラックには対抗できると思われまますから
皆さんのご意見を十分うかがってHTMLドロップとスクリプトドロップの使い分け、
その仕様については練り上げていかなければならないと考えています。そのために
どんな小さな事でも結構ですので、「こういうルールがいい」というご意見をお待ち
しております。
サーバーについてはご指摘のとおり「放置したらどうなるのか」の実験を行っている
状態となっておりまして近日中に全リニューアルを計画しております。
0329hidebou
2010/07/26(月) 01:34:23なりえるかも知れません。今だから話せますが旧HTABOXの最大の弱点はmshta.exe
という名前のダミーを作られた場合、本物かの判断が難しいことでした。今はその
mshta.exeを使わずに自プロセス内に同等のインスタンスを生成できているわけで
すからそのアドバンテージを活用しない手はないかも知れません。
0330hidebou
2010/07/26(月) 01:49:40たので、この手の機能追加はストレスによる食欲不振を伴ったでしょうが、HTABOX2
用のC++ソースコードは内部もCOMで形成されていますので、まるでスクリプトを書く
感覚で動作を拡張できます。つまりAクラスはBクラスより前で宣言されていなければ
ならないというスパゲッティーの要因から開放されているからです。
0331hidebou
2010/07/26(月) 02:15:53ると推察しているんです。アプリケーションにとって起動時のレスポンスは全体の
印象を決める大きな要因ですが、全部をHTMLパーサーに任せた場合もっさりした印
象をぬぐえないんです。実際にサイズの大きなアプリケーションでテストは行って
いなのですが、ボタンやメニューでの操作を起点に必要とされる関数ならHTML構築
とは別スレッドのスクリプトエンジンでパースすればクイッキーな初期ウインドウ
構築が可能なのではないかという意味合いもあります。
0332デフォルトの名無しさん
2010/07/26(月) 20:42:34(個人的にはミニWIN32APIの将来的な拡張に期待。エラーメッセージもここで操作するとか)、
HTML(またはmshta.exe用のHTA)をリソースとする利点はプログラミング初心者向けに、
HTABOXコアの敷居を下げることに尽きるかと愚考。
JS・VBSリソース時の隠蔽はHTABOXコアの新手法、HTMLリソース時の隠蔽は
>>329の旧HTABOX手法+IHTMLDocument系参照拒否というのは充分に有用だと思います。
0333hidebou
2010/07/27(火) 00:33:45ご意見ありがとうございます。HTMLドロップとスクリプトドロップの使い分けとい
う方向性で考えてゆこうと思っております。スクリプトドロップは細かな制御を必
要とする場合、単にHTMLの場合は細かな事を考えずにすむというのが理想ですよね。
今日は早速HTMLドロップで何が起こるかを検証していたのですが、ちょっと壁にぶ
つかりました。about:blankで生成して後からdocument.writeする手法に統一した
いというのが大きな方向性なんですが、HTMLドロップの場合逆に実ファイルを生成
して読ませないとデバッガが後付けのexecScriptの内容まで追跡してくるんです。
0334hidebou
2010/07/27(火) 00:44:54で、デバッガはそのファイルに気をとられexecScriptを追跡できないという微妙な
バランスの上に成り立っていたことに気づきました。当初は単純に考えていたので
すが、もう一ひねり必要なようです。
0335hidebou
2010/07/27(火) 18:00:49した場合当該スクリプトブロックコードは内部エンジンでパースされ外見的には
WIN32.ScriptParse("{C8357EDC-0303-44E7-BC27-8332D5D4810E}", document.Script);
というソースしか見えないということになりそうです。改めてスクリプトブロッ
ク単位の内部パースを見直してみると構築タイミングがどうのこうのという件は
私の考えすぎで、スクリプトエレメントのイベントではなく直にパースしなさい
と書くことでwindow.onloadより前にパースは完了するようです。
0336hidebou
2010/07/27(火) 18:15:57隠すことができます。ただし現時点では内部パースする部分に
window.onload = function(){....}自体を書いてもスルーされるようです。
内部パースブロックで関数を定義し、その後の通常パースブロックのグローバル
スコープで直に関数を呼んでも関数の構築は完了しているという望ましい結果で
したので、window.onloadを書いて関数を呼ぶことに問題はありません。
0337hidebou
2010/07/27(火) 18:26:12すこしだけ時間をいただきます。ただ勘違いが無いようにお願いしたいのはHTMLや
HTAファイルをHTABOX以外で実行した場合メニューはただのテーブルに見えます。
例えば外部実行用にMSHTA.EXEをDLLでフックしてWM_COMMAND拾ってメニューを
動かすことはできるのですが、そこまではご容赦願いたいということです。
0338hidebou
2010/07/27(火) 23:20:24ディスパッチですから搬送できるんですが、VBSの関数は本当に関数なんでそれだけ
引き剥がすわけにいかないんですね。クラスを作ってインスタンス化してもらえば
搬送可能でしょうが、VBSにはガベージ・コレクションが無いので誰がReleaseする
の?ということになってしまいます。
0339hidebou
2010/07/27(火) 23:45:57起動を使用していただくことになると思います。勿論隠蔽の必要が無いならばHTML
にVBSを書いても問題ありませんし、両言語を混在させて隠蔽部分だけJSでもいいと
思います。どうしてもという要望があれば昔のHTMLのみ一時ファイル出力後名前付
パイプでスクリプト転送というモードを付け加えることはできますが、ファイルの
生成を必要としないというガイドラインを守りたいと考えますのでご了承ください。
0340hidebou
2010/07/28(水) 09:41:36いといろ見えると思うんですが、C++クラスの中でスクリプトコードをパースして
いつでも利用できるディスパッチメソッドを形成しているんです。これだとWIN32
で書いた低水準メソッドとの混在が自然に記述できて生産性が劇的に向上します。
ただJSを採用した場合単なる関数もディスパッチを形成しますからそこでオーバー
ヘッドが生じます。VBSを採用すればオーバーヘッドが生じない高速なものとなる
はずです。ただVBSで唯一痛いのが名前の大文字小文字を区別できないことです。
Dispatchという機構そのものがそうなのでしかたがないのでしょうが、VBSの場合
コードを考えているより衝突しない名前を考えている時間の方が長いという笑えな
い状況が生まれがちです。
0341hidebou
2010/07/28(水) 13:39:20HTABOX2.EXEがレジストリ登録されていればmshta.exeで実行できます。拡張子を
htmにすればMSE7.EXEでいつもの様にデバッグできるわけです。
HTABOX2.EXEへドロップした実行の場合メニュー構築、スクリプトブロック隠蔽が
有効となります。demo.htaでは<script language="jscript" hide="true">で
隠蔽を指定していますから、スクリプトのソースは
WIN32.ScriptParse("{2692E0BE-08C4-4FDE-9B61-7F7107EF18BD}", document.Script);
というような関数呼び出しにしか見えなくなります。GUID風の文字列はCoCreateGuid
に生成させていて単に予測不能で再現性のない文字列という意味で使っています。
0342hidebou
2010/07/28(水) 13:53:02生成前にMsgBox表示を行っています。その関係上暫定的にウインドウをHWND_TOPMOST
指定で表示し裏に隠れないようにしていますが、これはあくまで暫定的な措置です
HTABOX2.EXE全般にいえることですが、動的document.writeですから画像等を相対
参照する場合のベースパスはありません。これはカレントディレクトリの参照規格
を明確にした後に個々で処理していただくことになると考えています。
0343hidebou
2010/07/28(水) 17:39:09C/C++でのプログラミングもしかり、どんなに巧妙に書いたつもりでも3日も経てば
改善すべき点が見えてきて全部をぶち壊したくなります。考えてみれば私の3年半
はその繰り返しでした。C++とは自分なりの言語仕様を作る言語なわけで、自分が
納得できる仕様を確立することができなかった時間と表現できます。
0344hidebou
2010/07/28(水) 17:52:07//クラスは原則としてIDispatch継承とし、IDsipatchExのコンテナに乗せること
このルールによりコンテナのポインターさえ入手できればプログラムの全域で
総ての関数を自由に呼ぶことができるというごく当たり前なものでした。
0345hidebou
2010/07/28(水) 18:11:43サーバーとして機能するという副産物を生み出します。特にEXEの状態でCOMサーバ
ーを形成すれば、DLLとは違い主体的に動作をコントロールできます。自身がスタン
ドアロンの状態で起動された場合は内部実行メモリ空間へレジストリとは無関係に
COMインスタンスを提供できることをHTABOX2.EXEは利用しているわけです。
0346hidebou
2010/07/28(水) 18:54:19でしたが、私は私の問いに回答を見出せたと安堵しております。ちょうど1ヶ月前
我が家に来てくれた子猫は私の傍らの椅子で寝そべりながらその愛らしいしぐさ
で私を慰めつづけてくれました。今回の仕事はその子猫に捧げたいと思います。
0347デフォルトの名無しさん
2010/07/28(水) 19:51:37スクリプトを書きつつ正式版リリースに備えるべきですかね
デモ版で試させていただいた結果では、まず
dim Document: set Document = HTA.document
dim Window: set Window = HTA.window
としておいてHTAのスクリプトには行末に:を追加、
FunctionまたはSubのプロシージャを抜き出して関数の定義に押し込んでGetRefでイベントと接続、
残ったHTAは行頭に'を追加して'#BEGIN_HTMLと'#END_HTML間に送れば
なんとなく動きました(省略しすぎ)。
それと一仕事終えたところの要望で申し訳ないですが、今回のデモ版で使われているHWND_TOPMOSTを
<body topmost="true">のような感じで呼び出せると有難いです。まあ他にも、
独自コンテキストメニュー
ttp://www.kiku-net.com/webcraft/TIPS/TIPS-003.html
を使いたいのでHTAタグのcontextmenu="yes"復活とかきりがないんですが……
0348hidebou
2010/07/28(水) 23:14:07うちわのC++ルールがひと段落なだけでHTABOXについてはこれから本腰をいれさせ
ていただきます。力不足でファイルを出力しない形式でHTMLがドロップされた場合
VBSを隠蔽できていませんが、引き続き努力しようと考えております。
TOPMOSTについてはSetWindowPosをスクリプトスコープへ提供することでの対応に
なる予定です。HTAタグのcontextmenuは知りませんでした。現状では右クリック
イベントをメッセージループで独占していますから、余計なお世話になってしまっ
ているわけですよね。今後の課題とさせていただきます。
概ね技術的なチャレンジも終了し、方向性も決まってきたので、できれば複数のオフ
ィシャルユーザーで中枢部分を合議しなから開発してゆくという手法がとれないか
と考えています。今後ともご指導お願いいたします。
0349hidebou
2010/07/29(木) 02:59:25隠蔽転送に成功しました。単にDISPATCH_PROPERTYGETが失敗したらGetRefという
ロジックです。ただしclass宣言はNGです。はたしてclass宣言だけで実体の無い
状態が何者なのか今のところつかみかねています。
0350hidebou
2010/07/29(木) 03:21:43DEMO.HTAには隠蔽VBSブロックが存在しHTABOX2.EXEへのドロップ実行ではソース
がJS同様に隠されることを確認できると思います。私は活きたVBSコードを書けない
のでVBS使いの方にこのスクリプトブロックへさまざまなコードを書いていただいて
不具合をあぶり出せれば大変助かります。classには未対応ということをご理解いた
だいたうえで。
0351hidebou
2010/07/29(木) 10:49:30ば隠蔽可能というルールにはできそうです。今のところ set Obj = New Hoge
で何が起こっているかを推察した場合class定義部分のコードを再評価してディス
パッチを形成しているとしか思えません。現実的に定義だけを隠蔽して非隠蔽ブロ
ックで実体を宣言することは無いと思いますので十分実用に耐えるのではと考えま
す。
0352hidebou
2010/07/29(木) 11:33:55DEMO.HTAの隠蔽VBSブロックで単純なclassを定義、インスタンス化しています。
隠蔽VBSブロックでclassを扱う場合は宣言したブロックで変数にsetしてください。
class宣言そのものはHTMLスクリプトスコープに出現していませんから別ブロック
からnewしようとしても「クラスがありません」と警告されますがこれは仕様です。
0353hidebou
2010/07/29(木) 12:00:39概念に縛られているのが気になります。でも文句があるならvbscriptのインター
フェースをラップしてParseに前処理を加えることでカスタマイズできるかも知れ
ませんね。99%他人の仕事で1%だけの労力なのに自分で作ったふりができるところ
がCOMの恐ろしさでもあります。
0354hidebou
2010/07/29(木) 12:40:01スクリプト起動のメリットは
...HTAの表示タイミングそのものをコントロールできる。
...必要によっては何度でもdocument.writeで内容を置き換えられる。
...デバッグ時のメニュー外観がリリース時と同じである。
HTML起動のメリットは
...通常のHTMLアプリケーションをそのまま実行可能である。
...ディスパッチ転送を意識することなくコードの隠蔽が可能である。
思ったより後者の出来が良かったのでコンパクトなものなら後者で書きたいですね。
ちなみにHTMLドロップ時にC++内部で行われていることはスクリプト起動動作の手
順とまったく同じです。HTA生成後は"WiteForWindow"で待機しています。
0355デフォルトの名無しさん
2010/07/29(木) 18:22:33<script language="vbscript">
Set xmlHttp = CreateObject("Microsoft.XMLHTTP")
xmlHttp.open "GET", "http://headlines.yahoo.co.jp/hl?c=flash", False
xmlHttp.setRequestHeader "If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT"
xmlHttp.send
Set DataFile = CreateObject("Scripting.FileSystemObject").CreateTextFile("./Res.txt")
DataFile.Write xmlHttp.responseText
DataFile.Close
CreateObject("WScript.Shell").Popup "OK"
Set xmlHttp = Nothing
Set DataFile = Nothing
Window.Close
</script>
</html>
デモ版全てのバージョンで上記コードでは4行目、
xmlHttp.open "GET", "http://headlines.yahoo.co.jp/hl?c=flash", False
のようなXMLHTTPオブジェクトのopenメソッドがHTAとWSHのどちらからの起動でも
IEスクリプトエラーとなるのを確認しましたので、ご報告いたします。
……ソース隠蔽を検証する能力はないんです済みません
0357355
2010/07/29(木) 21:18:35エラーはでないのですが、>>342のカレントディレクトリ絡みからかRes.txtが同一フォルダに保存されないですね
0358hidebou
2010/07/29(木) 23:30:10詳細な動作報告をしていただいてありがとうございます。まずはっきりしているの
は、あらゆるパスは絶対パスで処理していただく事になります。これはabout;blank
で生成後document.writeする事が要因なのですが、拡張機能が遅延構築される従来
の欠点を克服できるという大きなメリットの代償ですのでご了承ください。
XMLHTTPまわりのエラーについてはこれから検証してみたいと思います。今後とも
ご指導よろしくお願いいたします。
0359hidebou
2010/07/30(金) 00:30:22Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
xmlHttp.open "GET", "http://headlines.yahoo.co.jp/hl?c=flash", False
「書き込みできません」が当環境Windows2000Serverで発生します。document.write
だからセキュリティー的に蹴られることはないと思うのですが、スレッドモデルが
原因だとすれば、貴重な勉強の機会をいただいた事になるかと思います。
0360hidebou
2010/07/30(金) 01:29:15有効ではありませんよね。特例としてローカルファイルであることを条件に別ドメイ
ンへのリクエストが許可されるとしたら、about;blank生成のHTMLだと蹴られると
いうストーリーはありそうな話だと思います。
実ファイルを指定してHTMLを形成しながら生成前にWIN32ディスパッチを送り込む
方法がひとつだけあります。WIN32API的にHTMLダイアログを表示する方法です。
HTMLダイアログの引数オブジェクトとして指定したディスパッチは当然の事ながら
HTML構築時に参照可能だからです。HTAタグによる修飾は無効ですがHTMLダイアログ
ベースの方が自由度が高いと評価する理由はこの辺にあります。CreateDlgWindowの
引数として実パスを指定するオプションを追加したいと思います。
0361hidebou
2010/07/30(金) 03:06:10HTTP系のリクエストは成功しますし、格納後はres://に変換することで実ファイル
扱いになると考えます。こんな小さな変更でも予期しない事態が複数発覚し、その
都度アンドキュメントな部分の学習をさせていただいていることをありがたく感じて
おります。
0362hidebou
2010/07/30(金) 04:31:22あれば、それがHTAでなければならない理由は希薄なのではないか」というテーマ
を持っています。「実ファイルでなければエラー」という事態は想定内で、そうい
う要求のために親を持たないHTMLダイアログをHTAと対等な機能を持つクラスとして
用意していた次第です。
0363hidebou
2010/07/30(金) 12:52:33なか興味深い動きをします。好意的に解釈すれば「そいういう使い方を想定してい
ない」になりますし、そうじゃない見方をすれば「そういう使い方をして欲しくな
い」になります。改めてプログラミングとは終わりの無い推理ゲームだと痛感しま
した。この技術よりスケルトンHTMLファイルを読ませ、レジストリに依存しない形
で注入したディスパッチ経由で内容を自由に操ることができます。
0364hidebou
2010/07/30(金) 14:21:10暫定的にCreateDlgWindowはひとつの文字列引数をとります。従来の引数無しと等価
な呼び出しはCreateDlgWindow("about:blank")となります。
HTTP GETを実験するためのソースを提示します。c:\http.htmを以下の内容で作成します。
<html>
<head><title></title></head>
<INPUT type="button" value="Button" ID=Button1>
</body>
</html>
0365hidebou
2010/07/30(金) 14:25:23dim WIN32
'#define set '
set WIN32 = CreateObject("HTABOX.Application"):WIN32.ScriptFullName = WSH.ScriptFullName
'#undef set
'HTAインスタンス、主要ディスパッチ、HWNDを変数に保存しています。
dim DLG: set DLG = WIN32.CreateDlgWindow("c:\Http.htm")
dim SCR: set SCR = DLG.Script
dim HWND : HWND = DLG.FraHwnd
sub GetHttp()
Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
xmlHttp.open "GET", "http://headlines.yahoo.co.jp/hl?c=flash", False
xmlHttp.setRequestHeader "If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT"
xmlHttp.send
Set DataFile = CreateObject("Scripting.FileSystemObject").CreateTextFile("c:\Res.txt")
DataFile.Write xmlHttp.responseText
DataFile.Close
WIN32.MsgBox "OK"
Set xmlHttp = Nothing
Set DataFile = Nothing
end sub
set SCR.Button1.onclick = GetRef("GetHttp")
call DLG.Show()
call WIN32.WiteForWindow(HWND)
call WIN32.MsgBox("正常終了")
set WIN32 = nothing
set DLG = nothing
set SCR = nothing
0366hidebou
2010/07/30(金) 14:31:47いので現状ではあまりHTABOX2で実行するメリットがないことを謝らなければなり
ませんが、HTTP系のように実パスによるHTML生成が必要な時はCreateDlgWindow
で対応してゆこうと考えております。
0367hidebou
2010/07/30(金) 15:16:01<html>
<head><title></title></head>
<body>
<INPUT type="button" value="Button" ID=Button1>
</body>
</html>
8月からサーバーを営業運用できるように整備する作業に入りますのでしばらくレ
スポンスが悪くなるかも知れません。自身のサーバー管理スクリプトをHTABOX2の
上で書いてコモンダイアログやWIN32APIを追加してゆくつもりです。この場が無か
ったら皆さんから励まされてプログラミングすることも無かったでしょうからこの
サーバーを管理してらっしゃるスタッフの方にも感謝申し上げます。
0368hidebou
2010/07/31(土) 06:06:47てください。私のやっていることはスクリプトをスクリプトの知恵の輪で解決しよ
うとすることを楽しみとしてきた方たちにとって大変興ざめな事だと思います。
従来でもオリジナルのCOMを使えば何でもありでしたが、逆にそういたことをせず
に知恵だけで問題を解決してゆくゲームがスクリプトだという捕らえ方もできると
思いますし、私自身それに興じてきました。
0369hidebou
2010/07/31(土) 06:18:20ることによりレジストリに登録していない形でのCOM拡張を実現していますから
従来の「COMを使わずに」が「何もインストールせずに」だとすれば単に置くだけ
で機能するHTABOXは「COMを使わずに」に含まれる反則技ということになります。
0370hidebou
2010/07/31(土) 06:32:29スクリプトを単に知恵の輪を楽しむルールではなしに実際に運用し、販売できる
アプリケーションを開発する手段として昇華させる為にコードを書いています。
「スクリプトは所詮個人のツール用」という嘲笑はいつまでも存在すると思いますが
私は私の夢を実現するために愚直にもがき続けようと思っています。
0371hidebou
2010/08/01(日) 11:23:54アプリケーションを格納して配布することを目的としていますが、パブリック
COMサーバーとしてDLLまたはEXEを構築する手順をすべてスクラッチコード
で実装していますので、ドロップしたスクリプトをCOMDLLやCOMEXEとして
配布することに技術的障壁は存在しません。
0372hidebou
2010/08/01(日) 11:35:44するだけでなんらCOMに対する知識なしにオリジナルのCOMコンポーネントを
生成できる機能を提供することができます。従来スクリプトを使ってもらう
ということはコードを使ってもらうということでしたが、パース後のディス
パッチのみを使ってもらうという選択肢ができるわけです。
0373hidebou
2010/08/01(日) 12:10:56あらゆる言語環境から利用できることになります。動作環境がWindowsである
ことを公表する必要はあるでしょうが、内部がスクリプトであることを公表
する必要はまったくありません。
0374hidebou
2010/08/01(日) 15:12:05EXEを実行するユーザーはそのウインドウがCreateWindowExで生成されたのか
CreateHtaWindowで生成されたのかを知る必要はありませんし知らせる必要も
ありません。単にそのEXEが代価を支払うに足るものであるかどうかが評価
されるべきです。
0375hidebou
2010/08/01(日) 15:35:04「汗をかいた人間が報われるフェアーなルール」を実現することです。
資本や信用が無くてもそのアイディアと情熱でひとつのプロジェクトを完成
させ、それが正当に評価される世界を思い描いているのです。
0376hidebou
2010/08/01(日) 15:56:33知恵と努力で世界を相手にアプリケーションを発表できる。そんな未来を
見るために、消えようとする蝋燭に油を継ぎ足すような日々をすごしています。
0377hidebou
2010/08/02(月) 13:17:09HTTPGETサンプルのhttp.jsを追加しています。http.jsは実ファイルを指定した
HTMLダイアログベースのウインドウでメニューを利用する簡単な例となっています。
また、可変長引数部分をきちんと書いてInvokeとInvokeExの速度を向上させました。
0378hidebou
2010/08/02(月) 17:26:05を用意して愛聴しているラジオサイトを紹介します。ttp://www.dr.dk/radio/
128kですが極めて安定していますしコマーシャルも入りません。DR Worldという
チャンネルは各国の民族音楽を主体としていて日本代表は沖縄音楽の場合が多い
ようです。
0379hidebou
2010/08/02(月) 19:09:49完璧と考えるソースコードがエラーの場合、それを解決できるのはさっきま
での自分とは別人の自分でなければなりません。そうでなければ永遠に間違
いに気づかないことなります。そんな状況を続けていればどうなるかは目に
みえていますよね。音楽は人間が作り出した最高の芸術形態だと思います。
時間と言う刹那から逃れることのできない悲しさもその楽しさも音楽に凝縮
されている気がします。食うに困らない状態になれたら一日ピアノを弾いて
暮らしたいと思っています。
0380デフォルトの名無しさん
2010/08/02(月) 21:01:34……スクリプトでスケルトンHTMLを書き出し、起動後に削除という使用法を咄嗟に思いつきましたが、
>>339のファイル生成が不必要というガイドラインに抵触するようでもあり。
0381hidebou
2010/08/03(火) 08:47:42HTABOXそのものは一時ファイルを生成しないことを約束したいという意味での
ガイドラインですので開発者が必要とすればHTMLダイアログ用のHTMLファイル
を一時出力してパスの解決を簡略化するという手法は多いに活用されるべき
だと考えます。スケルトンHTML+スクリプトという手法は最も柔軟性のある手段
としてHTABOX2の主たる開発手法となるかも知れません。
0382hidebou
2010/08/03(火) 09:31:06HTAは実パスを指定して生成した場合onloadに間に合うような形のでディスパ
ッチ注入ができません。結果としてHTABOXコアのように注入を待ってWIN32を
使用する必要が生じます。これを回避するためにHTABOX2ではabout:blankで
生成->WIN32注入->HTMLのwrite->メニュー構築とcloseという手順にしたいと
考えています。
実パスを指定しないと動作しない、または書きにくいケースがあります。
HTABOX2では親の無いHTMLダイアログをHTAと同等に操作でき、実パスを指定
した生成を行ってもダイアログの引数としてWIN32が与えられていますから
開始当初からWIN32は存在します。WIN32を有効にするには実パスHTMLのスク
リプト冒頭で var WIN32 = window.dialogArguments; を宣言していただく
必要があります。
0383hidebou
2010/08/03(火) 10:31:43何の制約も無いウインドウとなります。プロセス中に複数生成させても何ら
問題は発生しません。HTABOXコアを発表する前にHTMLダイアログでこれを実
現しようとしていたとお話したことがありましたが、HTMLダイアログの場合
EXCELのように親ウインドウに子ドキュメントが複数存在するというMDI状態
を作れるのです。今後の研究課題ではあるのですがMDI関連のAPIをスクリプ
トへ公開してコントロールすることも可能だと考えています。
0384デフォルトの名無しさん
2010/08/03(火) 19:53:39HTABOXコア本体と同じくIE5.5以上を動作条件とすることができますね。
ただ、
HTAをもっと流行らせる計画 Part2
http://pc12.2ch.net/test/read.cgi/tech/1220874815/48-51
あたりで触れられているXMLHTTPオブジェクトの種類によってはリファラにHTAのフルパスが含まれる、
というのがHTABOXコアではどうなるのかちょっと気にはなります。
まあ自力で検証する技量はないんですが……
あとhttp.htmウインドウのサイズと位置をどう指定されているのかご教示いただきたく。
やはりHTAをデスクトップアプリケーションらしく見せるにはこの記憶が欠かせないと思いまして。
0385hidebou
2010/08/03(火) 22:39:26考えてみるとHTABOXコアも一旦難読化したHTMLをdocument.writeしていますか
らローカルファイルからのHTTPリクエストは「書き込めません」がでます。
ただしフレーム形式としてサーバー上のHTMLの場合はdocument.writeにもかか
わらず成功していたので不思議です。勉強が足らないと痛感しています。
HTMLダイアログの初期サイズなんですが、リリース時にはデフォルトのアプリ
ケーションウインドウサイズにしようと考えています。勿論非表示な状態から
表示する段階でSetWindowPosにより自由なサイズとすることもできるようにな
ります。現状はまったくずさんなことにHTAが事前にCreateされていればその
サイズをデフォルトとして記憶、Createされていなければ640*480というのが
真実です。
0386hidebou
2010/08/03(火) 22:58:53を指定したWindowを無駄に生成して取得することになるんですが、例によって
基本的な知識が抜けている結果の愚行ではないかと不安です。どなたかもっと
スマートな方法をご存知の方そっと教えてください。
0387hidebou
2010/08/03(火) 23:56:02をそのまま採用するつもりです。それが一番普通のアプリケーションらしく
見えるのではないかと考えているからです。現状のHTMLダイアログはサイズが
決定された後にスクリーンサイズを取得しセンタリングされています。
0388hidebou
2010/08/04(水) 01:04:34のですがほったらかしにしていました。フォルダダイアログをズリズリする
とソリティアのクリア画面状態だったんですが、なんとか打開策が見つかり
そうです。これで最低限の条件はクリアできたかなぁっと思っています。
0389hidebou
2010/08/04(水) 18:07:35コモンダイアログを使用する例としてDialogs.jsを追加しました。あくまでデモン
ストレーションですからリリースまでに仕様の変更があるかもしれませんが若干の
説明をさせていただきます。
SCR.Func1 = function()
{
var Fold = WIN32.BrowseForFolder(HWND,"タイトル",0x0010,"c:\\");
var Path = (Fold != null)? Fold.Items().Item().Path : "";
WIN32.MsgBox(Path);
}
SCR.Func2 = function()
{
var Path = WIN32.GetOpenFileName(HWND, "開く", "ALL(*.*)\\0*.*\\0TEXT(*.txt)\\0*.txt\\0", "c:\\", 0);
WIN32.MsgBox(Path);
}
SCR.Func3 = function()
{
var Path = WIN32.GetSaveFileName(HWND, "保存", "ALL(*.*)\\0*.*\\0TEXT(*.txt)\\0*.txt\\0", "c:\\", 0);
WIN32.MsgBox(Path);
}
0390hidebou
2010/08/04(水) 18:14:47上記例のようにItems....でパス文字列を取得する必要があります。第3引数は
オプションの数値です。オプションフラグの詳細についてはMSDN等で確認できる
と思います。
0391hidebou
2010/08/04(水) 18:23:23説明をします。まず第3引数のフィルターですが、本物のWIN32APIは区切りとして
\0を用いますが、スクリプトからの呼び出しでは文字列中に\0を表現することが
できません。そこで\\0を代替とすることにより内部で\0に変換しています。
終端は\0が二つ必要ですが文字列終端には自動的に一つ付加されますのでスクリ
プトコードからは\\0を終端とすればいいわけです。
0392hidebou
2010/08/04(水) 18:34:17に便利なオプションかも知れません。これを書きながらこのオプションの部分を
コメントアウトしてビルドしていたことに気づきましたので数分後に再度更新し
たいと思います。デモなんですがこれで少し遊べるようになったかと思います。
0393hidebou
2010/08/04(水) 18:56:24と<-->になってしまうのはちょっと美しくない点なんですが、これを解決す
るためにはダイアログで親のアクティブを奪ってからその子としてコモンダ
イアログを...というような手法しか成功していないものですから今後の課題
とさせていただきます。
0394hidebou
2010/08/04(水) 20:05:40透明性です。従来HTABOXコアが内部で処理している事をそのままCOMとして公
開すれば、書いている私も楽だし開発する側もメカニズムが見えて利用しや
すくなるはずだという発想からスタートしています。事実、現状でのソース
ボリュウムはHTABOXコアの半分にも満たない量ですんでいます。
0395hidebou
2010/08/04(水) 20:21:06現状では私が用意しないといかなるWIN32APIも使えないわけですが、例えば
MessageBoxという名前要求があった場合にuser32.dllの当該モジュールを
動的にコールできるようにしなければならないだろうと考えています。
0396デフォルトの名無しさん
2010/08/05(木) 17:15:42Excel VBAとかSFCmini+win32api.jsとかを経由するしかない現在に比べると大進歩になりますね
WIN32APIを叩けるのでやろうと思えば割と何でもできることがHSPの強みの一つのような気がしますし
0397デフォルトの名無しさん
2010/09/03(金) 15:51:420398デフォルトの名無しさん
2010/09/04(土) 22:08:420399hidebou
2010/09/04(土) 22:14:18ご迷惑をおかけします。サーバーメンテナンスのためページのGETには答えて
いません。ttp://kuroda.bglb.jp/htabox/demo.zipはダウンロード可能です。
0400デフォルトの名無しさん
2010/09/05(日) 19:59:25test.exe.manifest ってな感じで同じ階層にmanifestとdllを置いておけば、
wshのときと同じようにdllが使えます。
システムに外部のDLLを入れたくなくて、ポータブルで運用したい人は、
独自の関連付け出来るXFinderなどで、マニフェストつきのcscriptやwscript,mshtaを
関連付けて起動させるか、スクリプトの冒頭で、指定の場所のマニフェスト付き
exeで再起動させる方法がありました。
htaboxの仕組みをつかうと、例えばtest.exe用のマニフェストとDLLを置いておくだけで
スクリプトの側ではなにも気を使わずにガンガンDLLを使えます。
そういう意味でも便利です。
>>お前ら、wsh使ってますか? Part7
>> http://hibari.2ch.net/test/read.cgi/win/1190548945/722
722 名前:名無し~3.EXE[sage] 投稿日:2009/12/05(土) 23:46:56 ID:/VdO4Ha3
とりあえず、ポータブルのJScriptでもAutoItXでアプリ制御、SeraphyScriptDialogでGUIフォーム、SFCminiでWin32API、いくつかは動いたんで最後のまとめ。 cscript.exe.manifest の中身。
0401hidebou
2010/09/07(火) 18:02:54貴重な情報をありがとうございます。
VISTAと7はUACがあるのでさまざまなケースを想定して実験を繰り返さなけれ
ばならないことろですが、なおざりになっていることをご容赦ください。
最終的にHTABOX2での格納配布実行ではマニフェストが不要であることをガイ
ドラインにしたいと思いますが、開発者がツールとしてレジストリ登録する
場合にはマニフェスト若しくは右クリックの「管理権限」が必要な仕様にな
ろうかと考えております。今後ともよろしくご指導ください。
0402hidebou
2010/09/08(水) 13:45:58それをきっかけにDirectX系APIをスクリプトから簡便に呼ぶためのブリッジを研究
しました。HTML上のゲームはFlashでそれなりの作品ができるようなのでより高機能
でなければ提供する意味が無いという理由からです。
0403hidebou
2010/09/08(水) 14:05:52ても苦労の割に実りが少ないのは目に見えていますので深入りしない事としました。
DirectDrawによる直接vramアクセス、DirectSoundによるWAVのリアルタイム再生
と録音、DirectInputによる入力ディバイスのリアルタイムステータス取得が主な
機能となりそうです。
0404hidebou
2010/09/08(水) 14:13:48WIN32.CreateDirectWindow(800, 600, 16);
とすればスクリーンが800*600でビット深度16になり、あとはご自由にどうぞ
という展開になろうかと思います。
0405193
2010/09/09(木) 00:40:580406hidebou
2010/09/09(木) 16:11:44ありがとうございます。なにぶん自堕落な私の仕事ですのでゆっくりとした歩みに
なろうかと思いますが、プログラミングそのものをゲームのように楽しめる環境を
提供できたら、たくさんの方がプログラミングに興味をもっていただけるんじゃな
いかと考えています。
0407デフォルトの名無しさん
2010/09/23(木) 19:27:030408hidebou
2010/09/23(木) 21:57:47ありがとうございます。
IIS上の独自認証システム確立に大変手間取りましてごめいわくをおかけしま
した。HTABOXコア旧来のまま復活させますが、HTABOX2をメインに展開させる
予定でおります。まだ基幹システムテストの状態で内容が無いことをお詫び
します。
0409hidebou
2010/09/24(金) 03:14:03単純でMSE7上でブレークポイントを設定しデバッグできるからです。でも問
題がひとつあります。IISメタベースを扱うためのGetObjectなんかは通常の
HTMLセキュリティーでは実行できません。
0410hidebou
2010/09/24(金) 03:22:02WIN32.GetObjectとWIN32.ActiveXObjectという偽者関数を作りました。
これがなかなか便利で、今までHTAやWSHにならざるを得なかったモジュール
を全部ひとつのHTML中スクリプトにまとめる事ができます。次回HTABOX2
デモを更新するときにはこの偽者関数が含まれる予定です。
0411デフォルトの名無しさん
2010/09/29(水) 18:46:03例えば特定のフォルダ名の中のhtmを起動できたっけ?
決め打ちで同じフォルダのhtalibとかの名前のなかの同じ名前のhtmを動かせると
すっきりさわやかなような気がする。
って、もしかしてもう出来てたのを自分が知らないだけかもw
0412デフォルトの名無しさん
2010/09/29(水) 19:36:400413デフォルトの名無しさん
2010/09/29(水) 20:36:16exeのほうで対応しとけば、最初に、隣のhtmを探して無ければ、次は既定値のフォルダ名のなかの
htmを探すとか出来ると思うんだわ。
ほかには、たとえばexeの名前を、hoge__lib.exeにしとけば、同じフォルダのlib内のhoge.htmを使って
htaboxが起動する、というような仕組みってことね。
もう出来てて、自分がしらんだけかもしれないけど。
0414hidebou
2010/09/30(木) 17:58:46有益なご意見ありがとうございます。
HTABOXコアもHTABOX2も最終的には旧HTABOXのようにスクリプトやHTMLを
ドロップし、EXEにして配布することを目的としていますので現在の仕様
となておりますが、肝心のドロップ格納仕様を決めかねておるところです。
起動バッチスクリプトという構想も以前から抱いていましたが、デモを公開中
のHTABOX2.EXEではHTMLではなくJS、VBSを実行主体とできますので、そこから
任意の相対パスにあるスケルトンHTMLを実体化させる手法になろうかと思い
ます。HTABOX2では「単にドロップ」と「スクリプトによる細かな制御」を両立
できる状態にしたいと考えております。
ttp://kuroda.bglb.jp/htabox/demo.zip
0415デフォルトの名無しさん
2010/10/10(日) 17:51:35> 美友紀ちゃん 0.03
> ttp://www.vector.co.jp/soft/win95/net/se115583.html
> HTMLファイルから実行ファイルを作成
> (99.12.21公開 1,171K フリーソフト インターネット&通信:HTML作成:変換)
格納したHTML(とそこから参照している同一フォルダの)ファイルをTempフォルダに展開、
IEコンポーネントブラウザで表示している模様。
ヘルプによるとVersion0.01が99/09/06とIE5.0リリース、
つまりHTAと同年だったんだからこれがそのまま発展していれば……と死んだ子の年を数えてみる
……死因の一部は生成されたexeのアイコンと展開ダイアログとタイトルバーのデザインのような気がしますが。
単純なリソースハッカーのアイコン置換程度では動作しなくなるし。
0416hidebou
2010/10/11(月) 01:16:20ずいぶんと昔にチャレンジしていた方がいらした事は知りませんでした。
HTA出現と同年ということはHTAによって存在意義が無くなると判断されたの
かも知れませんね。HTAは今も昔も変わらず強力な手段な訳ですが、この10年
で悪者というレッテルを貼られている観があって「じゃあ見た目EXEなら文句
ないでしょ?」というのがHTABOXの出発点だったと思い出しました。
0417hidebou
2010/10/11(月) 01:30:28で何らかのソフトをリリースできなかった最大の要因はデバッグ環境と隠蔽後
の実行環境があまりに違うためリリース後にエラーが発生してもどこがエラー
なのか見当がつかない点だったのですが、今回はデバッグ時と隠蔽時の変化が
できるだけ無いようにこころがけました。
0418hidebou
2010/10/11(月) 01:45:03ない方がいいという結論に達しましたので、HTABOX2という呼称は封印して
HTABOXコア2.00を次期リリースバージョンの呼称にしたいと思います。
HTABOXコア2.00は同名JS、VBSが存在すれば優先的に実行することにより従来
よりきめ細かな制御が可能となります。またCOM登録してデバッグもできます。
0419hidebou
2010/10/11(月) 01:58:41することにより行います。つまりhoge.jsをhoge.jsxxにエンコードし、同名
ファイル検索時のルールとしてhoge.jsxxを優先し内部でデコード後に実行
するものです。デモではHTA中のスクリプト隠蔽も実験していますが、やは
りabout:blank生成のHTAでは自身の実パスが決定していないことからIE8で
予期せぬ動作を見せる部分があるようです。
0420hidebou
2010/10/11(月) 02:13:48次期リリースバージョン呼称は HTABOXコア2.00となります。
HTMLまたはHTA中のスクリプトエンコードはEXE内への格納仕様が決定するまで
実装されません。
外観を記述した実在HTMLへJS、VBSで関数ディスパッチを追加する手法の場合
はソースコードを隠蔽することが可能となります。
0421デフォルトの名無しさん
2010/10/13(水) 22:17:15wikipediaにはIE5.0が必要とあるけど、僕は'96年頃にMSVS4.0にHTAが付属してたと記憶してるよ。
プログラマになったばかりだったので勉強してたんだけど、勉強した結果を報告したら殴り倒された。
「こんなおもちゃで遊ぶな!」ってさ。
0422hidebou
2010/10/21(木) 02:39:17ですから内部でHTA的な事をしていることをまったく隠してHTMLでGUIをデ
ザインし、隠蔽スクリプトをJSかVBSで書いて変換するとEXEが生成される
統合環境を提供できれば理想的なんですが力が及びません。
3年以上も勉強しながら未だ皆さんに喜んでいただける物を提供できていない
自分を省みて、情けなく、ただ情けなく気分が落ち込む日々です。
0423415
2010/10/24(日) 14:53:19> GlueX(グルックス) 0.9.2
> ttp://www.vector.co.jp/soft/win95/prog/se128132.html
> ActiveXやHTMLを部品として使いJavaScriptでWIndowsプログラムを作成する環境
> (00.03.23公開 838K フリーソフト プログラミング:ツール)
ヘルプやまだ生きていた
ttp://www.vsa.co.jp/Download/GlueX/
を見ると面白そうなのに自環境では起動できない……
0424hidebou
2010/10/25(月) 22:53:12> ActiveXやHTMLを部品として使い...はとても先進的なキャッチですね。
やはり自作COMでブリッジになると思うんですがVC++の半オートメーションで
COMを作成するとプログラムが複雑になった場合改訂が億劫になるんです。
自動でコードが生成される代わりにトラブルの切り分けが難しくなるからです。
0425hidebou
2010/10/25(月) 23:08:12手法を実験していますので、いつかご紹介できたらいいと思っています。
話題が手前味噌な方向へ変化して恐縮なのですが、
プログラミング初心者向けにコンテンツを用意してみました。ターゲットは
小学生高学年?くらいなのですが、「HTAで迷路を作って遊ぼう」を題材に
しています。すでにベテランの方もオブジェクトの設計手法で参考にしてい
ただける部分があるかも知れません。
http://kuroda.bglb.jp/hello/index.htm
0426hidebou
2010/10/28(木) 00:51:27親、上、下のフレーム構成とし実在親フレームを対象にJSからDialog生成
手法でコントロールしています。親、下フレームはクライアント側にHTML
ファイルとして配布していますが、200Kを超えるスクリプトは全部JS内に
存在しHTMLの外観形成とは非同期に遅延転送されます。したがってスクリ
プトの量にもかかわらずクイッキーな起動が可能となりました。
0427デフォルトの名無しさん
2010/10/28(木) 00:52:500428hidebou
2010/10/28(木) 01:01:58スと同じ環境で開発を進めることができます。課題はサーバー側に子フレーム
を置いた場合何が可能で何が不可能なのかの線引きを明確にすることです。
今回のリリース作業でもIE7とIE8の解釈の違いでドタバタしましたのでそこ
が明確になりしだい実用的なデモをお見せできるだろうと考えています。
0429hidebou
2010/10/28(木) 01:20:16ありがとうございます。
サーバー側の仕様も固まってきましたのでお手持ちのPCで簡便に独自認証
システムが構築できるシステムとして技術提供できる日も近いと思います。
もはや日々の糧にも困窮する状況なのですが、初心を貫徹したいと思って
います。
0430hidebou
2010/10/29(金) 02:16:30HTABOXコア2.00で作成し、ソースを隠蔽した単純なゲームをリリース
することにしました。内容はつまらないものなのですが、こんな風になる
というイメージはつかんでいただけると思います。
ttp://kuroda.bglb.jp/vector/maze.zip
0431hidebou
2010/10/29(金) 05:19:28HTMLなら鼻歌まじりで作れます。通常はその代償にスクリプトが見えてしまう
わけですが、それもいやだというわがままからHTABOXは生まれたわけです。
これで量産体制ができましたので下手な鉄砲なんとやら状態でネタさえあれば
2,3日でドキュメントも含めたアプリを1本作れそうです。
0432hidebou
2010/10/30(土) 00:19:26いいものやらとキーを叩く手が止まります。私と、このスレッドにお付き合
いいただいている方にはある程度ストーリーがインプットされていますから
理解できる事でも、初めて見る人へ十分な説明を行うためにはかなりのボリ
ュームの文章が必要になる気がします。
0433hidebou
2010/10/30(土) 00:34:56・個人用ツールとしてHTA+α的な使い方のニーズ
・WSHからHTMLを制御したいというニーズ
・最終的にアプリケーションとしてリリースしたいというニーズ
程度の分類をしないと書いている方も混乱してしまいそうです。
そしてフレームアプリケーション構築と一部ASP化の留意点、
IISでの認証制御の手法、独自認証のためのISAPIDLL、HTABOXサーバー、
最後に総合的なHTABOXシステムの管理手法という流れにしたいと思います。
0434hidebou
2010/10/30(土) 01:28:51づければ話がわかりやすくなる気がします。このブラウザにはWIN32というIE
には無いオブジェクトが存在し、コンパクトでレジストリにも関与しないか
らアプリケーションと一緒に配布できる。必要であれば独自エンコードを利用
してソースを隠蔽できる。という流れなら理解しやすいかも知れません。
0435hidebou
2010/11/02(火) 13:34:20CreateHtaWindow(path);
はpathで指定されたファイルを表示します。動的に生成したい場合は引数を
about:blankにして生成した後にopen, write, closesしてください。
CreateDlgWindow(path, arg);
はpathで指定されたファイルを表示します。第2引数にWIN32を指定すればHTML
中のスクリプト冒頭からWIN32は有効です。
0436hidebou
2010/11/02(火) 13:54:48エンコーダーは指定されたパスのJS又はVBSと同名のEXEを生成します。EXE内
のリソースにエンコードしたスクリプトが格納され、この時EXEアイコンリソ
ースも任意なものに置き換え可能とします。生成EXEが起動された場合はリソ
ース中のスクリプトが実行されるものとします。
尚、ソースの全面書き換えなので既存HTABOXコアの一部機能が継承されない
場合もありますが、ご指摘いただければそのつど追加します。またDirectX系
機能の提供は2.00の安定が確保された後に予定しております。
0437hidebou
2010/11/03(水) 01:33:50アイコンリソースをちょっと甘くみていたようです。だいたいどんなサイズ
と色深度のアイコンを何個必要とするかは用途に左右されるわけですし、
それを動的にコントロールするのはかなりハイテクニックな事のようですね。
VisualStudioが生成するデフォルトアイコン(32*32)の状態でバイナリ置き
換えが可能な方はいいとして、別なサイズが必要な場合は希望のicoファイル
をお借りして再ビルドするサービスで対応した方が確実だと考えています。
0438hidebou
2010/11/04(木) 02:59:00います。世間様から見ればまさに重箱の隅をつつくような分野の事を3年以上
にわたって追い続けてやっと自分でも満足のいくゴールにたどり着けたと思い
ます。本当にこの老いぼれた人間の愚行を暖かく見守っていただいた方々に
感謝します。私に何らかの功績があるとすればそれは私を支えてくれた方々
の功績だと痛感しております。
0439デフォルトの名無しさん
2010/11/04(木) 03:00:140440hidebou
2010/11/05(金) 01:58:50ありがとうございます。不摂生な生活にもかかわらずこれといった病にも縁
が無いのはご先祖様のたくましいDNAのおかげかもしれません。
スクリプトの格納仕様を決定しました。JSとVBSの混在も...と考えましたが
いずれかの言語で単一ファイルとしました。大きさは無制限です。暗号深度
は内部呼称レベルBにしました。これは同一ソースでもエンコードするたびに
異なったバイナリとなる方式です。また、極端に短いソースのエンコードを
繰り返すアタックに対して何らかの制限を加える可能性もあります。
今日はすこし早く寝ます。
0441hidebou
2010/11/05(金) 02:26:09DLLに格納し指定されたCLSID、クラス名、スレッドモデルで内部情報を置き
換えます。使う側はディスパッチ形成がスクリプトで行われているとは思いも
しないでしょうからちょっと見栄が張れるかも知れません。
COMBOXという名称がいいかと思いましたが既に検索にわんさかヒットするので
COMDLLBOXとでもしてリリースしたいと考えています。
0442hidebou
2010/11/05(金) 22:31:09ますが、明日HTABOXコア2.00をお見せできるようにドキュメントの作成に没
頭しています。プログラミングという作業は考えている時間の方が長くタイ
ピング量は少ないのですが、文章の作成ではタイピング量が勝負ですので
肩こりに悶えながら作業しております。
0443hidebou
2010/11/06(土) 00:28:37整理して考える事ができました。長文というのはその長さだけで敬遠されま
すからここにその要点を記録しておこうと思います。
0444hidebou
2010/11/06(土) 00:38:12のプロセス内に出現させることから始まりました。別プロセスで実行中の
ドキュメントインスタンスを補足しDLLフックでメッセージを操ることは従来
から行われていたでしょうが、本質を変更できる手法ではありません。
0445hidebou
2010/11/06(土) 00:50:19ンでパースしたスクリプトを遅延転送してコードを隠蔽できるだろうという
発想で進行しました。あくまでもHTML形式ファイルありきで、そのスクリプト
を隠蔽しようとすれば一旦全体がエンコードされていなければならず結果と
して非同期に行われるスクリプトブロックの評価タイミングや、転送スクリ
プトの出現タイミング等の問題を検討しようにも隠蔽されているのでデバッ
グできないという状況に陥りました。
0446hidebou
2010/11/06(土) 01:02:44した。HTMLApplicationをインプロセスで生成する関数そのものをWSH環境で
実行するスクリプトに公開すれば通常のスクリプトと同様にデバッグでき、
単純に当該スクリプトをエンコードしてEXE格納することが可能となります。
HTABOXコア2.00はその手法のためにゼロから書き直されました。
0447hidebou
2010/11/06(土) 01:15:57である必要がありました。VC++のATLに頼らずEXE形式のCOMサーバーを構築
するコーディングにすこし苦しみましたが、C++内部でもディスパッチ経由
で関数呼び出しを行えばまるでスクリプトプログラムのような簡潔さでC++
コードが記述できるという新たな発見もありました。
0448hidebou
2010/11/06(土) 01:32:00JScriptの場合明示的に隠蔽ディスパッチでラップしないとHTML中に公開
したインスタンスから芋ずる式にtoString()でコードが見えることも考え
られますので注意してください。そういった心配の必要が無くしかも高速
なVBScriptに正直心引かれるようになってきました。
0449hidebou
2010/11/06(土) 01:40:39スクリプト拡張でアプリケーションを構築しようという趣旨なわけですが、
今回の改訂はC++プログラマーという立場から見ると進展の無いものになる
ことをお詫びしなければなりません。コモンコントロール等をHTMLで構築
できることをお待ちだと思うのですがもうすこし時間をいただくことにな
ります。
0450hidebou
2010/11/07(日) 23:38:03サンプルを実行しながらデバッガで眺めるWIN32オブジェクトがあまりに
雑然としていたからです。これって何のための関数?と自分でも首をか
しげるものが出てきたりして考古学者気分になりました。
0451hidebou
2010/11/07(日) 23:59:44しなかったのかという点です。もしMSHTA.EXEがDocumentインスタンスを取
得できるCOMコンポーネントだったら、私がこんなものを造るまでも無く
HTMLApplicationは最も簡単で強力なアプリケーション開発手法として認知
されていたに違いありません。
0452デフォルトの名無しさん
2010/11/08(月) 02:55:28以下内容
Source = Microsoft JScript 実行時エラー
Description = 'WIN32.Resource' は Null またはオブジェクトではありません。
Line = 82 Char = 2
SourceLine = ??|
0453hidebou
2010/11/08(月) 11:44:34「どうせ誰も使ってないし」と思ってサーバーサイドのASPをHTABOX2.00の
仕様変更に合わせて書き換えて実験しそのままにしていました。今、元に
戻しましたのでエラーは出ないと思います。ご迷惑おかけしました。
0454hidebou
2010/11/10(水) 04:08:05ファイル構造も決まりましたのでまもなくお見せできます。今回は英語版の
短いドキュメントも作成して日本以外の方にも使っていただこうと思ってい
ます。興味を持っていただける開発者がどれほどいらっしゃるかは未知数で
すが積極的にメールも出そうと思います。ありきたりな言葉ですが、倒れる
なら前向きに倒れたいと考えています。
0455hidebou
2010/11/12(金) 00:52:32ttp://kuroda.bglb.jp/htabox/htaboxcore.zip
同時にHTABOX用のサイトも再開しました。
ttp://kuroda.bglb.jp/htabox/
0456hidebou
2010/11/12(金) 01:15:36気軽にEXEへ変換というニーズとは離れてしまったかも知れませんが、隠蔽
を必要としなければカスタムリソースへバイナリデータを格納するロジック
は確立しましたので、単純にHTAと画像をEXEに格納できてメニューやアイコ
ンドロップが有効というようなお気軽エディションも作れそうな気がします。
0457hidebou
2010/11/12(金) 01:32:11クリック動作を阻害しない仕様としました。SetLayeredWindowAttributes等
のウインドウコントロール関数も実装しています。すべてはこんなソフトに
も関わらず関心をもってくださる方々がいるおかげと感謝しております。
0458hidebou
2010/11/12(金) 14:08:17いつものことですが、主に取り扱いドキュメントの誤植修正のため頻繁
にttp://kuroda.bglb.jp/htabox/htaboxcore.zipは更新されています。
出来る限り最新のファイルをお使いください。
0459hidebou
2010/11/12(金) 17:26:10ttp://kuroda.bglb.jp/vector/maze.zip「四角い迷路」アプリケーション
の設定変更のため一旦利用を停止させていただきます。設定が完了したら
ここでお知らせします。
0460hidebou
2010/11/12(金) 18:06:11の更新が完了しました。外見的には何の変更もありませんが、
HTABOXコア2.00のEXE生成機能を利用したファイル構成に変更しました。
0461hidebou
2010/11/12(金) 18:54:09HTABOXシステム手法が受け入れられればいよいよ量産体制に入れると考えて
います。
0462hidebou
2010/11/13(土) 19:02:26C++でUpdateResourceできる方は利用していただいて結構です。
リソースタイプ "HTMA" リソースID 105
リソースタイプ "HTMB" リソースID 106
リソースタイプ "HTMC" リソースID 107
リソースタイプ "HTMD" リソースID 108
上記変更が加えられた後のバージョンを2.10としてまもなくリリースします。
0463hidebou
2010/11/14(日) 02:00:38いろいろ実験しているのですが、画像格納まで考えるとIDより名前管理
の方が自然ですよね。両者に一長一短があるんでしょうけれど勉強不足で
これがベストと言い切れる方向を見出せていないかも知れません。
いずれにせよHTMLや画像のリソース格納は当面WIN32APIで直に操作して
いろいろな反省を踏まえてからエンコーダーへ追加して行きたいと考え
ています。
0464hidebou
2010/11/14(日) 15:29:59エンコーダーのファイル構成を見れば判ると思いますがヘルプファイル以外
は単体EXEへのリソース格納としています。
ttp://kuroda.bglb.jp/htabox/htaboxcore.zip
リソースタイプに関して現時点で
タイプ "HTM" と タイプ "IMG" が定義されているので当該タイプへの追加
が望ましいという程度の発表に留めたいと思います。
0465hidebou
2010/11/14(日) 16:00:28ヘルプ以外の画像、HTMLをすべてEXE内に格納しました。
旧バイナリでも遊べるかも知れませんが、新バイナリを使用してください。
0466hidebou
2010/11/14(日) 18:35:31スレッドのテーマである「HTABOXコアへの要望」を募集しています。
HTMLアプリケーションだからあれができないこれができないという話は無し
にする事が目的ですから、突拍子もない要望こそ価値があると考えています。
0467hidebou
2010/11/15(月) 02:08:31ばなんで今頃ということになるんでしょうが、私というのはそういう人種で
すからご勘弁ください。で.NETとかASP.NETのドキュメントをまじめに読む
んですがその方向性にあらためて疑問を持ってしまいます。
0468hidebou
2010/11/15(月) 02:28:02るわけです。みんなが同じボタンを同じ順序で押して生成されるコードに満
足するだろうという発想なわけで、そこから外れた創意工夫を活かす機会を
軽視しているように思えます。プログラマーの財産はどのボタンを何回押し
たかではなく再利用可能なソースコードをどれだけ持っているかだと思うの
です。
0469デフォルトの名無しさん
2010/11/15(月) 13:18:33>MS社は「一行のコードも書かずに」が最高の開発環境だと勘違い
言いがかりかと。
でなければ、開発環境や実行環境の
開発にあれほどのパワーをかけないよ。
>プログラマーの財産はどのボタンを何回押し
>たかではなく再利用可能なソースコードをどれだけ持っているかだと思う
そうだと思うけど、それをMSに期待する
ことは間違いでしょう。
0470デフォルトの名無しさん
2010/11/15(月) 19:40:54まだ十分に使い込んでいないいま、とっさに思いつくのは既出のリソース格納を除けば
ウインドゥ表示→アプリケーションメニュー生成のタイムラグ短縮、
それと配布形式exeの改変をアイコンに加えてバージョン情報も許可して欲しいのと
独自言語化しつつあるHTABOXコア向けHTML・WSHドキュメントのさらなる整備ですね
あとは正直、バージョン1代のHTML起動にも未練が……
0471hidebou
2010/11/15(月) 20:48:00「言いがかり」じつに適切な見識だと思います。正直誰かの書き込みを見て
みたくなったのです。大変すばらしい仕事をしているエンジニアがいるから
こうして楽をさせていただいているわけですから文句を言うべきはありませ
んよね。
0472hidebou
2010/11/15(月) 21:01:10表示->メニュー生成のタイムラグは結構根深い問題になります。消極的解決策
としてはメニュー生成完了までウインドウを表示しない書き方も可能です。
バージョン情報リソースについてはできるだけ早期エンコード時に設定できる
ようにしたいと思います。HTML単体の取り扱いについては思い切って旧HTABOX
をきちんと書き直すという方向で考えています。今後ともよろしくお願いしま
す。
0473hidebou
2010/11/15(月) 21:39:24置かれてしまう事でしたが、今は格納されたEXE自身がHTA実行しますので
本当にMSHTA.EXEなのかを調べる必要く極めて単純な動作に書けるはずです。
もし、自身EXEがデバッグ環境下でステップ実行されていることを認識したら
動作を拒否するというロジックを組み込めばこれはこれで使えるんじゃない
かと考えています。
0474hidebou
2010/11/16(火) 01:23:21出力HTMLファイルからHTAインスタンスを生成しながら、スクリプト冒頭で
WIN32ディスパッチを滑り込ませる方法があることに気づきました。
要はActiveXObject以外の方法で任意なディスパッチを取得できればいいわけ
ですからshowModalDialogをActiveXObjectの代替にしてしまうものです。
0475hidebou
2010/11/16(火) 01:31:56だったらとか、1px*1pxだったらとかいうルールを設けて該当した場合ダイア
ログのreturnValueにWIN32ディスパッチをセットして返せばActiveXObjectと
等価な動作となります。
0476hidebou
2010/11/16(火) 01:41:33冒頭から自由にWIN32ディスパッチが使えます。WIN32インスタンスがあれば
あとは何でもありにできますから、デモのHTA版で行ったようにWIN32のデコ
ード関数にハッシュコードを与える形式のスクリプト生成を行いソースコード
を隠蔽できます。
0477hidebou
2010/11/16(火) 02:00:01し、使う側はなおさらだと思いますので、一時ファイル生成を前提とした別の
エディションとしてリリースすることになると思います。
ただし、ちゃんと飯が食えて私が生きていたらという前提ですが...
0478hidebou
2010/11/16(火) 13:04:48の目的はHTMLアプリケーションの一部をオンライン化することです。将来は
私のサーバーエリアを貸し出すことによって誰でも確実に収益が得られる形で
アプリケーションを発表できるようになるでしょう。最初はフリーソフトとし
て発表し、動作件数を確認してからサーバー側ファイルを置き換えて有料ソフ
トへ移行させるという柔軟性がありますから、フリー版はこのくらいの機能で
というさじ加減に悩む必要はまったくありません。
0479hidebou
2010/11/16(火) 13:17:37面倒なものに思えることでしょう。今日からHTMLアプリケーションを書き始め
る方にいきなりCreateHtaWindowと言ったところで「はぁ?」になるのは必至
です。ですからMSHTA.EXEでの実行とHTABOXコアでの実行の中間に位置する
実行環境は絶対に必要だろうと考えています。
そして私の意に反してそっちの方が重宝されるという展開を予測します。
0480デフォルトの名無しさん
2010/11/16(火) 18:28:02・Unknown Errorダイアログのタイトルが「HTABOX2.0 DEMO」
・「引数ファイルは拡張子VBS、JS、HTA、HTMでなければなりません」
0482hidebou
2010/11/17(水) 00:01:11ポイントはリソースタイプが入れ子にできない事にあります。つまりHTMLフ
ァイル群がHTMというリソースに格納された場、合画像をimg/hoge.pngという
相対パスでで参照することは構造的に不可能です。もちろん同一リソースタ
イプへの格納であれば単にhoge.pngでいいのですが美しくありません。
画像がIMGリソースに格納されるとすればHTMリソースからの相対参照は
../IMG/hoge.pngになります。これを踏まえてリソース格納を前提とした
ファイル構造をこころがけていただく必要があります。
0483hidebou
2010/11/17(水) 00:10:32サブフォルダhtmにHTMLファイル群を置きます。
サブフォルダimgに画像ファイル群を置きます。
サブフォルダetcにその他の参照ファイルを置きます。
エンコーダーはスクリプトパスが与えられると各サブフォルダの存在を確認
し、当該フォルダ名を大文字にしたHTM、IMG、ETCリソースへファイル内容を
格納します。
0484hidebou
2010/11/17(水) 00:22:27のパスを環境毎に切り分ける必要がありますが、
//スクリプトパス終端が.exeだったらリソース環境と判断
if(WIN32.GetScriptPath().search(/\.exe$/i) == -1)
{
DLG = WIN32.CreateDlgWindow(DIR + "\\htm\\Main.htm", WIN32);
}
else
{
DLG = WIN32.CreateDlgWindow("res://" + WIN32.GetScriptPath() + "/htm/Main.htm", WIN32);
}
というようなコードでいずれにも対応できると考えています。
0485hidebou
2010/11/18(木) 00:50:27行えるというものでした。驚いたのは今まで0pxのダイアログはセキュリテ
ィー制限により存在が認識されないと考えていたのですが、まだ表示されて
いない初期の段階で捕捉することにより実体のあるダイアログとして扱える
ことです。したがってスクリプト冒頭に
var WIN32 = showModalDialog("about:blank", null, "dialogHeight:0px;dialogWidth:0px;unadorned:yes");
というまったく表示されない記述でWIN32を認識させることができました。
0486hidebou
2010/11/18(木) 01:32:16任意のディスパッチを送り込めるメリットは計り知れないものがあります。
あらゆるカスタマイズをCOMという規格が約束してくれます。タイミングや
順序に悩む必要のない自由な拡張が可能になるのです。
HTMLへの対応に思いを巡らすことで今回の実験にたどりつけました。
そのきっかけを与えてくださった方に感謝の気持ちでいっぱいです。
0487hidebou
2010/11/18(木) 02:30:00時に独自のスクリプトデコードルールを導入できます。
例えばデモのHTA版でやったように128bitの予測不能な数値を引数として、
一度の呼び出ししか許さないデコード関数に置き換えることができるのです。
ただし、HTMLと同じスレッドにWIN32が生成されますのでWIN32側がスレッド
をブロックしてしまう動作はそのままHTML側のフリーズ状態となるはずです。
ですからこの手法の場合WIN32を積極的に使うのではなく、EXE格納時にHTML
中のスクリプト冒頭へ自動的に追加される一行によってスクリプトコードが
保護されるというストーリーがいいのではないかと考えています。
0488hidebou
2010/11/18(木) 18:52:09エンコーダーは指定されたJSまたはVBSが存在するフォルダのサブフォルダを
列挙し確認ダイアログを表示してフォルダ名をリソースタイプとし、全ファ
イルを格納するという単純なルールにしました。
HTABOXコア2.20にはバージョン情報リソースが存在します。将来はエンコー
ダーのGUIで内容を設定できるようにすべきですが、まだ対応していませんの
で生成されたEXEのバイナリを直接いじってもらう必要があります。
0489hidebou
2010/11/18(木) 21:19:03ttp://kuroda.bglb.jp/htabox/htaboxcore.zip
2.20からは画像だろうがビデオだろうが何でも単体EXEに格納して配布可能
となりました。無料でのエンコーダー利用は期間限定のサービスとなります
ので、是非この機会にEXEパッケージ化の様子をご覧ください。
0490hidebou
2010/11/18(木) 21:33:23思います。簡単で手軽だといことを端的に表現しているつもりです。
HTABOXクイックはドロップされたファイル、サブフォルダファイルを一覧表示
して、起動HTMLファイルを選択し、各ファイルについて一時生成直後に消去す
るかどうかを選択できます。格納ファイルサイズに制限は設けません。
0491hidebou
2010/11/18(木) 21:55:08て単純にMSHTA互換なHTMLアプリケーション実行環境として位置づけます。
HTABOXクイックは複数ファイルをアーカイブして実行時に一時展開する目的
でのみ利用されるものとなります。したがってEXE内への格納時、一時ファイ
ル生成時にエンコード機能は提供されません。
HTABOXクイック用にエンコーダーを別途用意します。このエンコーダーはEXE
へのリソース格納時にレベルBエンコードを行い、一時ファイル生成時には
スクリプトをハッシュデコードすることで隠蔽します。
また、実行HTMLにはHTABOXコアと同等のWIN32機能が提供され、メニュー等を
利用できるものとします。
0492hidebou
2010/11/18(木) 22:10:27楽屋裏的にはコアのモジュールをそのまま使いながらCOM登録やWIN32機能を
制限するという作業になろうかと思います。
クイックのエンコーダーは旧HTABOXで挫折していた頃の私に見せてやりたい
軽妙なものとなるでしょう。そういう意味で私は自身に勝利することができ
たと確信しています。
0493hidebou
2010/11/18(木) 22:54:55ttp://kuroda.bglb.jp/htabox/htaboxcore.zip
のファイル構成に誤りがある事に気づきました。訂正済みをご利用ください。
0494hidebou
2010/11/19(金) 01:05:29に気づきました。新たにバイナリをコンパイルする必要も無くスクリプトを書
けばそれで終わる仕事です。手前味噌ですがコアの威力を再認識しました。
0495hidebou
2010/11/19(金) 10:43:18ての修正が必要と認識しています。現状では中身が空な状態と同一ですから
格納後は格納アプリケーションの実行を最優先にする予定です。
やっと当たり前のアプリケーションとしてHTABOXコアが生成したEXEを配布
できるようになりつつあります。上記改良後にご要望に応じカスタマイズし
たHTABOXコア(新たなAPIコール機能、アイコン、バージョン情報等)の提供
サービスを開始する予定です。もちろんそういった過程で汎用に有益な機能
は公開版HTABOXコアにフィードバックされることになるでしょう。
0496hidebou
2010/11/21(日) 00:15:57御礼としてオフィシャルユーザーを募集しようと考えています。つまり購入
済みアカウントとしてデータベースに登録します。レポートが必要なわけで
はなく1ヶ月に1度でもエンコーダーを利用していただいた場合は自動的に権
利が継続されるというサービスにしたらどうかと考えています。
0497hidebou
2010/11/21(日) 19:30:36この2.30で私の実現したかった夢を世に問うことができると判断します。
まだまだ未熟なソフトではありますが、全世界のソフトウェアを開発する
個人、団体に向けてHTABOXコアの情報を積極的に配信してゆく予定です。
もちろんHTABOXコアの真の威力について即座に理解してくれる方は少ない
でしょうが、私自身が短期間にソフトウェアを開発、リリースすることで
いやおうなしにその力に気づかざるを得ないことになるでしょう。
0498hidebou
2010/11/21(日) 19:44:29「プログラムをみんなで書こう」という方向と「ソース隠蔽」は一見矛盾する
事に思えるかも知れません。
私の目指す最終目的は個人のレベルでも自身のアイディアや情報を利益につ
ながる形で発表できなければ本当に有益なアプリケーションやコンテンツは
生まれてこないという判断に基づいています。
0499hidebou
2010/11/21(日) 19:55:24プリケーションは一時期脚光を浴び製作者も心血を注ぐかも知れません。
でも、継続したメンテナンス作業になり当初の情熱を失った時に何の報酬も
無しにそれが継続可能でしょうか?
少なくとも私にはそんな慈善事業に時間を費やす余裕はありません。
書けない人は書いた人の労力にお金で報いるという当たり前なことを実現した
いのです。そして書くための敷居を下げればきめ細かな用途のソフトウェアが
世に出て利用する側の利便も向上するはずです。
0500hidebou
2010/11/21(日) 20:07:37者の権利を無力化してハードまたはプラットホームを提供する企業の利益を
優先する戦略に他なりません。
「さぁプログラミングしましょう。あなた自身のために。」
0501hidebou
2010/11/22(月) 21:23:12ttp://kuroda.bglb.jp/htabox/htaboxcore.zip
を更新しました。エンコーダーは親フォルダの新鮮なHTABOX.EXEを原版と
してEXEを生成するように改めました。エンコード済みEXEへのスクリプト
ドロップでも格納スクリプトの実行を優先するよう改めました。
0502デフォルトの名無しさん
2010/11/22(月) 22:55:33あと、ビジュアルスタイルにも対応してるでしょうか。
0503hidebou
2010/11/23(火) 11:26:53Win7で動作します。64bitコンパイルは現在行っていません。32bitのみです。
「ビジュアルスタイル」という言葉を初めて聞きましたので正確な回答になっ
ていないかも知れませんが、テーマ等はそのままウインドウの外観に反映され
ると思います。
0504デフォルトの名無しさん
2010/11/23(火) 19:07:26図の上はIEで、ユーザのスタイルに追従しています。
HTABOXコアは追従してくれないので、できれば対応をお願いしたいのですが……。
0505デフォルトの名無しさん
2010/11/23(火) 19:37:54<meta http-equiv="MSThemeCompatible" content="yes">
0506デフォルトの名無しさん
2010/11/23(火) 20:40:20インターネット上に存在する全てのサイトにそれが記述されてればそれで問題ないとおもいます
0507hidebou
2010/11/24(水) 00:33:10じつに奥深い話だったのですね。ボタンの形状をユーザー毎に変化させること
ができるとは知りませんでした。この件につきましてはすこしお時間をいただ
いて調査することになりますが、同じ環境でMSHTA.EXEを使った場合どうなる
のでしょう?おそらく追従しないですよね。今のところは外観の細部について
はCSSでのコントロールになろうかと思います。
0508hidebou
2010/11/24(水) 00:41:33明日にはお見せできると思います。2つ書くのが面倒なのでエンコーダー付
きの単一ソフトにしました。HTABOXクイックを書きながらWSH環境とEXE格納
環境で共通に起動引数を扱う関数が必要だったのでHTABOXコアに追加しまし
た。ですからHTABOXコアも2.31になる予定です。
0509デフォルトの名無しさん
2010/11/24(水) 00:47:59ありがとうございます。
ユーザ毎に変化させることができる、というのはhidebouさんもなさっていることだと思います。
サイトにあがっているスクリーンショットから推察するに、XPの標準スタイルからクラシックスタイルに変更していますよね。
Windows Vista以後だと、標準のスタイルはAeroです。
MSHTA.EXEを使用した場合は、>>505を記述することで追従させられます。
が、>>506で指摘したように記述しないと追従させることはできません。
標準で追従させることができれば、それはHTABOXコアの優位点となると思います。
0510hidebou
2010/11/24(水) 08:31:41ひとつ気にかかる点があるのですが。もしHTABOXコアを一般のブラウザのよ
うに未知のURLを表示する目的でお使いでしたら大変危険ですのでおやめに
なった方がいいです。MSHTA.EXEもそうですが、アプリケーションとしてURL
にあるソースを解釈しますのでなんらセキュリティー警告が出ません。
HTABOXコアは原則としてファイルとしてローカルコンピューターにあるHTML
やスクリプトを実行する目的で作成されていますからその点をご了承ください。
0511デフォルトの名無しさん
2010/11/24(水) 18:39:54動画処理とか音声処理などでdllを使わずに、exeを使って処理することがあります。
現状では、処理結果のテキスト出力が不要なら、runで処理してエラーを受け取ると思います。
処理結果のテキスト出力が必要ならexecで標準出力を受けながら処理すると思います。
しかしexecだと画面に一回コンソールの画面が出ます。
これが嫌な人向けに、コンソール画面非表示のままで実行したあとの出力結果を受け取る機能はどうですか?
フリーのbasp21のdllを使って、stdout = bobj.Execute2(command,1);って感じでやれば、
WSHやHTAでも、いまでも出来る機能なんですけど、
標準機能で出来るとHtaboxを使おうとする人の敷居を下げられるかと思います。
ちなみにbasp21では、コマンド終了時の画面のテキスト出力を一括で受けることは出来ますが、
1行単位とか1文字づつ出力を受け取る機能はありません。
その場合は、WSHのexecを使うしかないのが現状です。
0512デフォルトの名無しさん
2010/11/24(水) 21:14:07いまのところC直下にあったout.txtとtable.txtは見つけて削除しました。
(ファイルの作成日時が11/08となっていたので、古いmazeにあったバグが原因?)
0513hidebou
2010/11/24(水) 21:29:28ご指摘のとおりWScript.ShellのExecとFileSystemObject.GetStandardStream
を使えば親の立場、子の立場で標準入出力ストリームを扱う事ができますが、
それをラップした関数を用意するのは大変有意義だと思います。場合によって
は入力結果を蓄積できるというのもすばらしいアイディアだと思います。
パイプに関して追加したいと考えていあるのは、名前付きパイプサーバー
機能です。これにより複数プロセスのスクリプトが連携して動作可能となり
ます。大変有意義なご意見をいただきありがとうございます。
0514hidebou
2010/11/24(水) 23:57:20http://kuroda.bglb.jp/htabox/quick.zip
EXE化したいHTML系ファイルと関連ファイルフォルダをドロップして起動する
とEXEになります。生成前に起動ファイル、生成時の隠し属性、消去を選択で
きます。
0515hidebou
2010/11/25(木) 00:07:09象徴的なサンプルを少し処理した実績しかありませんのでご容赦ください。
※重要な注意点
EXEファイルはソースHTMLファイルと同じ位置に生成されます。もしその位置
で一時生成&消去動作をした場合ソースHTMLは上書き後に消去されますので、
生成されたEXEファイルは必ず別の位置に移動してから実行してください。
0516デフォルトの名無しさん
2010/11/25(木) 00:29:50非表示でのExecの標準入出力の管理、これが全部出来ればすごいね。
例えばウィンドウに[OK] [Cancel] [Option1] [Option2] [Option3]とかの
5つくらいボタンやチェックボックスをつけて、
その下にログウィンドウをくっつけて処理内容をprintするだけでも
それなりのツールにはなる。
いろんなツールのフロントエンドを作るのが実に簡単になりそうだw
使う技術はほぼHtml + Javascriptでそこまでできれば、ほとんどの人はそれで満足してしまいそうだ。
0517hidebou
2010/11/25(木) 00:55:11HTABOXがターゲットとするアプリケーションのサイズはイメージされている
とおりピンポイントな用途へのツールだと私も考えています。個人が持って
いるノウハウやテクニックを気軽に書いて販売できればもっとプログラミン
グに興味を持つ方が増えるんじゃないかという想いで開発しています。
今後ともよろしくお願いします。
0518デフォルトの名無しさん
2010/11/25(木) 01:04:40これはバグなのですか?仕様ですか?
いずれにせよ、アンインストール方法をご教示ください。お願い致します。
0519デフォルトの名無しさん
2010/11/25(木) 01:08:32なにかのトラブルで一時ファイルが消されなかったときに残存してしまいます。
一時ファイルは標準の一時フォルダ内に作成して欲しいです。
それならば、例え削除されなくとも、一定時間が経過すればWindowsが消去してくれますから。
0520hidebou
2010/11/25(木) 08:36:18私の書き込みのタイミングでご指摘に気づかない状態になり失礼しました。
開発中のデバッグ出力機能がそのまま付加されていたかも知れませんので
早急に調査して対応させていただきます。四角い迷路は本来まったく一時
ファイルを必要としないプログラムですので単に私のミスです。ご迷惑を
おかけしました。
0521hidebou
2010/11/25(木) 08:44:41状況を確認しました。c:\out.txtとc:\table.txtが作成されます。これは開発
中のデバッグ情報出力でリリースバージョンでは削除すべきところを見落とし
たものです。即座に訂正させていただきます。
0522hidebou
2010/11/25(木) 08:55:28ttp://kuroda.bglb.jp/vector/maze.zip
を更新しました。ご指摘いただいた点を修正しました。
0523hidebou
2010/11/25(木) 09:43:59を更新しVectorにも更新バイナリを送信しました。
何のお礼も差し上げられず恐縮ですが、感謝の意味を込めて迷路の上限サイズ
を従来より大きくしました。ご指摘ありがとうございました。
0524hidebou
2010/11/25(木) 11:55:31ttp://kuroda.bglb.jp/htabox/quick.zip
EXEファイル生成後EXEファイルの移動を促すメッセージと保存ダイアログを
追加しました。非エンコード、エンコードに関わり無くメニュー機能を有効
としました。zipファイルには実験用のdemo.htaが含まれます。
0525hidebou
2010/11/25(木) 16:47:08ttp://kuroda.bglb.jp/htabox/quick.zip
EXE生成時、保存先を指定するダイアログを必ず表示するようにしました。
くれぐれもソースのある位置でEXEを実行しないでください。
0526hidebou
2010/11/25(木) 17:31:43ttp://kuroda.bglb.jp/htabox/quick.zip
XP&IE7の状態でHELPが表示されない現象に対応しました。
0527hidebou
2010/11/25(木) 17:59:07トタグを挿入し、例の0pxダイアログでWIN32を取得しています。またファイル
出力前に#define処理も行っていますのでHTABOXコアがレジストリ登録されて
いればWSHと同じように通常環境でデバッグしたソースのままEXE化できます。
ただし微妙な差なのですが#defineは以下の書式でなければなりません。
//#define var //
var WIN32 = new ActiveXObject("HTABOX.Application");
//#undef var
0528hidebou
2010/11/25(木) 18:04:57れたスクリプトブロックでvar WIN32 = ....としている違いによります。
ちょっと紛らわしいのですが今のところご容赦ください。
0529デフォルトの名無しさん
2010/11/25(木) 18:41:36タイトルなしのタスクバーが現れるだけで作動しないのですが……
何にせよHTABOXクイックで
一時ファイル展開→コマンド実行→一時ファイル削除のできるインストーラ作成ソフトで
HTABOXコアとソースファイルを格納する作業から解放されるのですが、
さらなる要望として
○一時ファイルの展開先をTempフォルダとするオプション
○HTAタグsingleinstance="yes"で単一起動とした場合、多重起動はエラーダイアログを出さず既存のウインドウをアクティブにして終了する
○エラーダイアログのタイトルバーにアイコン及びHTMLから取得したタイトル+Errorと表示
などと放言してみます
0530hidebou
2010/11/25(木) 19:30:42環境を教えていただければ原因の究明が早いと思いますが、こちらでも試験
してみます。HTA:applicatinタグの取り扱い周辺で予期せぬ事が起こってい
るかも知れません。ご迷惑をおかけします。ご要望の点については是非実現
してゆきたいと考えます。
0531529
2010/11/25(木) 19:42:26すみません書き漏らしました。当方IEをアップデートできない事情のためXP+IE6です。
hidebouさんが>>498->>501で書かれたレスに似たものを感じた記事
> クリス・アンダーセン氏のFREEが糞な理由
> ttp://d.hatena.ne.jp/kawango/20101124
0534hidebou
2010/11/25(木) 20:57:53状態を確認できました。514以降に行った変更をチェックしてみます。
0535デフォルトの名無しさん
2010/11/25(木) 22:20:47対応してくださりありがとうございます。
HTABOXの開発、応援しています。お体に気をつけて頑張ってください。
0536hidebou
2010/11/26(金) 02:45:42今後ともよろしくお願いします。作るだけでたいして試さないというのが私の
悪い癖なので、チェックが入ると大変助かります。
HTABOXクイック1.00を更新しました。
ttp://kuroda.bglb.jp/htabox/quick.zip
IE6は私が小手先でごまかそうとしていた部分を見抜いているかのように振舞
うので少々疲れましたが、大変勉強になりました。今日は寝ます。
0537hidebou
2010/11/26(金) 12:35:49世界は「個人」から始まり「個人」を尊重し、その労苦に敬意をはらうこと
無しに存続し得ないと考えています。NETの発展によってリアルな社会での
仕事は激減してゆくでしょう。その中で若者が夢を持って生きてゆくために
私にできることは何かという問いかけへの現実解がHTABOXです。
情報を食べて生きている人類にとって無料で食べ放題な状態はひとつの理想
でしょうけれど、その先にあるものはどこを見渡しても同じビスケットしか
無い状態でしょう。バターたっぷりのクッキーが食べたいと思った時にはも
う遅いのです。
0538hidebou
2010/11/26(金) 13:05:02ttp://kuroda.bglb.jp/htabox/quick.zip
実行ファイル以外の要素がある場合、実行ファイルの変更でエラーとなる
凡ミスを修正しました。
0539hidebou
2010/11/26(金) 19:12:45が急降下で作業が進みません。HTABOXシステムでアプリケーションを提供し
た場合、サイトのページが閲覧されたと同じようにアクセスログが残ります。
そこで突きつけられる数字というのはごまかしようの無い現実なわけで、私
が想うところと現実とのギャップにすべてをたたんでおしまいにしたい気分
になることもあります。
0540529
2010/11/26(金) 22:10:47ひとまず>>536及び>>538で生成した実行ファイルがXP+IE6で作動するのは確認できました。
迅速な対応有難うございます。
0541hidebou
2010/11/26(金) 23:07:56ご報告ありがとうございます。しょげてても前に進まないので書くしかあり
ません。せめて「あいつでなければ書けない」といわれるものを残して往き
たいと思います。
0542hidebou
2010/11/27(土) 17:53:57_hidebou_ にしました。気軽に声をかけてください。
0543デフォルトの名無しさん
2010/11/27(土) 22:18:23ttp://tockri.blog78.fc2.com/blog-entry-78.html
0544hidebou
2010/11/28(日) 00:27:03私はTwitterの動きを見ていて「自動つぶやきロボット」というのを作りたく
なりました。誰かのつぶやきに瞬時にするどい突っ込みを入れるロボットなん
かは楽しいかも知れません。
0545hidebou
2010/11/28(日) 02:52:251. 同一パスのexeだったら抑制
2. パスが違っても同一exeファイルなら抑制
3. たとえexeファイル名が変更されようが抑制関数引数が同一なら抑制
という選択肢があった場合どれが一番お望みでしょうか?私は3番がいいと
思うのですが。
0546hidebou
2010/11/28(日) 03:12:56多分手遅れなのでコア上のスクリプトでコントロールすることを前提にすれ
ば1,2,3を柔軟に選べる関数とすることができます。
クイックでやる場合は実行ファイルオプションでSingleにたいな項目を設け
チェックする手法になりますので、ご意見を伺いたいのです。
0547hidebou
2010/11/28(日) 03:21:163択できればベストですよね。
0548529
2010/11/28(日) 08:07:01一番厳しい3だと別のパスまたは別のファイル名で起動という逃げ道も塞がれるので用途により良し悪しですし、
2は同一ファイル名で中身は別のexeが起動していると面倒なことになりそうですし
0549hidebou
2010/11/28(日) 10:51:570550hidebou
2010/11/28(日) 12:48:41名とし、WaitForSingleObjectに小さな待機時間を指定した結果がWAIT_TIMEOUT
だった場合許可インスタンス以上の起動であるという判断をするという方向で
書き進めています。
クイック上では同一パスでの許容インスタンスを1とし、既存であった場合
FindWindowで同一タイトル、同一クラスのHWNDを取得しアクティブにして
自身は無言で終了するストーリーを考えています。クイック上でのSingle
オプションはチェックボックスでのオンオフ選択としたいと思います。
0551hidebou
2010/11/28(日) 14:33:18取得しプロセスIDからモジュール名を取得して真に同一パス由来のHWNDなら
アクティブにするという動作にしたいと思います。この過程で使用する関数
はwindows2000以降となりますのでそれ以前はサポート外となります。
0552hidebou
2010/11/28(日) 17:38:33http://kuroda.bglb.jp/htabox/Quick110.zip
希望通りの動作だといいのですが変更すべき点があったらご指摘ください。
0553529
2010/11/28(日) 22:15:33ただ何回か試している内に一回だけタイトルなしのタスクバーだけが現れて無反応という症状が再発しましたが、
再現もできなかったので詳細は不明です
そろそろ一名無しに戻りますが、コア・クイック共々さらなる発展に期待しております
0554hidebou
2010/11/28(日) 22:28:39ログを出しては引っ込める動作が原因でトリプルクリックになった時とかは
やや不安定な気がしています。今後とも改良を重ねますのでよろしくお願い
します。
0555hidebou
2010/11/29(月) 01:23:48どうも日本人受けしないのでデフォの表示を英語にします。サーバー側ASPも
更新しますので従前のバージョンはサポート外となります。作業が終了しだい
報告します。
0556hidebou
2010/11/29(月) 01:41:52ttp://kuroda.bglb.jp/htabox/quick.zip
サーバーは1.00のGETに対して最新のバージョンのダウンロードを促します。
旧バージョンとの互換は考慮していませんので1.10を使用してください。
0557デフォルトの名無しさん
2010/11/29(月) 01:45:17http://www.atinfinity.net/software/xpstyle.html
上記ツールを用いたところ、
http://www.uproda.net/down/uproda173533.png.html
の部分だけ変化がみられました。全体に適用されればなぁ……。
とつぶやいてみます。
0558hidebou
2010/11/29(月) 02:47:31これは内部でMessageBoxを呼んでいる部分ですね。HTML系のalert等を回避し
てMessageBoxの本来の引数をコアで利用できるようにすればある程度コントロ
ールできるのでしょうね。
HTMLでGUIを構築できるのですから作る側はCSSでコントロールすべきだという
のが今のスタンスです。で、使う側がそのデザインを変化させたいと考えた場
合についてまでは今の所考えが及んでいません。
ひとつ思いつくとすればアウトプロセスのIEドキュメントを横取りして制御
する手法でしょうか。これならHTAではなく通常のHTML扱いですからIEで可能
な修飾はすべて使えることになります。ただしソース隠蔽はCOM無しでは不可
能だと予測します。
0559hidebou
2010/11/29(月) 03:07:06IEをローカルHTMLファイルへナビゲートしてHTABOXクイックで使っている
0pxダイアログ手法を用いればスクリプト生成初期にCOMを注入できるかも
知れません。今までプロセスの中だからという観念しかありませんでした
のでこれに気づいたことは大変大きな意味があると思います。
動作が遅くなり、IEのごちゃっとしたメニューには付き合わなければなり
ませんが、外観重視の場合は単にHTMをIEで表示してディスパッチだけ送り
つけるという手法もありだと気づきました。ありがとうございました。
0560hidebou
2010/11/29(月) 11:26:50クックの実行ファイルオプションとして「IEで実行」を付け加える方向で検討
したいと思います。
場合によってはHTAドキュメントとIEドキュメントのすり替えも可能かも知れ
ません。プログラミングなのかクラックなのかという判断が曖昧な世界になっ
ていますが「EXEをクリックしたんですから何でもありでしょう」という観点
から見ればすべては正当なプログラミングテクニックと解釈してください。
0561hidebou
2010/11/29(月) 12:53:49Explorer情報バー」を表示するんでしたね。もちろんサーバーサイドのURL
なら表示されないわけですから、無害なURLで安心させといて横からコントロ
ールする手はありますが、美しくないので別の手をさがします。
0562デフォルトの名無しさん
2010/11/29(月) 18:29:48ttp://d.hatena.ne.jp/s0u/20080308/1205000627
これ思い出した
0563hidebou
2010/11/29(月) 19:44:29コアならスクリプト無しのHTMLが基本ですからIEも文句を言わないし、イン
スタンスさえ捕捉できればあとはやり放題ですから。
これで解決です。CreateHtmWindowは「情報バー」にげんなりして作ったまま
放置したんですが、単純な事に気づきませんでした。ありがとう!!!
0564hidebou
2010/11/30(火) 00:20:39スタンスとHWNDをHTAやDLGのように取得することができました。
今後実行中の別インスタンスを取得させてくれとかツールバーやタブはどう
操作するとか本来の目的とは関係ない要望がわんさか来てしまういやな予感
はするのですが、一つの選択肢として表示にIEを使うことはできそうです。
0565hidebou
2010/11/30(火) 09:42:19スタンドアロン版に書き換えたコア上のプログラムをCDRに焼いて妻に渡そう
と思っています。その作業が終わったらできるだけ多くの海外フリーソフト
サイトへクイックを登録したいと考えています。月が改まるたびに自責の念
が重くのしかかります。
0566hidebou
2010/11/30(火) 14:04:44の変更がありましたのでHTABOXコア2.40としてリリース予定です。ドキュメ
ントの準備が整いしだい公開します。
HTABOXコア2.40にはCreateHtmWindow関数でIEを使ったHTMLインスタンス生成
とディスパッチ追加のデモンストレーションが含まれます。
0567デフォルトの名無しさん
2010/11/30(火) 19:35:58まあ役立てたならば何よりです
そして元ネタの人にはごめんなさい
「素直にHTAにすればいいんじゃ」とか考えてました
0568デフォルトの名無しさん
2010/11/30(火) 20:20:28実装系というのは全く見識が及ばないので
head内にタグ1つ挿入するくらいのことなのだから、わけもないだろうと考えていました。
なんかごめんなさい。htaにメニューバーつけたかったんです。
0569デフォルトの名無しさん
2010/11/30(火) 21:08:550570hidebou
2010/12/01(水) 00:58:22ttp://msdn.microsoft.com/ja-jp/library/ms997646.aspx
にXP以降で有効なAPIの例があって
HTHEME OpenThemeData(HWND hwnd, LPCWSTR pszClassList)
とか見たことの無い関数があるんですね。でHTA系は
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes">
で適用されるんですよね。だから適用してもらいたいアプリを書いている人
は書けばいいという展開でよろしいんでしょうか?
0571hidebou
2010/12/01(水) 01:19:11なんでしょうか?
だとすればこのmsdnのどおりにやれば適用されるものができるのかも知れま
せんがちょっとお時間をいただくことになろうかと思います。
0572hidebou
2010/12/01(水) 01:31:500573hidebou
2010/12/01(水) 03:15:28http://kuroda.bglb.jp/htabox/htaboxcore.zip
ファイルダイアログの引数にデフォルトパスを指定できます。引数の数が増
えましたので、旧バージョン用のソースを動作させる場合は注意してくださ
い。起動時のドロップ引数をウインドウへのドロップ引数と同じ仕様で受け
取る関数を作成しました。いずれも詳しくはドキュメントをご覧ください。
0574hidebou
2010/12/01(水) 03:25:38EXE作成時に雛形としてください。クイックは使いやすいとは思うのですが、
数日でクイックを完成できるほど強力な開発環境がコアですのでどうか
かわいがってあげてください。
0575hidebou
2010/12/01(水) 15:49:55ttp://kuroda.bglb.jp/htabox/quick.zip
管理上マイナーバージョンをコアと一致させるためのものです。
したがってコア2.40の機能が有効です。
0576hidebou
2010/12/01(水) 16:15:26ttp://kuroda.bglb.jp/vector/maze.zip
はHTABOXシステムの実働試験題材として存在しましたが当初の目的を達成
しましたので、引き続きご利用の際はWEB版
ttp://kuroda.bglb.jp/maze/
をご利用ください。遊んでいただいた皆さんありがとうございました。
0577hidebou
2010/12/01(水) 20:27:41ttp://kuroda.bglb.jp/htabox/
をコア2.40のドキュメントで更新しました。
ベクターに申請中だったHTABOXクイック1.10の公開を確認しました。
1.40に差し替え申請中ですので、当サイトの最新版をご利用ください。
ttp://kuroda.bglb.jp/htabox/quick.zip
0578hidebou
2010/12/01(水) 21:09:54作業を行っております。HTABOXシステムの一端として紹介するとページ数だ
けで入門者には敬遠されてしまうだろうという判断からです。数ページの内
容となりますが、完成するとQuick.zipのダウンロードURLも変化しますので
運用を開始したらここでご報告されていただきます。
0579hidebou
2010/12/01(水) 23:35:27ttp://kuroda.bglb.jp/quick/index.htm
の運用を開始しました。これに伴いHTABOXクイックのダウンロードは
ttp://kuroda.bglb.jp/quick/quick.zip
に変更されました。コンテンツでは添付ヘルプより詳しい内容としています。
コアをレジストリ登録して格納前にWIN32を使いながらデバッグ実行するサン
プルもございますので参考にしてください。
0580hidebou
2010/12/01(水) 23:50:47・HTMLアプリケーションの可能性をどこまでも拡張できるHTABOXコア
・単にドロップするだけでEXEを生成するHTABOXクイック
私が考えていた以上に系統だった構成となりました。これもひとえに皆様の
暖かいご支援のおかげでです。もし私に先立つものがあれば、皆さんを庄内
にご招待して大宴会をしたいのですが、食うや食わずの身なので、今しばら
くこれをビジネスにつなげてゆく努力をさせていただきます。
0581hidebou
2010/12/02(木) 13:20:13ttp://kuroda.bglb.jp/quick/quick.zip
実行ファイル変更時無駄な列挙動作があってので見直しました。
多数のファイルが表示されている状態でも軽快に動作するはずです。
0582hidebou
2010/12/02(木) 14:15:51されながらHTABOXコアと同等の拡張機能を利用できます。メニューは例に
よってTABLEを宣言するだけです。
これを使って皆さんが書き溜めていた自分のためのスクリプトを世に出して
ください。どんなに局所的なツールでも自分が必要なものは世界中で何千、
何万の人が必要と感じているに違いありません。
その手助けをするためにHTABOXクイックは存在します。
0583hidebou
2010/12/02(木) 16:46:55DirectX基本機能操作メソッドの公開と考えています。DirectXの表
層部分は仕様変更が激しく実装しても意味がないと考えますが、
DirectDraw、DirectSound、DirectInputの基本的インターフェースは
今後も有効であろうと予測しています。
0584hidebou
2010/12/02(木) 16:55:42使ってスクリプトを書こうとする方が増えてくれるのではないかと考えます。
まぁ、いつものように私が知らないだけで、「みんな楽々とそんなこと実現
していますよ」だったときはそっと教えてください。
0585hidebou
2010/12/02(木) 23:48:09ttp://kuroda.bglb.jp/quick/quick.zip
ヘルプファイルの内容をコンテンツと同期させました。画像等をリソース格納
していますのでEXEサイズが倍になっていますが動作に変更はありません。
0586hidebou
2010/12/03(金) 00:51:11具体的な動作でなくとも「こんなアプリケーションを書きたい」という目的
から、具体的な機能が追加されるわけですから、気兼ねなく書き込んでください。
0587hidebou
2010/12/03(金) 18:11:41ttp://kuroda.bglb.jp/quick/
日本語ページを後方に配置転換しました。どういう反応があるのかないのか
やってみなければ判りませんが、国外への広報活動を開始したいと思います。
0588デフォルトの名無しさん
2010/12/03(金) 18:24:42HTABOXシステムのライバル?
HtmlApp Studio
ttp://www.htmlapp.com/
0589hidebou
2010/12/03(金) 20:06:22彼にとって私のプログラムは脅威となるように思えます。
HTABOXシステムのアドバンテージは当初フリーで使ってもらい必要に応じて
アカウント制限をかけることも、それを解除することもできることです。
その特徴を最大限に利用した戦略で臨みたいと思います。
0590hidebou
2010/12/03(金) 22:39:18にあるのがクラウドですがこれは大資本がなければ設備を持つことすらま
まなりません。私たちに残された選択肢はただ一つ賢いWEBアプリケーショ
ンを書くことだけです。
その観点から眺めるとHTMLアプリケーションはそのために存在するような環
境であることに気づきます。そして問題はただ一つソースが見えるか見えな
いかに集約されます。これは意地悪が目的ではなく対クラック用の武装とし
て必要なだけなのです。
0591hidebou
2010/12/04(土) 12:49:45と答えたところで多くの方にとっては無謀な試みに思えるでしょう。
まして既存の面倒くさい開発手法にかかる時間を理由に法外な値段を提示して
いる業界にHTABOXの利便性を説明したところで「いやなものを見てしまった」
くらいにしか思われていないのでしょう。
ちょっと愚痴をこぼしたくなりました。
0592hidebou
2010/12/04(土) 16:37:40になってきました。儲かる商売ができるようになったらもっと温暖で税金の
安い国に拠点を移そうと夢見ています。日本はすばらしい国ですが、残念な
がら沈む行く国に見えます。特に私のような田舎では出歩いてもたまに老人
を見かけるくらいで、人そのものがいないのです。
0593hidebou
2010/12/04(土) 23:17:11ttp://www.softpedia.com/get/Internet/WEB-Design/Web-Design-related/HTABOX-Quick.shtml
こちらで用意したスクリーンショットではなく
ちゃんと向こうで動作させたスクリーンショット
だったのでちょっと感動しました。
ただ日本語のボタンは文字化けなので要改良ですね。
0594hidebou
2010/12/05(日) 00:03:52UNICODEも柔軟に処理できるようにしないと苦手な英文メールがたくさん来
てしまいそうな気がします。Quick.exeも明らかにHTMLのGUIを持っているわ
けで、それだけでも驚きでしょうが、それがまたHTAのようなEXEを生み出す
わけですから初めて見る人は狐につままれている気がするでしょうね。
0595hidebou
2010/12/05(日) 00:24:39の壁を意識しないで済むんですね。少々誤訳があったとしてもソースを例示
すれば万国共通ですから「あっそう」になるわけで、そういう意味では最も
世界に成果を発信しやすい分野だと思います。ぜひ皆さんもコアやクイック
を使って世界をターゲットに作品を発表してみてください。
0596hidebou
2010/12/05(日) 04:14:14に投稿したにも関わらず「HTML to EXE HTML Conversion Tools」と紹介され
ていて、またちょっと感動しました。海外のサイトって大雑把なんじゃないか
と思ってたんですが、なかなかきめ細かい管理がなされているんですね。
0597hidebou
2010/12/05(日) 21:15:43トしてゆく事になります。そして具体的テーマで必要とされるものがコアに
追加され、安定した動作が確認できれば公開関数として紹介されてゆくこと
になります。
0598hidebou
2010/12/05(日) 21:35:29なろうかと思います。たとえばクライアントコンピューターを仮想的にサー
バーにしてしまうこともHTABOXの技術を使えば可能です。これを発展させれ
ば稼働中のクライアントパワーを結集して巨大な仮想サーバーを構築する
ことができるかも知れません。
誰の管理下にも無い「群集」という意思を持った巨大サーバーというのは
プログラミングに携わるものにとってとても魅力的なテーマではあります。
0599hidebou
2010/12/06(月) 23:34:35ました。考えてみればプログラミングという作業はビデオゲームに没頭して
いる時のような浮世離れした感覚を伴います。すべてはコンピューターという
箱の中で起こっていることなのですが、それが広い平原に思えたりごつごつ
した岩肌に思えたり。その中で自分がどう立ち回るのかをプログラミングして
いる感覚です。プログラミングを楽しいと感じる方々はたぶん分かっていただ
ける話だと思います。
0600hidebou
2010/12/07(火) 03:20:47いたのですが、JScriptネタにXMLとXSLの実用的なサンプルを追加したいと
思います。クイックのファイルリストテーブルは正にそれでできています。
構造体代わりにXMLを使えばXPathで極めて少ないソースコードと高速な処理
を両立できます。ただしプログラムでは見通しがいいXMLもユーザーから操作
してもらう段階ではHTMLに変換しないと扱いにくいものになりますが、XSL
変換で処理すればこれまた楽ができます。IE8ではTDCが使用不能であることに
最近気がついたものですから、TDC代替ソート付テーブルをXMLとXSLで実現
するストーリーにしたいと考えています。
0601hidebou
2010/12/07(火) 22:09:16解説を書くのが面倒で、ちょっと一休みしてます。私自身これを書いたとき
は目から鱗が落ちましたので、何かしらデータを一覧表示して見せたい系の
アプリケーションの場合、有効なテクニックだと思っています。
0602hidebou
2010/12/08(水) 01:07:32これだけネットワークインフラが整備されると、データであれプログラムで
あれ、ありとあらゆる物がコピーされクラックされ、本来対価を伴うはずの
開発、製作の労力は報われることのない状態となています。私はそれを使う
側のモラルの問題だとは思いません。ただで使いたいというのは自然な流れ
ですし、そうできてしまうプログラム側に問題があると考えています。
0603hidebou
2010/12/08(水) 01:18:23クラッカーが一番いやなのはサーバーがらみのシステムだった場合です。
たとえばバイナリ書き換えで正解を探ろうにもサンプリング動作のログ
がサーバーに残るわけですからうかつにテストも行えません。
また、クラックにはパケットの解析が不可欠となりますがHTABOXシステム
のように揺らいだ規則のエンコードの場合やはり多くのサンプリングを
必要としますのでサーバー側からシャットダウンされる可能性が高まります。
0604hidebou
2010/12/08(水) 01:27:48けたと思います。では次にサーバーとのコネクションがスパイウェアのような
動作だと判断されないためには何が必要でしょうか?その答えはご想像のとお
りブラウザのGET要求を起点とするコネクションであればいいのです。もし
この動作を危険と判断するならばすべてのGET要求は危険なことになります。
0605hidebou
2010/12/08(水) 01:46:05状態を実現するために作られたのです。これによって初めてアプリケーション
の「使用を許諾する」という言葉が実効性を帯びるわけです。
私がなぜHTMLApplicationをベースに据えた開発環境にこだわったかという理由
は以上の要因からです。
0606hidebou
2010/12/08(水) 22:07:30同時に本サイトの静的有料コンテンツの価格を月額105円に統一しました。
サーバーの灯が消えれば、HTABOX関連の技術を提供することもままならない
状態となりますので他のコンテンツともどもよろしくご検討ください。
当サイトサイトマップ
ttp://kuroda.bglb.jp/sitemap.htm
0607hidebou
2010/12/08(水) 22:54:08しております。締め切りが迫っておりますのでレポートの作成に集中したい
と考えております。このスレッドに対するレスポンスが鈍ると思われますが、
ご了承ください。
0608hidebou
2010/12/11(土) 03:23:09CreateHtaWindowでインプロセスHTAを生成してみたのですが、いい感じで
動きますね。jsc.exeで生成されたファイルのコードは厳密には隠せません
から個人用ツールという位置づけになりますが、.NETのJScriptはWSHと違い
CPUの占有率がおとなしいですから、こいうった利用方法も紹介すべきかと
思っています。
0609hidebou
2010/12/11(土) 03:49:55起動後にデコードしてコンパイルし、カジュアルなクラックくらいは防げる
かも知れません。ついでにHTMLをリソース格納できればHTABOXコアの.NET版
になるかも知れません。まぁあんまり需要があるとは思えませんが。
0610hidebou
2010/12/11(土) 23:18:36しました。.NET1.1以上が必要と思われます。詳細はReadMe.txtをご覧くださ
い。.NET環境で実行されるEXEプロセスはIDispatchExのマーシャリングがブロ
ックされているように感じます。ですから単純にWIN32を追加できず、window.
openerへのセットとしています。詳細はソースコードをご覧ください。
ttp://kuroda.bglb.jp/htabox/jscdemo.zip
0611デフォルトの名無しさん
2010/12/12(日) 07:49:18On Error Resume Next
strPath = LCase(CreateObject("Scripting.FileSystemObject").GetBaseName(WScript.FullName))
If (strPath = "wscript") or (strPath = "cscript") Then
CreateObject("Wscript.Shell").Run "htabox.exe """ & WScript.ScriptFullName
WScript.Quit
End If
On Error GoTo 0
0612hidebou
2010/12/12(日) 11:30:07とてもスマートなコーディングですね。コードを公開してくださって
助かる方も多くいらっしゃると思います。ありがとうございます。
0613hidebou
2010/12/12(日) 22:05:36ベクター版はサイズ14,16に限定し動作可能といたしました。
http://www.vector.co.jp/soft/winnt/game/se487331.html
製品版は当サイトの「四角い迷路」アカウントを購入すると制限無く動作
するプログラムとしました。
http://kuroda.bglb.jp/maze/maze.zip
0614hidebou
2010/12/13(月) 00:04:15方もいらっしゃるかも知れませんが、ダウンロードされたバイナリには迷路
を生成するコードはあるもののトリガー部分が無い状態となっています。
トリガー部分はサーバーにありますのでどういった動作とするのか、認証を
必要とするのかといった決定をサーバー側のセッティングで変更することが
できます。
0615hidebou
2010/12/13(月) 00:12:54サーバー側で変更可能ですが迷路の場合、サイズが30以上となるとサーバーの
CPU稼働率は瞬間的に100%に達します。当然複数の要求を平然とこなすことは
不可能です。迷路の作成はクライアントCPUで行い、その制御だけをサーバー
側で行うという選択を可能にするのがHTABOXシステムの実像です。
0616hidebou
2010/12/14(火) 01:47:53ディスパッチ化し呼び出すというコードを勉強していました。確かに時が過ぎ
ればFSOを呼び出すかのようにSystem.IOを利用する事になるでしょうから.NET
環境でのスクリプトを起点としたHTMLアプリケーションも必要だと感じました。
0617hidebou
2010/12/14(火) 02:04:51によってソースが暴かれているとすれば、今日のコードでそれは阻止できる
ことになります。まぁ世の中そんなに甘くはないでしょうから実行中のマネー
ジコードを観察できるようなツールがあったりするんでしょうね。
0618hidebou
2010/12/15(水) 20:10:51通信可能なCOMでラップすることによりHTML中のスクリプトから.NET機能を
呼び出せる可能性を生みます。極端な例ではEvalする形式でC#コードをHTML
中のスクリプトに書けそうな気がします。
「C#にできることはお好きにどうぞ」
が実現できれば、私がWIN32APIへのブリッジを書く必要もなくなるわけで
大変楽ができそうです。
0619デフォルトの名無しさん
2010/12/15(水) 21:23:13> ttp://www.vector.co.jp/soft/winnt/prog/se101656.html
> すぐに作れる、簡単、快適、Windowsソフト作成用プログラム言語システム
> (10.06.01公開 1,443K フリーソフト プログラミング:その他)
> ソフト詳細説明
> ・すぐに作れる、簡単、快適、Windowsソフト作成用プログラム言語システム。
> ・習得が簡単といわれているHTMLライクなプログラム言語
> その名も 「KSプログラミング」。
> ・ちょっとしたプログラムがあっという間にできあがる。
> ・単体で動作するEXEファイル作成までばっちり対応。
HTML、C#、.NET機能呼び出しで三題噺的にこれを連想
……でも実際あんまりHTMLライクじゃないよねこれ
0620hidebou
2010/12/15(水) 22:25:29興味深い情報をありがとうございました。.NETの内部(マネージ空間)では
何でもありですので自前の言語仕様を設計したい気持ちになるでしょうね。
でも、私は既存スクリプト(ネイティブ)とマネージ空間とのブリッジを
目指します。既存言語仕様の拡張なら必要なければ使わなければいいという
選択肢がありますが、新規言語仕様になるとたとえ単純でも敷居が高くなる
気がしています。
0621hidebou
2010/12/15(水) 22:39:27HTML中のスクリプトからSystem.IO.StreamReaderを利用したいとする。
WIN32APIのようにそのターゲットだけをスクリプトに出現させることは簡単
ですが、それでは他の要求があるばあい1つづつ書き足す必要が生じる。
私は横着なのでそんなことしたくない。スクリプトにはNetEval関数を提供し
動的に希望のインスタンスをディスパッチとして提供したい。
みたいな感じです。鬼門はマーシャリングになるでしょうか。
0622hidebou
2010/12/15(水) 23:01:23サイドで.NETを実行させたいという野望があります。セキュリティーという
面ではシステムアセンブリのアップデートを無視するのでよしく無いわけで
すが、枯れた.NETバージョンならありなのではないかと。結果的にインスト
ールの必要なく自身が必要とする.NET機能を使えるわけです。
0623hidebou
2010/12/16(木) 05:15:38に作ったのかという疑問が残ります。結局内部ではDispatchでInvokeなわけ
ですから、ネイティブなコードからツールとして使える窓口を作ればそれな
りに重宝なモジュール群だと思うのですが、内向きにしか機能を公開しない
設計なために中で書くのか外で書くのかの選択を迫っているかのようです。
0624hidebou
2010/12/16(木) 05:28:45のソースコードをメモリ上にコンパイルして、結果として生成されたアセン
ブリを外界へCOMモジュールとして公開することができそうです。ですから
自分が使いたいと思う機能を実現するクラスを書いたソースコードを動的に
コンパイルして、そのメソッドをスクリプトから呼んでもらうというのが
一番自然な流れになると思います。
0625hidebou
2010/12/16(木) 13:49:59を指定せずメモリ上の生成としても一時生成ファイル領域に頼みもしないフ
ァイルを生成しています。ということはマネージ環境のソースを隠すことは
難しいですね。.NETは対Javaな訳ですからそういう性質のものだと。
0626hidebou
2010/12/16(木) 14:03:55を起点とし、必要な局面だけマネージコードを使用するという方向性はいい
んじゃないかと感じています。.NETのソースは隠蔽できないので難読化する
しか無い訳ですが、シンボル名の変更等の手段しかなくてかわいそうです。
0627hidebou
2010/12/16(木) 15:38:03通しました。最も印象深い発言は「.NETレベルのコードに隠す必要性を感じ
ない」というものでした。確かにすでに用意されているアセンブリをどう組
み合わせても既知の技術の組み合わせにすぎないわけですから然りです。
でもアプリケーションで構造そのものが重要な意味合いを持つ場合、単に実
装手法というようなレベルの話題では割り切れない局面もあると思います。
0628hidebou
2010/12/16(木) 16:05:01から、アプリケーションは製作者から離れた製品ではなく製作者の分身また
はエイリアスだと認識しています。それが無断で使用されるとかソースが盗
用されることは人権の侵害以外の何ものでもないと思います。
そんな理屈をこねていても世の中前に進みませんのでHTABOXを書いていると
いうのが私の姿です。
0629hidebou
2010/12/17(金) 14:04:46程度の操作が行えるように準備されていることに気づきます。というか.NET
であろうがプロセス起動初期は通常のPE仕様でのプロセスですから当然とい
えば当然です。
0630hidebou
2010/12/17(金) 14:32:19当時から切り離す事が決まっていたJ#系のDLLとTLBは独立した構成となって
います。現在取り組んでいる課題とは方向が異なりますが、これを解析する
ことによりWindows上の高速なJava環境を復活させる事ができるかも知れませ
ん。
0631hidebou
2010/12/18(土) 23:47:24うことに取り組んで見たのですが、最終局面で例外が発生します。動的では
なく既存アセンブリの実行なら問題ないですから、既存アセンブリ内に動的
コンパイル動作を記述すればいいのですが、そのアセンブリが作られた.NET
バージョンを暗黙に要求することになるので、できれば回避したかったので
す。
0632hidebou
2010/12/19(日) 00:02:12けでは無いのですが、概ね.NETの雰囲気はつかめたと思います。上記実験の
結果としてHTML中スクリプトから.NETの機能を使う場合はコンパイルした自
前のDLLを用意してもらい、ネイティブ環境からDLL内のクラスとメソッドを
指定した呼び出しがあった場合に中継するというのが自然な流れになります。
0633hidebou
2010/12/19(日) 00:24:16に.NET環境へHTMLコンポーネントを提供する手法です。おそらくこちらの方
がインパクトは大きいように思います。現状でHTAを知っていてコードを書く
人間にとって.NETの機能が使えたところであまり喜ばれない気がします。
それよりは、C#しか書いたことが無いという人間にアプリケーションウイン
ドウとしてHTMLコントロールを使ってもらう方が喜ばれるでしょう。ですか
ら混乱を避けるために新たな名前を考えるべきですね。今のところDNETBOX
にしようかなと思っています。ファイル一時生成でいくかリソースのままで
いくかはまだ未定です。
0634hidebou
2010/12/19(日) 00:41:51「C#とHTMLでお気軽プログラミング」
いつの間にか
「C++マネージコードとHTMLで楽々プログラミング」
最終的に
「C++COM構築とHTMLで本気なプログラミング」
という展開は実に私らしい落ちでいいかもと思っています。
0635hidebou
2010/12/19(日) 05:29:06内に保持して、実行環境を判断してから動的にコンパイルし、生成アセンブリ
を起動することに成功しました。つまり開発環境でコンパイルするのでは無し
に、スクリプトのようにC#ソースを暗号化して保持し実行時にコンパイルする
事が可能です。したがって書き方によっては.NETのバージョンを選ばないソー
スとすることができます。若しくはアセンブリの実行前に外殻EXEからきめ細
かな指示をユーザーに与える事ができます。
0636hidebou
2010/12/19(日) 05:50:10行っていたのですが、アンマネージC++がロードしたCLR環境だとCompileで
こけます。例外も出せないようなこけ方ですので構造的に無理なんじゃない
かと思います。CSharpCodeProviderの場合は慎重にコーディングすれば動作
します。
0637デフォルトの名無しさん
2010/12/19(日) 17:52:10スレをざっと眺めたかんじだと、ソースの管理と称して危険な感じがするんですけど。
0638hidebou
2010/12/19(日) 19:50:47情報などは一切収集しておりません。POSTされるパケット長を監視してい
ただければ理解できると思いますが将来のために当サーバーのアカウント
情報を暗号化して受信し記録する機能は現時点で持っています。
0639hidebou
2010/12/19(日) 19:56:48違う判断に基づくものであることはご理解いただけると思います。EXEファ
イルの実行はコンピューターに対するユーザーの権限を製作者に委ねる行為
と言えます。
0640hidebou
2010/12/19(日) 20:02:26プログラムは実行中のコンピューターに対してあらゆる事ができますが何を
行うのかは製作者のモラルに帰着しますし、製作者との信頼関係が無ければ
不用意にEXEファイルを実行してはなりません。
0641hidebou
2010/12/19(日) 20:09:20何かをどこかに送信することはありません。
HTABOXエンコーダー、HTABOXクイック格納動作時にはフレームの上側をサー
バーのレスポンスで形成し、将来そこに埋め込まれる当サイトの認証情報を
サーバー側へポストするという動作としています。現在は無認証ですので
内容のあるものとはなっていません。
0642hidebou
2010/12/19(日) 20:17:58作成できます。それはご指摘のように危険もはらむ両刃の剣です。もし私の
作ったHTABOXが結局HTAのように悪戯の道具にされるならば、提供する開発
者毎にバイナリを生成し識別規則を設ける必要があるだろうと考えています。
ただし、そんな日が来ないことを信じています。
0643637
2010/12/19(日) 21:49:491、hidebouさんのサーバーからなんらかのコマンドを受け取る機能は持ってるが、それは有効化されていない。
2、いまの仕様は、hidebouさんのサーバーへ認証をしない仕様になっているので、そのパケットのやり取りは全くしていない。
3、Exeを実行するなら、当然だが各自で責任を持て。
ってことで、とりあえずはIPアドレス程度の情報でも、勝手に収集される心配はないってことで理解していいですよね?
0644hidebou
2010/12/20(月) 01:27:36HTABOXコア本体であるHTABOX.EXEは単にローカルで実行するEXEファイルです。
これ自体は格納されたスクリプトを実行する入れ物に過ぎません。引数なし
で起動された場合のレジストリ登録機能以外は自分で何かをするという能力
はありません。
0645hidebou
2010/12/20(月) 01:34:21スポンスで形成している場合(HTABOXエンコーダー、クイック)についてで
すが、通常にブラウザでサーバーからページをGETする動作になりますので
収集するしないに関わらずサーバーにはログが残ります。当サイトをブラウ
ジングしているのと同じですから時刻、IP、エージェントは残ります。
0646637
2010/12/20(月) 01:45:380647hidebou
2010/12/20(月) 01:47:15ト情報を暗号化してローカルPCからサーバーへPOSTしています。現在は無認
証ですのでゲスト用アカウント情報です。番号毎に回答しますと
1.HTABOXエンコーダー、HTABOXクイックはサーバーとのコネクション無しに
は動作しません。
2.クライアント側から見てフレームページのGET、当サイトのログイン情報
のPOSTを行っています。
以上の説明でご理解いただけるでしょうか?
0648デフォルトの名無しさん
2010/12/20(月) 01:57:440649hidebou
2010/12/20(月) 01:59:57どうもグズなので入れ違いの書き込みとなってしましました。
HTABOXに格納されたプログラムがサーバーとのコネクションを要求しないも
のであればまったくのスタンドアロンプログラムとして動作します。
0650hidebou
2010/12/20(月) 02:03:51いいえ、こちらこそReadMeやHELPに明記すべきですので、今後は明確に動作
を説明する記述を心がけたいと思います。お気づきの点がありましたらお気
兼ねなくご質問ください。
0651デフォルトの名無しさん
2010/12/20(月) 02:06:55>>646の解釈でいいってことですよね。
ファイアーウォールの警告も出ないから、どうやって通信してるかと思ったwんだけど、
迷路のようにデータをサーバーに取りに行く仕様にしてあれば、当然のごとく通信するけど、
自分でスタンドアローンで動く仕様でスクリプトを組んだ場合は、そちらのサーバーとは通信しない。と理解しました。
0653デフォルトの名無しさん
2010/12/20(月) 14:22:39CSSで非表示にしておくのが無難なようです
0654hidebou
2010/12/20(月) 15:16:20F5での更新は気づいていませんでした。完成したHTMLのメニュー用TABLE
はご指摘のようにCSSでdisplay:noneを指定することを推奨します。
ウインドウメッセージを細かく拾えば今後対応できる可能性もあります。
ありがとうございました。
0655hidebou
2010/12/20(月) 22:33:23各言語へHTMLインスタンスを生成し操作できるロジックを与える。
コンパイルしてエラーが無いことを確認済みのソースファイルをドロップし
てEXE格納する。EXE内には暗号化したリソースとして格納される。
EXEが実行環境でクリックされた場合システムが提供する場合デフォルトCLR
を取得し、当該環境で多言語用コンパイラを生成する。
生成されたコンパイラへ格納済みソースをデコードして渡し、実行環境に適応
したアセンブリを生成する。
可能であればこのアセンブリはユーザーから見えない状態とする。
0656hidebou
2010/12/20(月) 22:41:00コンパイルとすれば.NETのバージョンを気にする必要が無くなるだろうという
極めて安直な発想からスタートしています。勿論下位互換を意識したコーディ
ングがあってこそ実現可能ですが、将来.NETがバージョンアップした場合も
そのまま動く可能性が大であるというメリットはあると思います。
0657hidebou
2010/12/21(火) 02:06:18眺めると、毎度の事ながら単純な状態から拡張が行われる過程を眺められる
状態でないと何が重要で何がそうでないのかの判断が難しいだろうと痛感し
ます。ちなみにアンマネージ状態のC++からCLRを操作するには<Mscoree.h>
が重要になりますが、1.1なら総当りで解析してもそれまでという量でも3.5
になると絶望的な量になります。
0658hidebou
2010/12/21(火) 17:08:42実行することに成功しました。これにより.NETコードを隠蔽実行すること
ができます。セキュリティー上の理由で実行前にアセンブリをチェックし
たいという要求とは相反する動作となりますが、これで動的なCLRコード
解析以外の方法ではソースが見えない状態を実現できました。
0659653
2010/12/21(火) 18:18:15WSHファイル側に記述して送りつけているプロシージャが全滅……
構築と注入のタイミングを再考してみれば当然の動作とはいえこれはちょっとまずいんじゃないでしょうか
0660hidebou
2010/12/21(火) 18:45:27私もクイックのデモで同じ状態を確認しています。ダイアログベースの場合
は発生しないのでHTAベース固有の問題なのかも知れません。今取り組んでい
る課題にけりが付き次第F5問題に取り組みます。ご迷惑をおかけします。
0661hidebou
2010/12/22(水) 01:24:57ジとRefカウンターの動きです。
DocMsg 00000111
MSG = 000e03a4
MSG = 000e03a4
MSG = 000e03a4
MSG = 000e03a4
Release Menu 00000005
Release Menu 00000004
Release Menu 00000003
Release Menu 00000002
MSG = 000e03a4
Mother Release 00000011
Mother Release 00000010
Mother Release 0000000f
Mother Release 0000000e
Mother Release 0000000d
0662hidebou
2010/12/22(水) 01:32:19で単純にif(uMsg == WM_COMMAND) return(0);で解決できそうです。
できるだけ早急に各ダウンロードZIPを更新する予定です。この問題を指摘
してくださった方に心から感謝申し上げます。
0663hidebou
2010/12/22(水) 01:57:27ttp://kuroda.bglb.jp/htabox/htaboxapp.zip
に置きます。何のお礼も差し上げられないのですが、もしアイコンファイル
拡張子icoのURLを知らせていただけるか、当サイトの下部の問い合わせアド
レスにメール添付していただければオリジナルバージョンをビルドいたしま
す。
0664hidebou
2010/12/22(水) 11:22:15F5の場合 wParam=00011799:lParam=00000000
CTRL F5 wParam=0001179b:lParam=00000000
ですから何を条件に蹴るべきかちょっと悩むんですが、ドキュメントにメニ
ュー系コントロールが乗ることはないと思うのでlParamの数値にしようかと
考えています。それから当然の事ですがCreateHtmWindowは別プロセスIEです
からDLLフックしない限りメッセージを制御できません。したがってF5につい
ての対策を行う予定はありません。
0665hidebou
2010/12/22(水) 11:47:55機能を追加して簡単なデモをお見せできればと考えています。今のところ
動作を単純化するためにターゲットEXEの単一ファイルを処理する機能とし
ています。まだまだ.NETって何?の状態ですから知識のある方の目に留まっ
てダメだししていただければいいなぁと思っています。
0666hidebou
2010/12/22(水) 12:21:41存在することにあります。HTABOXコア自体がマネージではその時点でCLRを
要求してしまいますから意味がありません。あくまでもネイティブなEXEと
してCLRロードのネゴシエートを行いメモリ上でのアセンブリ生成と起動を
行う事にあります。
0667hidebou
2010/12/22(水) 12:28:55はずですから現時点では完全なものではありませんが、少なくとも現存する
ファイルを対象とした静的デコンパイルツールは無力化されることになりま
す。
0668653
2010/12/22(水) 18:57:55アイコンはあまり気にしないほうなのでこれは要望になるのですが、
ドロップでの実行機能を削除、想定していない拡張子のファイルが引数に指定された場合は無言で終了する
コマンドライン版?のHTABOXコアを今後のバージョンに添付していただけると
個人的に使い勝手がありますので、ご検討くだされば幸いです。
0669デフォルトの名無しさん
2010/12/22(水) 19:03:27勉強はおいおいやろうと思う。ではでは。
0670hidebou
2010/12/22(水) 23:33:10了解しました。コマンドラインからの呼び出しについても見直して2.50とし
いと思います。
>>669
私はプログラミングって最もお金のかからないゲームだと思います。かから
ないどころか、ひょっとしたら大金持ちになれるゲームです。
マイペースで楽しんでください。
0671hidebou
2010/12/23(木) 00:14:53した。今回のチャレンジでひとつはっきりしたことがありました。この3つ
の中でCSharpは最もシステムに近い位置にあります。これはネイティブ環境
からコンパイルを試みると参照すべきDLLが少ないことで確認できます。
CSharpを基本として外界のCOMが必要な場合にJScriptでラップするという使
い方が最も賢いんじゃないかというのが現時点での感想です。
0672デフォルトの名無しさん
2010/12/23(木) 00:24:080673hidebou
2010/12/23(木) 00:31:29のやろうとしている事が理解されやすいかも知れません。.NETはレジストリ
依存のCOMDLLシステムが生み出したDLL HELLからの脱却を目指した訳ですが
逆に.NETのVERSION HELLを生み出しました。MS社にしてみれば常に新しいバ
ージョンを追わなければならない状況を作り出したいのでしょうが、私はそ
の戦略に一石を投じたいのです。
0674hidebou
2010/12/23(木) 00:40:22ョンが埋め込まれます。で実際に動作する環境のバージョンとすり合わせが
行われ、実行できない場合も発生するわけです。でもソースのまま保持し、
実行環境で取得された.NETバージョンでコンパイルすればその問題は生じま
せん。
0675hidebou
2010/12/23(木) 00:48:12ン、それが取得できなかった場合のメッセージ又は動作、を細かく設定可能
でなければ意味が無いだろうと考えています。従来はWindows内部で行われて
いたネゴシエートを開発者側で行えるようにします。
0676hidebou
2010/12/23(木) 00:55:01すいませんでした。だらだら書き込んでいて反応できませんでした。
WSC(Windows Script Components)だとしたら私はあまり使いません。
結局スクリプトでできない事はWIN32APIで実現するしかないので自分用の
COMコンポーネントとしてもHTABOXをレジストリ登録して使っています。
0677hidebou
2010/12/23(木) 01:00:48要となるモジュールを使いまわしたい場合は有効な手段だろうと思います。
HTABOX内部でもスクリプトで書いたモジュールをCOMの一部として利用して
いますので、スクリプトをドロップするとDLLができるHTABOXのDLL版も要望
があれば実現できます。
0678hidebou
2010/12/23(木) 14:29:44どうせ実行時コンパイルとするなら、実アセンブリを生成しない選択肢が用
意されているわけですから、使わない手はないだろうという展開です。
実行時コンパイルと聞くとタイムラグがあるんじゃないかと心配する方もい
らっしゃるでしょうが、JScript以外は実行時コンパイルであることに気づか
ないレベルだと感じています。これは実際に大規模なプログラムを動かさな
いと確定しないのですが、ソースから中間ファイルへの変換作業は極めて小
規模なのではないかと推察しています。
0679hidebou
2010/12/23(木) 22:48:24は無かったことにしてこの世にはv1.1.4322とv2.0.50727しか存在しないとい
うのが結論のようです。v3.0 v3.5 v4というのはプログラム側から見た場合
架空のバージョン番号でv2.0.50727へ拡張がほどこされたものにすぎないと
考えることができます。ちなみにWindows7でデフォルトバージョンを取得し
てもv2.0.50727という報告になります。
0680hidebou
2010/12/23(木) 22:56:23らでコンパイルしたいのかを選ぶということになります。その後に希望の環
境が取得できなかった場合、デフォルトを受け入れるのか、メッセージを表
示して停止するのかを選択する流れになると思います。
0681hidebou
2010/12/24(金) 16:48:47を行っていますが、JScriptのコンパイル動作が両環境で微妙に違います。
逃げ道としてはCSharpでコンパイルアセンブリを生成しJScriptソースを処理
させることなのですが、それでは美しくないのでさまざまな可能性を試しなが
ら妥協点を探っています。1000の実験ソースを書いて、10動き、それを分析し
て1にしてゆく。ろくにドキュメントの無い分野で何かをやろうとすれば避け
ては通れない関門です。
0682hidebou
2010/12/24(金) 22:24:32のですが通常のJScriptCodeProviderより確実に軽量です。CodeProviderでは
他の言語と同じ取り扱いができますがJScriptだけコンパイルが遅いんです。
これは内部でMicrosoft_Vsaを使い外見上CodeProviderに見せているからでは
ないかと推測できます。Microsoft_Vsaなら実に軽量で痕跡も残さないという
結果です。
0683hidebou
2010/12/24(金) 22:38:56側を操作する手段としては最適に思えます。JScriptはまったくタイプライブ
ラリを必要とせずObject.Method()というコードをGetIDsOfNamesとInvokeに
置き換えてくれますからCLR側からネイティブ側を覗く窓としても最適です。
0684デフォルトの名無しさん
2010/12/25(土) 02:15:350685hidebou
2010/12/25(土) 12:17:51不安で朝方まで書いているのもですから、結局昼近くまで寝てしまうという
パターンになってしまっています。今日の課題はいかにコンパイル後のアセ
ンブリにオリジナルディスパッチを滑り込ませるかです。できればデモのよ
うにIEを非表示で起動して...は美しくないので行いたくないのです。
今日は貴方の暖かい励ましで私の心が温まりました。ありがとうございます。
0686hidebou
2010/12/25(土) 16:46:24にまったくストレスなくパース当初から独自ディスパッチを認識させることが
できます。CSharp、VisualBasicについてはHTABOX.EXEにIDispatch*のExport
関数を用意しますからご自由にどうぞという展開が一番スマートだと思います。
0687hidebou
2010/12/25(土) 17:05:48し、処理を各言語で記述できます。したがって今後HTABOX自体へ積極的に
WIN32API機能を追加する必要は無くなると考えます。JScript以外はPInvoke
できるわけですし、JScript主体だとしても他言語でPInvokeを記述したアセ
ンブリをコールすればいいからです。
0688hidebou
2010/12/26(日) 15:58:38あとはHTABOXにコピペしデモ用のEXEをコンパイルするだけです。
.NETの世界はそのままドキュメントを受け取ると分けわかんない用語の世界
に突入し、特にCOM連携になると煙に巻かれそうになります。
0689hidebou
2010/12/26(日) 16:14:12拡張のようにも見えます。なぜならネイティブ空間でCSharpをコンパイル
する時にJScript機能への参照が必要になるからです。これは一見不思議な
振る舞いに思えましたが、内部でJScriptをマザー言語、またはユーティリ
ティー言語として使用していると考えれば納得できます。
0690hidebou
2010/12/28(火) 01:11:59トコードを実行させる訳ですが、現状だとHTABOX.EXEの静的文字列領域にコ
ードがそのまま格納されてしまうので一工夫しています。今までVC++エディ
タのマクロは書いたことがなかったのですが、マクロ用VBも.NETオブジェク
トを操作できることにちょっと感動しました。
0691hidebou
2010/12/28(火) 01:22:53ます。あらゆる言語が同一の仮想マシンに向かって協調しながら動けばいわ
ゆるクリティカルな状況も発生しないだろうという発想ですね。更にソース
コードレベルでチェックを行えるようにあえてネイティブコードを生成する
手段を提供しない。結果として総ては手のひらの上で踊るはずだと。
0692hidebou
2010/12/28(火) 16:43:40これでダンスを踊る準備が整いました。ただし私のダンスはちょっとばかり
独創的なわけですが。
0693hidebou
2010/12/28(火) 22:54:42しました。ソースコードの理想形は短いことではなく、10年目を離していて
も内容を即座に理解できる事につきると思います。つまり速度を犠牲にしな
い程度に説明的なソースを書くことです。ソースコードは自分への手紙です。
0694hidebou
2010/12/28(火) 23:04:58_bstr_t Encode64(char *data, int len = -1)
{
if(len == -1) len = lstrlen(data);
_bstr_t re = "";
char ascii[] =
{
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f',
'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v',
'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/'
};
0695hidebou
2010/12/28(火) 23:05:59for(int c = 0; c < len; c++)
{
samp[lstrlen(samp)] = data[c];
//3文字蓄積されたかループ最終の場合
if(lstrlen(samp) == 3 || c == len - 1)
{
//終端で処理すべきサンプルが無ければ離脱
if(lstrlen(samp) == 0) break;
//3バイトで24ビットのデータを作成
int base = ((samp[0] & 0xff) << 16) + ((samp[1] & 0xff) << 8) + (samp[2] & 0xff);
//---------------------------24bit
//842184 218421 842184 218421
//fc0000 03f000 000fc0 00003f
ch[0] = ascii[(base & 0xfc0000) >> 18]; re += ch;
ch[0] = ascii[(base & 0x03f000) >> 12]; re += ch;
ch[0] = ascii[(base & 0x000fc0) >> 6]; if(samp[1] != 0x00) re += ch; else re += "=";
ch[0] = ascii[(base & 0x00003f)]; if(samp[2] != 0x00) re += ch; else re += "=";
ZeroMemory(samp, 3);
}
}
return(re);
}
0696hidebou
2010/12/30(木) 10:21:19から、あくまでもネイティブなEXEに見せかけて動的CLR取得後のマネージ環
境プログラミングになります。この場合、マネージ環境での定石が通用しな
い局面に多々遭遇します。CLRの外界に公開されているインターフェース以外
は、試しにInvokeしてだめだったらあきらめるしかないのが現状です。
0697hidebou
2010/12/30(木) 10:37:50ようです。結果的に実行ソースコードがJScriptな場合はソースに起因するア
センブリをテンポラリとしても生成せず実行することができました。これを
他の言語にも拡張できれば完全なソースコード隠蔽が実現できると考えてい
ます。
0698デフォルトの名無しさん
2010/12/30(木) 11:38:05でも年末年始は休業したほうがいい。
0699hidebou
2010/12/30(木) 15:40:37CorBindToRuntimeEx -> 引数に指定したCLRの取得を試みます。
RunDotNetCode -> ソースコードをコンパイル実行します。
ReleaseRuntime -> 取得したCLRを開放します。
できれば日付が変わる前にデモをお見せできればと考えています。
0700hidebou
2010/12/31(金) 00:21:57ttp://kuroda.bglb.jp/htabox/dnet.zip
HTABOXコア2.50ベータEXEと.NET機能を呼び出すCompiler.js
各言語で記述された3つのファイルで構成されています。
HTABOXコア2.50をレジストリ登録後、Compiler.jsへ各ファイルをドロップ
すると.NETがあれば取得し、メモリ上コンパイルで実行します。
0701hidebou
2010/12/31(金) 01:19:28あるらしく、以降サブの名前空間名を明示することとします。サブの名前は
DotNetです。
WIN32.DotNet.GetRunTime("v1.1", "wks", 0);
これはCorBindToRuntimeExの先頭3つの引数と同一ですが、最初の引数省略は
NULLではなく文字列の""です。""の場合デフォルトを取得します。バージョン
指定文字列"vn.n"があった場合レジストリを調査し指定文字列が含まれる実在
バージョンを取得します。この関数はCLRを取得できた場合バージョン文字列
を、取得できなかった場合空文字列を返します。
0702hidebou
2010/12/31(金) 01:23:42は第1引数ソースコード文字列、第2引数"JS","CS","VB"のいずれか
第3引数参照システムDLL名(名前終端は\n必須)、第4引数はコンパイラオ
プション文字列です。
0703hidebou
2010/12/31(金) 01:33:26PCでも醜いエラーダイアログを出さず、通常テンポラリーが生成される
c:\docume~1\hoge\locals~1\temp\を実行中に眺めても該当するファイルが無
いことを確認していただけると思います。
0704hidebou
2010/12/31(金) 01:45:11マネージJS,CS,VBを起動スクリプトとして選択できるようにしたいと考えて
います。まだ勉強不足でよくわからないのですが、.NETプロジェクトをその
ままドロップできるようなDNETBOX(仮称)に発展させることができればと
考えています。
0705hidebou
2010/12/31(金) 02:18:42則として、マネージソースコードを暗号化保持するオプションを設けてデモ
のように呼び出してもらうというのが美しいかもしれません。でDNETBOXは
単純にドロップすると実行したいCLRバージョンや参照DLLをGUIで指定する
形式(Quickのように)にすればキャラが被って混乱を招くこともない気が
します。
0706hidebou
2010/12/31(金) 02:31:15でしたからC++書いてたのは正味2週間程度です。この新たな世界で自分なり
のカラーを出すにはどんな技術が必要か?というイメージは実現できた気が
するのですが、はたしてこんな短期間の分析で人の役に立つものができたの
かすこし不安です。
0707hidebou
2010/12/31(金) 14:42:16スタンスから他方をモジュールとして呼び出すことです。これが実現すれば
JScriptからCSharpモジュールを呼べますから私がコツコツWIN32APIへのブリ
ッジを書く必要がなくなるわけです。
0708hidebou
2010/12/31(金) 14:53:25ん。.NETという約束事は従来のタイプライブラリやCLSIDをシステム全体から
切り離した一種のプライベートな空間で実現するものに見えますからローダ
ーとアセンブリデータさえ自前のEXEに内封すれば独自の.NET環境を実行でき
そうに思います。
0709hidebou
2011/01/01(土) 01:02:28呼べない事にあるので、JScriptから他の言語のメモリ上モジュールをディス
パッチとして呼ぶことは成功しているのですが、これをJScriptスコープから
のきれいな関数呼び出しにできるかというと難しいかも知れません。もうす
こしだけ粘ってみますが、「WIN32コール主体ならJScript以外で書くこと」
という仕様を受け入れた方がわかりやすいかも知れません。
0710hidebou
2011/01/01(土) 01:59:42であることが動作の基本になっているように思えます。だいいち他人の書い
たDLLで無い限りソースは存在するはずですし、ソースが存在すれば単一な
ファイルにすることはできるはずです。逆に他人の書いたDLLの場合はソース
を保護してあげる必要も無いわけですから実ファイルで添付できるはずです。
0711hidebou
2011/01/01(土) 13:01:46ttp://kuroda.bglb.jp/htabox/dnet.zip
JScriptはWIN32オブジェクト経由でHTMLインスタンスを生成するデモに変更
しました。
0712hidebou
2011/01/01(土) 13:11:29また、予想されたことですが、マネージ環境は使用したWIN32オブジェクトへ
正確な数のReleaseを発行しないためWIN32.Quit()を使わないとEXEインスタン
スが残留します。具体的にはHello.jsのコードをご覧ください。
0713hidebou
2011/01/01(土) 20:37:28せるのは面倒でもネイティブなJScript空間になら簡単に認識させられること
に気づきました。つまりネイティブなJScript、VBScriptからCSharp等のコー
ドをメモリ上でコンパイルした結果をディスパッチとしてコールできます。
いつもの事ながら奥まったことばかりに目が行き、単純なことを見落として
しまいます。
0714hidebou
2011/01/01(土) 21:56:02var MyLib =
" using System;\n" +
" using System.Runtime.InteropServices;\n" +
" namespace MyLib\n" +
" {\n" +
" public class CallBeep\n" +
" {\n" +
" [DllImport(\"kernel32.dll\")]\n" +
" private extern static bool Beep(uint dwFreq, uint dwDuration);\n" +
" public void Main()\n" +
" {\n" +
" Beep(262, 500); // ド\n" +
" Beep(294, 500); // レ\n" +
" Beep(330, 500); // ミ\n" +
" Beep(349, 500); // ファ\n" +
" Beep(392, 500); // ソ\n" +
" Beep(440, 500); // ラ\n" +
" Beep(494, 500); // シ\n" +
" Beep(523, 500); // ド\n" +
" }\n" +
" }\n" +
" }";
var Assembly = WIN32.DotNet.CompileDotNetCode(MyLib, "CS", Ref, "", false);
var Dipspatch = WIN32.DotNet.CreateDispatch(Assembly, "MyLib.CallBeep");
Dipspatch.Main();
0715hidebou
2011/01/01(土) 22:00:50通常のJScriptからCSharpコードでWIN32APIをコールするDLLをメモリに生成
し、音階を鳴らすコードです。したがってHTML中のスクリプトからもまった
く同じ事ができることになります。勿論.NET必須ですが。
0716hidebou
2011/01/01(土) 22:16:38ていると細かな事に心とらわれて大局を見失います。COMの登録なしにHTMLコ
ード中から.NETアセンブリコードを動的にコンパイルしてWIN32APIを呼び出
す。実に自然な流れで美しい!!これぞ私の世界!!
0717hidebou
2011/01/01(土) 22:49:46アセンブリからもDispatchを取得できるようにしましょう。これで事実上
「HTMLアプリケーションから不可能な呼び出しは何も無い」
という状態が実現できたと思います。
0718hidebou
2011/01/02(日) 00:40:27ttp://kuroda.bglb.jp/htabox/dnet.zip
Beep.htaはHTML中のスクリプトから動的にDLLを生成しWIN32APIを呼び出す
デモです。デモではWIN32オブジェクトをActiveXしていますが、HTABOXへ
格納された配布状態の場合自動的に追加されます。したがって配布先環境
ではまったくCOMを登録することなしに同じ動作を実現できます。
0719hidebou
2011/01/02(日) 00:57:57WIN32.DotNet.CompileCode(str, type, ref, option, flg);
になりました。最終引数はEXE形式の場合true,DLL形式の場合falseです。
返却値はEXE形式の場合return結果VT_I4、DLL形式の場合VT_DISPATCHで
このディスパッチはAssemblyを表現しています。DLLのメソッドを呼ぶには
var Disp = WIN32.DotNet.CreateDispatch(Assembly, "MyLib.CallBeep");
のようにアセンブリからクラスを指定してコンストラクトする必要があります。
CreateDispatchの返却値は実際に呼べるディスパッチですので関数名を指定し
Dips.Main();
で実行できます。また実在アセンブリ用に
WIN32.DotNet.CreateDispatchFrom(Path, TypeName);
も追加しました。
0720hidebou
2011/01/02(日) 02:09:26正直言って休みたいのですが、休んだ心地になれるほど私の周りの状況は
平穏では無いのです。今回のチャレンジは私がソースコードを書く人間と
して存在できるか否かが問われているという認識で取り組みました。
まだこれを世に出さないとなんとも言えませんが、私はまだ書き足らない
し、この続きを心に余裕を持って書く日がくることを信じています。
皆さんにとって2011年がよい年でありますようにお祈り申し上げます。
0721hidebou
2011/01/02(日) 11:33:31アプリケーションを追加できればと考えています。JScriptの場合アンマネー
ジでもマネージでも拡張子はJSなものですから、ソース内の特徴でいずれなの
かを判断しなければなりません。今のところ安直にimportが宣言されているか
で判断しようと考えています。
0722hidebou
2011/01/02(日) 12:17:06と考えています。一応推奨起動スクリプトはJScript.NETにしてHTMLインスタ
ンス生成手法をデモにすればHTABOXファミリーと位置づけてもいいのではと。
それとJScript.NETスコープのWIN32からWIN32.DotNet.CompileCode();等を
使えば、CSharpCodeProviderがらみを書かずにWIN32APIが使えると思うので
これはこれで完結した世界になると思います。
勿論HTABOXコアはクイックやドットネットの上位に位置しますので両者が内
部で行う処理を細かくソースコードで管理できることになります。
0723デフォルトの名無しさん
2011/01/02(日) 12:42:33なにやってるのか全然理解できない(プログラミングがわからないので)
これはまだスクリプティングの領域なんでしょうか?
0724hidebou
2011/01/02(日) 15:01:14スクリプトという表現はとても曖昧なものですよね。マシン語を直接生成し
ない開発環境は内部でCOM呼び出しを行います。だとすれば実行インスタンス
へオリジナルのCOMを注入さえできれば何でもありにできます。
通常はCOMというとレジストリに登録してあるDLLが呼び出されるわけですが、
HTABOXの場合内部に持つスクリプトエンジンやCLRエンジンに対してそれを
行いますので結果的に登録無しで何でもありにできるということです。
0725hidebou
2011/01/02(日) 15:46:06自由な動作を行わせる権利は当然有しているわけです。だけど開発の煩雑さや
開発環境を提供する側の思惑でその権利が抑制されていると感じるのです。
0726hidebou
2011/01/02(日) 16:17:45COMのレベルで眺めてみると、手を加える余地がいろいろと見えてきます。
COMプログラミングというと「難解」という誤解があるようですが、スクリプ
トや.NETで使われているディスパッチは「そういう名前のメソッドあります?」
「このIDでInvokeしてくださいね」「了解」の単純な繰り返しですから.NET
のドキュメントを呼んで迷子になるよりずっと単純だと感じています。
0727hidebou
2011/01/02(日) 20:08:32の関数群そのものがIDispatch継承クラスのメソッドとして存在する構造と
しています。つまり、内部で使うクラスも原則的にCOM呼び出しを行うように
しました。
一見面倒に思えるでしょうが、これによりC++はJavaかスクリプトのように可
読性が向上します。今回はDotNetというクラスを作って関数を4つ宣言したわ
けですが、必要なければこの部分だけ削除すればそのままコンパイルが通り
ます。普通、プログラムは機能が多くなると自重で潰れかかるものですが、
HTABOXに関してその心配がまったく無いため、気軽に機能を追加できていま
す。
0728hidebou
2011/01/03(月) 01:17:50再確認したいと思います。
1. .NETが有るか無いかを確認し任意なバージョンの.NET環境を取得する。
2. 取得した.NET環境で実ファイルを生成しないコンパイル動作を行う。
3. 2がEXE形式ソースであれば.NETのソース隠蔽実行となる。
4. 2がDLL形式ソースであればHTML中からコールできる状態とする。
結果としてHTML中スクリプト、WSHスクリプトからCSharpコードを動的にコン
パイルして任意なWIN32API呼び出しが実現できる。という流れです。
0729hidebou
2011/01/03(月) 01:55:02続けるでしょうが、一般のユーザーは半数以上がVista以降になっているん
じゃないでしょうか。だとすればもうWIN32APIは.NET経由で呼んでもらおう
という趣旨です。私はDirectXとか単にWIN32APIを呼ぶだけでは実現できない
機能の追加に集中できることになります。
0730hidebou
2011/01/03(月) 20:27:31上のIDispatchインスタンスへの参照を滑り込ませるのは今の力量では無理
なようです。これで.NETソースコード格納による動作の方向性がはっきり
しました。原則としてCSharp、JScript、VisualBasicのソースを格納した
場合、なんら操作を加えずにコンパイルして実行します。GUIは.NETの機能
で構築してもらいます。この場合のメリットはソース隠蔽、CLRバージョン
の柔軟性ということになります。
0731hidebou
2011/01/03(月) 20:40:10オリジナルディスパッチであるWIN32を実行インスタンスへ追加するものとし
ます。したがって.NET環境ソースコードを起点としてHTMLアプリケーション
を構築したい場合の言語はJScript.NETのみとなります。勿論これは起点と
なるスクリプトですからJScript.NETから既存アセンブリを呼ぼうが、動的に
CSharpやVisualBasicのコードをコンパイルしようが自由ですからなんら制約
にはならないと考えます。
0732hidebou
2011/01/03(月) 20:46:20スクリプトへの引数を認識できないという意味だと思いますので、案として
htabox.exe /Run hoge.js Argument1 Argument2 Argument3
hoge.jsを実行、以降をスペース区切りで引数と認識でよろしいでしょうか?
0733デフォルトの名無しさん
2011/01/03(月) 22:08:440734hidebou
2011/01/03(月) 22:18:54なるほど。私としてはその方が記述は簡単です。確かにHTABOXをレジストリ
登録してデバッグできるようになったわけですから、ドロップしての実行は
旧バージョンの遺産という気もします。もうすこし考えてみます。
0735hidebou
2011/01/03(月) 23:40:47ttp://kuroda.bglb.jp/htabox/dnet.zip
Hello.jsは単なる.NETコードになり、Hello2.jsが.NET環境でWIN32を使う例
になっています。WIN32.DotNet.RunJScriptCode(Sour, "");を追加しました。
第2引数は参照DLL名を\nで連結し終端にも\nを追加した文字列です。
しばらく自分でもいじってみますが、問題なければ2.50の仕様にしたいと考
えています。
0736hidebou
2011/01/04(火) 00:28:48生成されるはずのコードを中空でコンパイルしていますので、自身のパス
取得に苦労する可能性があります。外側を覆っているHTABOX側で環境変数
をコントロールできればいいのですが、できなかった場合はMainの第一引数
を親であるHTABOX.EXEのパスにするといった対策を考えています。
0737hidebou
2011/01/04(火) 09:25:06ttp://kuroda.bglb.jp/htabox/dnet.zip
Hello2.jsで無駄にCLRを再取得していた部分を訂正しました。
また、Windows7での動作を確認しました。当然ですがレジストリ登録時は
HTABOXAPP.EXEを右クリックして管理権限で動作させてください。
0738hidebou
2011/01/05(水) 12:28:35いる局面が存在しますから、独自のプリプロセッサーフェーズを設けてC/C++
互換のプリプロセッサマクロを提供することができます。例えば__FILE__は
ソースファイルのパス文字列に置き換わる等です。少なくとも__HTABOX__は
自身が格納されているHTABOXの絶対パスに置き換わるというルールを設けれ
ばHTABOX.EXEの公開関数を単純に[DllImport(__HTABOX__)]で利用できそうに
感じます。実験はこれからですが。
0739hidebou
2011/01/06(木) 10:33:50しないようです。マネージ側でスレッドモデルを指定すればCoInitializeExが
適切に呼ばれるというドキュメントなんですが、どうも実行時のメモリモデル
そのものが違う感じのとまり方になります。もしHTABOX.EXEがDLLだったらマ
ネージ側の環境に合わせた設計とすることもできますが、DLLに成り下がる気
は今のところありませんので、今後の宿題にしたいと思います。
0740hidebou
2011/01/06(木) 19:27:36かかります。これを突き詰めると事前にDLLをバイナリデータとして保持する
ことになりますし、さらに突き詰めるとEXE内にバイナリデータを事前に保持
することになります。つまり.NETがインストールされていなくてもHTABOXが
.NETのDLLを総て保持している状態を作ることも可能だと考えています。
0741hidebou
2011/01/06(木) 19:43:41る意味で、動的コンパイルによって生成されたアセンブリをメモリ上に永続
化して動作の高速化を目指しています。現時点では僅かな時間の差にしかな
らないでしょうが、この技術は.NETバージョンを選ばない生のアセンブリを
生成、保持できる可能性を生みます。つまりコンパイルは格納時に行われて
いるのに、実行時に任意のCRLバージョンで動作するできることになります。
0742hidebou
2011/01/07(金) 00:05:05ファイルへ退避させ、必要なときにアセンブリ化して実行するということは
ネイティブな環境でも問題なくできるようです。今後.NET用ライブラリを
HTABOX内に保持する場合は呼ばれる度にコンパイルではなく用意してある
バイナリをそのまま提供という形にできると思います。
0743hidebou
2011/01/07(金) 19:19:53ttp://kuroda.bglb.jp/htabox/dnet.zip
従来はコンパイラそのものをコンパイルして生成していましたが、コンパイル
済みバイナリイメージをEXE内に保持することで動作を軽量にしています。
0744hidebou
2011/01/07(金) 19:35:56リバイナリをスクランブルした形でEXE内に保持し、実行時にメモリ上インス
タンスを生成すればアセンブリがコンパイルされた環境とは別バージョンの
CLR上でも問題なく動作させられると考えます。アセンブリの直接格納はさす
がにHTMLアプリケーションとは無関係な存在となりますのでDNETBOXみたいな
名称の別アプリケーションとして公表されるかも知れません。
0745hidebou
2011/01/07(金) 21:35:06フィードバック作業に入ります。まずHTABOXコア2.50は.NETに関する低水準
関数を総て装備します。今後HTABOXコア2.50はプロフェッショナル向けの製
品と位置づけてゆきたいと思いますので、ドキュメントも有る程度知識のあ
る方を対象にしたものになると思います。
0746hidebou
2011/01/07(金) 21:41:12デモのHTAのように.NETコードを動的にコンパイルし.NETクラス又はWIN32API
を呼び出す事ができるようになります。従来からそうですが、クイックは潜
在的にHTABOXコアの機能をすべて持っています。でもその総てを解説するこ
とは逆に初心者の混乱を招くため機能の紹介は限定的なものになります。
0747hidebou
2011/01/07(金) 22:13:04ディスパッチ注入を利用した新たなHTMLアプリケーション手法として育てて
ゆきたいと思います。今までの実験では.NETアプリケーション固有のクラス
で構築するGUIは残念ながらJava以下のレスポンスに思えます。軽量なHTML
のGUIと.NETの低水準関数操作による新たなカテゴリーになると思います。
0748hidebou
2011/01/07(金) 22:20:09格納形式は
1. ソースを格納し実行時コンパイル
2. アセンブリを暗号化格納し実ファイルを生成せず実行
3. 実ファイルを生成して実行
が選択できる状態になろうかと思います。
0749デフォルトの名無しさん
2011/01/07(金) 22:20:14とっかかりの入門サイトがないと厳しい。
0750hidebou
2011/01/07(金) 22:24:40おっしゃるとおりだと思います。まだ先を掘削する作業になってますので、
十分な導入のための解説に手が回っていません。やれることの見極めがつき
ましたら、導入のためのコンテンツ作成を行いたいと考えております。
0751hidebou
2011/01/08(土) 17:50:54とJScriptのエンジンを統一して扱おうとすると差異を吸収するクラスが必要
になりましたが、JScript単体で行っていた手法より堅牢な手法で実行インス
タンスへディスパッチを注入することができています。デモのhello2.jsを
VisualBasicで記述できることになりました。ということは内部でCSharpを
使うことなくWIN32APIが使えるはずですが、まだ実験してないので結果は後
ほど。
0752hidebou
2011/01/09(日) 02:17:50ttp://kuroda.bglb.jp/htabox/dnet.zip
Hello2.vbはVisualBasic単体でHTAインスタンスを生成しWIN32APIをHTML側
スクリプトへ提供するサンプルです。当然の事ながらその他の手法より軽快
に動作します。
0753hidebou
2011/01/09(日) 02:34:58で最強な手法がレイトバインディングモードVisualBasicを用いた上記デモ
になります。.NET全般に言えることですが、初回起動時の参照DLLマッピング
に時間こそかかりますが、動作中の振る舞いは美しいと思います。HTML中の
スクリプトやWSHスクリプトは単純に全リソースを奪って動作しようとします
ので、すこし負荷のかかるプログラムになるとPCはハング同然の状態となり
ますが、.NETはマルチスレッドを前提に動作していると考えられます。
0754hidebou
2011/01/09(日) 02:57:03ができないCSharpにHTMLインスタンスを公開しても今のところ使いにくいだ
けですので対象としていません。ただIHTMLDocument系のタイプライブラリは
必ずWindows系PCには存在しますので将来はアーリーバインディングでHTMLを
扱えるようにできる可能性はあります。
0755hidebou
2011/01/09(日) 03:17:48では当該分野でのサンプルコードを探すことから始まりますが、CLRをネイテ
ィブから取得し、実際にその後仕事をするというサンプルは皆無です。これは
.NETがやや閉鎖的なために.NETを活用する側とそうでない側との間に溝ができ
ているからだと考えます。.NET側の人間はネイティブなら単純に解決できる問
題のために長大なコードを書く羽目になり、C++プログラマーはそれを横目で
眺めながらも手を貸そうとしないように見えます。
0756hidebou
2011/01/09(日) 03:27:47います。ならば、プログラムを作成することにかかる時間が短ければ短いほ
ど優れた問題解決手法となります。そのために使えるものは骨の髄まで使う
べきです。従来は生産効率とソースの隠蔽度は相反する要素でしたが、HTA
BOXはその概念を打ち破るために生み出されました。
0757hidebou
2011/01/09(日) 23:11:25HTABOX.EXEそのものは単純なモジュールの集積なのですが、ミドルウェアと
して数多くの言語と向き合わなければならないためHTABOX.EXEの作成には広
範な知識が要求されます。まぁ仕事として選んだわけですから自業自得なの
ですが、私の勉強方法を紹介します。
0758hidebou
2011/01/09(日) 23:19:15ゆきます。これはしかたのない事です。ですから何がどこに書いてあるのか
というメタ情報を記憶します。具体的にはMSDN(ローカルPC)を暇があれば眺
めます。これは内容を読む必要は無く最低でもページタイトルを眺めるので
す。例えば.NETの開発言語ドキュメントだけで膨大な量になりますが、とに
かく全ページを開いて、各セクションのボリュームを確認するだけでも意味
があります。
0759hidebou
2011/01/10(月) 04:56:01いるプログラマーがいるかどうかわかりませんが、JScript中に自然な形で
CSharpコードを混在させることができます。hello2.jsでは文字列としてCS
コードが存在しますが、通常のコードとして記述し、JSから呼び出す事が可
能なことに気づきました。これでJScriptからも自然にWIN32APIを呼べます。
0760hidebou
2011/01/10(月) 05:16:37HTMLインスタンス等のネイティブCOMとの連携が自然で、.NET機能も使え
直接CSharpコードを記述することでWIN32APIを呼べる最強の環境です。
今回の研究で苦労した割には結局必要なかったテクニックがあったのですが
最後のどんでん返しでそのテクニックが最も価値あるものになったようです。
実験コードが動くのを見ながら生きていてよかったとつぶやきました。
0761hidebou
2011/01/10(月) 12:18:50います。混在した場合奇異な印象を与えるでしょうし、何より編集しにくい
と考えるからです。将来は他の言語にも#include機能を与えられる可能性は
ありますが、現時点ではJScript.NET固有の特性を利用して実現されています
のでJScript.NETだけをえこひいきしているわけではありません。
0762hidebou
2011/01/10(月) 17:07:49と比べ生成ディスパッチをバイナリデータとして永続化できますから非常に
面白いものになります。開発中はソースコードからコンパイルしてユーティ
リティーオブジェクトを生成させますが、リリース時には当該オブジェクト
を永続化させてEXE内に暗号化して埋め込み、エンジンを起動することなく
機能だけを高速に利用できます。夢じゃないかと頬をつねりたくなります。
0763hidebou
2011/01/10(月) 23:25:43思います。今回の作業を振り返ってみると、マネージC++主体で記述すれば
半分くらいの労力で済んだかも知れません。それほど.NETが必ず存在するこ
とが期待できればプログラミングは楽になるでしょう。ただし、開始地点が
マネージコードであるということはそれだけで攻撃者に情報を与えてしまう
可能性が出ますからアンマネージにこだわった設計を貫きました。
0764hidebou
2011/01/10(月) 23:37:40ブコードEXEは逆コンパイルすると以外に読みやすいものになってしまうので
はないかと考えます。そこにCOMを導入すればオブジェクトは動的なものに
なりますので追跡しにくくなるはずです。その考えの延長としてCLRヘッダを
持たないネイティブEXEからマネージコードを扱った場合さらに追跡しにくい
状態が生まれるのではないかと推測しています。
0765hidebou
2011/01/11(火) 22:28:44探し、発見でなかったイベントをキャッチしてメモリデータ中のDLLアセンブ
リを渡すことに成功しました。これもマネージコード中ならMSDNに書いてある
とおりなのですが、ネイティブからやろうとするとかなりの難問になります。
0766hidebou
2011/01/11(火) 22:37:42周辺DLLアセンブリを無造作に格納する仕様にできます。つまりHTABOX DotNet
はソースコード状態の格納で実行時にJScriptの#includeのような何らかの追加
機能を提供するものであり、DNETBOXは生成アセンブリを暗号格納しファイルを
生成せずに実行するものであるという明確な性格付けができました。
0767hidebou
2011/01/11(火) 22:48:20のバイトストリームからアセンブリインスタンスを生成します。これは周辺
DLLについても同じです。私の知る限り、ファイルが存在しない実行中アセン
ブリのデバッグはネイティブコードと同等の情報しか得られないはずです。
結果として.NET各言語はソースコード隠蔽という観点においてネイティブと
なんら変わらないものとなります。むしろ単純な構造のネイティブEXEよりも
内容を類推しにくいものとなります。
0768hidebou
2011/01/12(水) 11:16:04でのC++コーディングのあるべき姿が見えてきたのでそれを頭の中で整然とした
形に整理したいと思います。具体的なコードというレベルでは何度も書き直し
ができますが、どういうスタイルで書くのかというレベルは取り返しが効かな
い決断になるからです。
0769hidebou
2011/01/12(水) 11:29:05ファイルな訳ですが、.NETの場合アセンブリをソースコードに埋め込んだ方
が開発効率が向上します。勿論バイナリデータをテキストファイル中に記述
すれば破綻しますからBASE64的な手法で文字列化して置く訳です。
この、ソース->アセンブリ->文字列 の変換作業はVisual Studioのマクロに
行わせることができます。マクロ実行環境はVB.NETそのものだからです。
0770hidebou
2011/01/12(水) 18:02:29てコンパイルし、生成アセンブリをエンコードして文字列化しソースコード
へフィードバックする手法は正解のようです。いままでのライブラリをこの形
式で動作させたテストも良好です。これでネイティブEXEから.NET機能を利用
する規格が定まりましたので本格的に実装作業に入れます。
0771hidebou
2011/01/13(木) 21:39:00そこでどんなインターフェースが使われているのかを監視することができま
す。そういった解析を行うとアンドキュメントなインターフェースが沢山う
ごめいている事に気づきます。ただし、各言語におけるclassはアンマネー
ジ空間から単なるIDispatchとして利用可能であるということがわかりました。
0772hidebou
2011/01/13(木) 22:13:01グされるものではありませんから、実在ファイルの形式をとる必要がありま
せん。中空に出現させて利用し消滅させることができます。従来のCOMでも
それは可能ですが、当該COMのソースが無い限りファイルを実在させる必要が
あるように思います。でも.NETは他人様が書いたDLLバイトデータをリソース
として持てばまったく気づかれずにそれを利用できてしまいます。私はソース
が暴露しやすい事よりもこの事実の方が深刻な事態だと考えます。
0773hidebou
2011/01/13(木) 22:19:28したがって、ファイルを逆アセンブルできないばかりではなく、アセンブ
ルバイナリを不正な再利用から保護する意味でも威力を発揮するのではない
かと考えています。
0774hidebou
2011/01/15(土) 00:44:50空間からマネージ空間オブジェクトを操作するという検証を行いましたが、
行ったところでコードが煩雑になる割には軽量化が期待できないという結論
でした。有る程度の仕事をマネージに依頼して結果を受け取る。またその逆
を行う。つまり両者の接点が少なければ少ないほど設計としてシンプルにな
るようです。
0775hidebou
2011/01/15(土) 11:22:14属していますが、これは各オブジェクトについてIDispatchもどきのそっけな
い情報しか出力しません。.NETの世界ではTypeInfoの代替であるTypeを調べ
て実行時に自身で解決しなさいという作りのようです。私の見る限りこの規格
が.NET全体のレスポンスを悪いものにしています。特に同名で引数の違うメソ
ッドを問い合わせるという動作がループ中で無造作に使われた場合、致命的な
遅延を招くはずです。
0776hidebou
2011/01/15(土) 11:38:42ませんが、そうでない場合は何らかの改善策を提示できるのではないかと感
じています。具体的にはC++ネイティブコードからType経由での問い合わせ無
しにアセンブリ中のバイナリを利用できる仕組みです。もしそれが実現できれ
ば.NETに対する評価が根底から変化するのではないかと考えます。
0777hidebou
2011/01/16(日) 00:14:18ttp://kuroda.bglb.jp/htabox/include.zip
作る側としては技術の粋を結集したマジックなんですが、単なるマジックで
レイトバインディングVBのデモの方が実用的という声が聞こえそうな気がし
ないでもありません。
0778hidebou
2011/01/16(日) 00:41:22考え方として単純ですし、インパクトもあるでしょうから単にコンパイル済
アセンブリを隠蔽実行するDNETBOXが本体コアより先行して発表される可能性
が高いです。コアに追加される関数は10に満たないでしょうが、そこにきち
んとした解説を加えるとなるとかなりの作業量になるからです。
0779hidebou
2011/01/16(日) 00:48:47を操作可能なHTABOXドットネットは最も最後に発表されることになると思い
ます。非.NETなPCが現役な状態ではあまり注目されないかも知れませんが、
次世代のHTMLアプリケーションの姿を提言する存在になると思います。
0780hidebou
2011/01/16(日) 01:08:17リプトに低水準な機能を開発者が追加する場合C++でDLLを書く必要がありま
した。HTABOXコアは単純にIDispatch*をExportするDLLで十分ですが、それで
も敷居の高いものであると感じていたのです。それで.NET系からのWIN32API
呼び出しを活用できれば敷居が下がるはずというのが出発点です。
0781hidebou
2011/01/16(日) 01:22:11ることはCLRヘッダを持つ従順な.NETプログラムでは不可能という直感から
ネイティブEXE内での独自CLRエンジンを開発することとなりました。このエ
ンジンの特徴はファイル実体を持たないアセンブリインスタンスを実行可能
にすることで静的なアセンブリファイルを対象とした逆コンパイルツールを
無力化します。
0782hidebou
2011/01/16(日) 01:34:50せる手法、逆にエンジン内のCLR環境インスタンスをネイティブ空間へ引きず
り出す手法を確立しました。これにより.NET用のアセンブリでもHTABOX経由
でHTMLインスタンスを認識できますし、HTML側からの要求もアセンブリへ到
達します。
0783hidebou
2011/01/16(日) 01:51:50ードの実行時コンパイルの方が適しています。.NET系のコンパイルとは中間
言語へのコンパイルでしかありませんのでマシン語を生成するほどの時間は
要しません。.NET系のコンパイルはいわばスクリプトのパースのようなもの
です。ならば、WSHのようにスクリプトとして扱うという発想が生まれました。
0784hidebou
2011/01/16(日) 01:59:17これらの機能はHTABOXコアへ関数を追加することで実現されていますから
自動的にHTABOXコア、HTABOXクイックも.NET機能を持つことになります。
0785hidebou
2011/01/16(日) 11:24:15するわけですが、それをここで自問自答させていただくことで非常に効果的
なウォールトークができています。結局、手探りで未知の分野のプログラム
を完成させるためには、どれだけ多角的に物事を捉えられるかが勝負です。
変な表現かも知れませんが、不可能だと結論した自分の愚かしさに気づくこ
とでしか可能なプログラムを書くことはできません。日常の中でそういった
気づきを促すことは困難なのですが、ここに書き込んだ自分の言葉を自分で
読み返すことでそれが実現できています。
0786hidebou
2011/01/17(月) 00:47:01自身のプロセスを認識するようです。あとはクイックのソースを参考にアセ
ンブリがドロップされた場合のオプション設定GUIを書くだけとなりました。
DNETBOXはアセンブリをそのまま暗号格納し復号して実行します。同時に格納
したDLLも同様に暗号格納され復号して実行インスタンスからの参照へ動的に
対応します。格納できるアセンブリ等のファイルに量的制約はありません。
さらに、実行CLRバージョンを指定し希望するバージョンが得られない場合穏
やかに終了することも可能になります。HTABOXはHTMLアプリケーションに興味
がない方には存在さえ知られていないでしょうが、DNETBOXは全Windowsプログ
ラマーにとって無視できない存在となるはずです。
0787hidebou
2011/01/17(月) 21:35:51ス格納すればDNETBOXができあがります。実際に作業してみると単にQuick用
スクリプトの余計な部分を削除するという作業なのですが、C++ばかり1ヶ月
も眺めてきたので頭がHTML&JScriptに切り替わるまで時間がかかります。
HTMLはそのデザインだけで飯を食ってるプロがいるわけですから奥の深いも
のですが、今のところデザインまで気を使う余裕が無いものですからそっけ
ないHTMLを書いてしまいます。いつかもっとクールな外観のHTMLを書いてみ
たいものです。
0788hidebou
2011/01/18(火) 22:49:05います。ActiveScriptSiteはHTMLインスタンスとは違い軽量なインスタンス
ですから異なる言語の複数のインスタンスが稼動したとしてもストレスには
なりません。ただしActiveScriptSiteにはパース結果をバイナリとして保存
する機能はありませんから、利用初期にソースをパースする必要があります。
.NETが生成するアセンブリとはスクリプトパース結果の永続化と捉えること
ができます。もはやソースはコメントとして保存しパース結果であるバイナ
リを何らかの形でEXEに保持して高速に機能を利用することができるのです。
0789hidebou
2011/01/18(火) 23:35:25ロード部とメッセージプロシージャだけをC++で書いて他の部分を.NETコード
で記述し、永続化したアセンブリ生成結果をEXEから利用することになるだろ
うと思います。そうした場合の生産性の高さ、バグの少なさはピュアなC++
コーディングの比ではありません。
0790hidebou
2011/01/22(土) 00:40:22すが、なかなか細かな問題に遭遇して思うような成果を挙げるには至りませ
んでした。要は想定される.NETジョブがMscorlib.dllのみを使う軽量なもの
である場合、初回起動時のシステムDLLキャッシュにかかる時間を短いものに
したいという目的なのですが、今後の宿題にして製品のリリースに集中した
いと思います。
0791hidebou
2011/01/24(月) 04:05:15すが、今のところ世間様の評価はさっぱりです。4年の労力はほぼ3000万円に
匹敵しますので、それだけ投資してほとんど回収できていないというざまな
わけです。サンデープログラマーの頃はちょっと人が真似できないことを実現
すれば十分食える気でいたのですが、そうではないという事を知るためにこれ
だけの時間と、労力が必要だったのかと自分を責めたくなります。
0792hidebou
2011/01/24(月) 09:41:00います。目が覚めれば「さぁ続きを書こう」という気持ちだけが私を肯定し
ます。ふんわりと積もった新雪がすべての物の形をまるく変えて綺麗です。
0793hidebou
2011/01/24(月) 17:42:39EXEファイル内に格納され、EXEアセンブリ実行時にDLLへの参照が発生した場
合HTABOXはその参照を仲介します。この動作はDLL側からEXEへの参照が発生し
た場合も同じく機能します。DNETBOXの動作においてHTABOXコアが持つ大半の
機能は必要が無いためこの目的に特化したコンパクトなコアを書く予定です。
そのC++ソースは暗号モジュールやHTML生成モジュールが含まれないものとし、
希望する個人やソフトハウスへお譲りできる状態にしたいと考えます。
0794hidebou
2011/01/26(水) 00:45:47すこし実用的なコードを書いて格納するともうちょっと手直しすべき点があ
るようです。勿論、得るものがあれば失うものもあるわけで、実ファイルを
隠した状態で乗り越えられない壁がなにかしら存在しても不思議ではありま
せん。
0795hidebou
2011/01/26(水) 15:49:10のように動的にウインドウ全体を書き換えるという動作には向いてないでしょ
うが、各種コントロールをドラッグしてそれに対するイベント処理関数を書く
という「GUI付スクリプト」と捉えればなかなか便利な手法なのかもしれない
と思います。とりあえずスタンドアロンなEXEとしてDNETBOXβを今日中に公開
したいと考えます。サーバーに依存しない状態となりますので試用版としての
格納数量制限が付加されることをご了承ください。
0796hidebou
2011/01/27(木) 23:52:12ttp://kuroda.bglb.jp/htabox/dnetbox.zip
全くのスタンドアロンEXEですのでインターネット未接続環境でも動作します。
アセンブリを生成する環境で使用されることから1.1以上の.NETが必要です。
一旦格納されたアセンブリは逆コンパイルできません。アセンブリ以外のファ
イルを格納することはできません。リソースはアセンブリに格納した後に当該
BOXへ格納されるべきとの判断からです。
0797hidebou
2011/01/28(金) 00:18:27眺めるとこれといって私だからできるという部分は無いのですが、総合的な
ネイティブCOMとマネージオブジェクトの連携をテーマにしたサンプルはこの
世に皆無ですので思いのほか時間がかかってしまいました。任意なCLRバージ
ョンの選択とか、きちんとファイルダイアログを出して対象アセンブリを選択
するとか、製品化までに整備しなければならない課題も多いのですが、とりあ
えずお見せできる段階に漕ぎ着けたことをご報告します。
0798hidebou
2011/01/28(金) 22:46:32起動時の引数とかウインドウへのドロップとかはアナーキーな手法なので普通
にメニューからアセンブリを選択する操作をメインにする予定です。
ttp://kuroda.bglb.jp/htabox/dnetbox.png
0799hidebou
2011/01/29(土) 22:34:22ヘルプファイルの整備はまだですが、機能的には当初の予定をすべて網羅
しています。このツールのキャッチは「ネイティブEXEコンバーター」と
いうことになるでしょうか。
ttp://kuroda.bglb.jp/htabox/dnetbox.zip
0800hidebou
2011/01/29(土) 23:00:57の主要な部分はVB.NETで書かれています。VB.NETからネイティブPE形式への
リソース格納は.NETインスタンスへネイティブCOMを公開する手法で実現して
います。今回のプロジェクトで目には見えないのですがVS2003はC++ソース内
にIDLを記述できることからIDLでインターフェースを記述し継承クラスでデ
ィスパッチを形成しています。つまりEXE内にタイプライブラリが存在します。
0801hidebou
2011/01/29(土) 23:12:02にコードヘルパーで関数名と引数を表示させるための実験として取り組んで
みました。従来の動的TypeInfo形成はタイプライブラリを必要としないので
自身で使う分には軽量で素敵なのですが、関数が増えてくるとそれを説明する
手間が必要になりますのでタイプライブラリは便利な道具になると思います。
0802hidebou
2011/01/30(日) 00:13:38ttp://kuroda.bglb.jp/htabox/dnetbox.zip
希望CLRが取得できない場合の停止動作を訂正しました。
0803hidebou
2011/01/30(日) 01:32:24操作でアプリケーションを作れるように工夫されていると感じました。VBだ
けというのも寂しいのでヘルプにはお家芸のHTMLウインドウを表示させてみ
たのですが、GUIのレスポンスはHTMLの方がクイッキーですね。どうも.NETは
ラジオボタン一つの操作でもどんよりした動きなように感じます。特に動的
に必要とされるDLLを読みに行くと思われるタイムラグはCLRのバージョンが
あがる度にDLLが大きくなるはずですからより顕著になると予測します。
0804hidebou
2011/01/30(日) 01:44:41ションの方を選択します。スタティックなコントロールが数多く存在しなけれ
ばならないような局面で.NET系のフォームエディタは便利ですが、やはりプロ
ジェクトが大きくなった時に万が一自動生成コードがクラッシュしたら...
を考えるとコントロールやその動作関数をより自由に設計、管理できるHTML
の方に安心感を覚えます。
0805hidebou
2011/01/30(日) 16:30:04ttp://kuroda.bglb.jp/htabox/dnetbox.zip
日本語ヘルプを書きました。メニューからご覧になれます。
0806hidebou
2011/01/31(月) 11:19:05ますから、アマチュアプログラマーにはあまり縁が無い製品になると思いま
す。.NETを使いながら自社のノウハウを隠蔽したいソフトハウスがメインの
ターゲットです。ですから試用版でないD-NETBOXは希望のアイコンを埋め込
んだオリジナルビルドの形で納入されるというシナリオを考えています。
0807hidebou
2011/01/31(月) 11:42:05提供することが可能だと思います。例えば現状のFormベースのGUIではなく
HTMLベースのアプリケーションウインドウを提供することです。JSとVBにつ
いては現状でもHTMLインスタンスを使うデモに成功していますが、C#のアー
リーバインディングにも対応した形で提供できれば使いやすいものになるで
しょう。そのために今回確立したタイプライブラリ生成、管理のテクニック
が重要な意味を持つと考えています。
0808hidebou
2011/01/31(月) 17:20:03ttp://kuroda.bglb.jp/d-net/index.htm
以降D-NETBOX試用版のダウンロードアドレスは
ttp://kuroda.bglb.jp/d-net/dnetbox.zip
となります。
0809hidebou
2011/01/31(月) 17:37:52D-NETBOXオリジナルビルド 50k
Microsoft Visual Studioプロジェクト(非C++向け)100k
Microsoft Visual Studioプロジェクト(D-NETBOX)500k
プロジェクトはやや高額ですが、それぞれ1週間、1ヶ月の賃金に相当する額
としました。その期間で当該テーマに対する具体的なコードか書けるかを考
えれば妥当な金額ではないと考えています。
0810hidebou
2011/01/31(月) 17:40:43×妥当な金額ではないと考えています。
○妥当な金額ではないかと考えています。
0811hidebou
2011/01/31(月) 19:28:35「プログラムって誰のもの?」というテーマに向けたものになってます。
簡単に書ける->言語のCOM化->書いたことが見える->プログラマーの使い捨て
という流れを断ち切りたいのです。プログラムを書くということはクリエイ
ティブな作業です。人格の発露と表現してもいいくらいです。ソースを提示
した契約でないかぎりソースは隠されるべきです。ソースが生み出す便宜や
利益はそれを書くことに汗した人間に還元されるべきです。
0812hidebou
2011/02/01(火) 11:23:58ベクター等へアップするためReadMeとサンプルアセンブリを見直しました。
ttp://kuroda.bglb.jp/d-net/dnetbox.zip
0813hidebou
2011/02/01(火) 12:39:46状況ですが、とにかく脱兎のごとく動いて結論を出さなければなりません。
作業対象をHTABOXコア2.50、HTABOXクイック1.50に変更します。.NET系機能
については欲張るときりが無いので基本的な機能に絞った実装になると思い
ます。
0814hidebou
2011/02/01(火) 13:16:39時のGUIもクイックと同等なファイル一覧表示にしたいと考えます。その作業
後にHTABOXコアの格納エンコーダー使用にはアカウントが必要な状態に移行
する予定です。前にもお話しましたが、その際にはこの掲示板に敬意を表し
てオフィシャルアカウントが取得できる期間を設けたいと思います。
0815hidebou
2011/02/01(火) 23:56:20http://kuroda.bglb.jp/d-net/Heading1/Page0004.htm
ネイティブとマネージが交差する関数を象徴的に冒頭で宣言してみました。
0816hidebou
2011/02/03(木) 10:26:23後方へ移動しますので815のページURLも移動します。ただし、プロジェク
ト公開は当面、日本語を理解できるお客様に限定しようと考えています。
0817hidebou
2011/02/04(金) 15:31:21したかったのですが、インテリセンスはDLLでなければ機能しないように感じ
ます。そういえばMSEでMSWORDやEXCELのインテリセンスが効いている状態を
見たことがありませんから、これは仕様なのかも知れません。
0818hidebou
2011/02/05(土) 17:04:47ttp://kuroda.bglb.jp/d-net/TypeLibDll.zip
実装メソッドは2つ
HRESULT About();
HRESULT ShowHTMLDialog([in]BSTR url, [in,optional]VARIANT arg, [in,optional]BSTR opt, [out,retval]VARIANT *re);
ShowHTMLDialogはモーダルダイアログを表示しwindow.returnValueを返却します。
WSH主体なんだけど、ちょっとだけGUIが必要という場合なんかに便利かも知れません。
0819hidebou
2011/02/05(土) 17:23:39ますのでIDLを使用せずTypeInfoを生成しているのですが、VC7以降はソース
にIDLが書けますので、積極的に活用しようと思います。IDLの場合[optional]
の一言で省略可能引数を表現できるのは大変素敵なことです。
0820hidebou
2011/02/05(土) 18:38:04実害はありませんが、818の引数optはVARIANTにするのが正式なようです。
The [optional] attribute is valid only if the parameter is of type VARIANT or VARIANT *.
0821hidebou
2011/02/06(日) 00:28:11を更新しました。サンプルのtest.jsがあまりに醜かったものですから改良
しました。JScriptコード中にHTML文字列を書くたびに歯がゆい思いをする
のですが、Cのマクロ風に行末\で文字列連結できることに初めて気づきまし
た。
0822hidebou
2011/02/06(日) 05:05:14を更新しました。もうこの習作に機能を追加する予定はありませんが、モード
レスダイアログも表示可能としました。モードレスは当然ながら待機関数を呼
ばないと即座に終了します。実装関数は4つ
HRESULT About();
HRESULT showModalDialog([in]BSTR url, [in,optional]VARIANT arg, [in,optional]VARIANT opt, [out,retval]VARIANT *re);
HRESULT showModelessDialog([in]BSTR url, [in,optional]VARIANT arg, [in,optional]VARIANT opt, [out,retval]VARIANT *re);
HRESULT WiteForHtmlDocument([in]IDispatch *doc);
0823hidebou
2011/02/06(日) 05:25:25存在ですが、.NET言語から利用すると素敵な存在になるだろうと思います。
JScript.NETとこのDLLで稼働中のサーバーでも安心して動作できる管理ス
クリプトを書くことができると思います。
0824hidebou
2011/02/07(月) 02:10:23ました。こうしてまがりなりにも仕事として腰をすえた検証が行えるので
一日でけりがつきますが、何か本業を持ちながらだと確実に1週間はかかるで
しょうね。自分自身そうでしたが、休日だけ考えるというペースで到達でき
るレベルというのは限界があります。
0825hidebou
2011/02/07(月) 17:33:04について検証してみました。結果として私のように低層のコードを書きたい人
種にとって<atlbase.h>をインクルードすることはストレス以外の何ものでも
ないという結論です。その名のとおりテンプレートライブラリですのでちょっ
とでもシナリオから外れると訳わかんない世界に突入します。
0826hidebou
2011/02/09(水) 03:58:2216*16のビットパターンを取得し、更に回転して1px描画しなければならなか
った事を思い出しました。結局人間は相対的に物事を判断します。車での移
動が当たり前だと思えば歩くことは苦痛になります。逆に地べたをはった経
験があれば同じ事が楽しいことに感じられます。そういう意味で今の子達は
かわいそうです。
0827hidebou
2011/02/10(木) 14:51:35高速に処理できる反面、CPUは書かれたコードを正しいものとして実行する
ことからバグの無いコードに到達する前にくじけてしまうことになりかねま
せん。私のコンテンツのポリシーはなぜそうなるのかを自分の目で確認でき
る土台のコーディングからスタートします。最終的にCOMプログラミングに
よって従来のGUIをHTMLで置き換える手法へ誘導します。
0828hidebou
2011/02/10(木) 15:01:58いますが、趣味としてプログラミングを捉えた場合全く逆の事が言えます。
少ないピースのジグソーパズルは確かに簡単ですが、完成の満足感は小さい
ですし、他人に見せたいとも思わないでしょう。色の変化が少なくピースが
多いジグソーパズルをわざわざ高いお金を出して買うのはなぜでしょう。
C++によるWIN32APIプログラミングは最も高級なジグソーパズルです。
0829hidebou
2011/02/15(火) 11:21:38HTMLウインドウを活用したWIN32アプリケーションの書き方というテーマで
「一度はC++をかじったけれど魅力を感じなかった」という方をターゲット
にしています。お時間がありましたら是非ご覧ください。
http://kuroda.bglb.jp/vcpp/index.htm
0830hidebou
2011/02/17(木) 00:46:34対症療法的記述があるものですからタイプライブラリ手法へ変更する機会に
すべてをクリアな状態にしたいと思います。この書き換えが成功した場合
HTABOXコアは3.00を呼称する予定です。従来は親子関係にあるCOMオブジェ
クトが相互を握る形式だったのですが、やや考えすぎていた感がありますの
で、シンプルで軽量な方向に変更されます。
0831デフォルトの名無しさん
2011/02/17(木) 17:59:17メニュー生成に変更してくださったらありがたいなぁ…って思ったり。
menuで実害はないんですが、私が書くhtmlやcssではmenuを頻繁に使うので……
0832hidebou
2011/02/17(木) 23:05:16名前は直感的すぎると衝突するんですよね。私もあまりに直感的すぎて邪魔
をする場合もあるんじゃないかと感じていました。対策を考えます。
ご意見ありがとうございました。
0833デフォルトの名無しさん
2011/02/18(金) 13:39:22フリーランスの上杉です。え〜、スクリプトを使い始めた素人さんたちが、
HTABOXコアでツールを作ろうとする場合、
デバッグ作業のお勧めの方法論、環境構築術はありますか?
お勧めのエディタ、よく使うマクロなどについてどうお考えでしょうか?
0834hidebou
2011/02/18(金) 19:37:59スクリプトのデバッグ環境はofficeに付属するMSE(Microsoft Script Editor)
を強くお勧めします。
http://www5a.biglobe.ne.jp/~javajava/ari/
にMSEの使い方についてのポイント公開しています。勿論Visual Studio
は最も強力ですが、機能が多すぎて混乱する場合があると思います。
0835hidebou
2011/02/18(金) 19:52:40そのままMSEを起動してスクリプトを編集するというのが最強の環境だと
思います。現状ではFrontPageを入手するのが困難ですが、Wordでも似た
ような事は行えるはずです。HTABOXの場合HTMLエンジンはIEと決まってい
ますからブラウザ互換を気にした通常のHTML作成環境ではなしに思いっきり
IE固有の機能を使うという発想が面白いものを作るポイントとなります。
0836hidebou
2011/02/18(金) 21:00:20(office付属の英文HTML解説)を即座に参照できるようディスクトップに
ショートカットを置きます。やっていることが広範囲なわりに私の頭はそ
の場限りの容量しか無いものですから参照すべき情報というのがとても重
要になります。
0837デフォルトの名無しさん
2011/02/18(金) 21:58:56コーダーやってるといつもIEに悩まされるという印象があるからね。
でも、Firefox、Chrome、Safari、Operaにも対応するという暗黙の前提があるから
気が滅入るだけの話だった。そうだ、IEだけに対応すればいいんじゃん。
他のレンダリングエンジンは考慮しなくていいんだ。
>>835の通りで、あとはいかにIEの機能を引き出すかが勝負。
今までとは違う発想が求められる。HTABOXコアは、新しいオモチャになりそうだ。
0838193
2011/02/18(金) 22:37:15何しろ、まずは何から覚えたら良いのかさえ判らない状態です。
学生時代に教育用言語とアルゴリズムは習ったので、
何かとっかかりさえあれば始められそうなのですが・・・
0839193
2011/02/18(金) 22:58:50ヒントが見つかったらここに残し、これから始めの一歩を踏み出す人へのヒントにしたいと思います。
(掲示板に残そうとしたのですが、いつの間にか無くなっていたんですね)
0840hidebou
2011/02/19(土) 01:49:09自分の興味がある分野に関連付けるという事がポイントになります。勉強と
いう目的で何かを眺めても楽しく無いですからね。一番手っ取り早いのは、
いつもコンピューターを触っていて「これめんどくさい」という操作を自動
化するというテーマはどうでしょう?きっとそのツールはみんなが喜ぶもの
になると思います。
まもなく2回目のサーバー入れ替えを行いWindows2003にする時点で掲示板も
整備したいと考えます。ここは自由に消せないというガバナーが効いた状態
ですので、もっと気軽に話しあえる場にできればと考えています。
0841hidebou
2011/02/19(土) 02:01:50決定していませんが、HTABOX.EXEと同等の機能を持つHTABOX.DLLを添付でき
そうです。HTABOX.DLLはActiveXObjectしたオブジェクトの関数についてイン
テリセンスを表示しますので、いちいち関数の解説を見なくても使えるもの
になるはずです。今回の作業はDLLを主体にTypeLibでディスパッチ群を構築
し、そのコードをアウトプロセスサーバーのEXEで利用できる妥協点を見出す
ことでした。
0842hidebou
2011/02/19(土) 02:20:37イルできる事をガイドラインにソースを見直しました。あとは具体的なコー
ドを移植するだけですので1日か2日で3.00βをお見せできると思います。
0843hidebou
2011/02/19(土) 03:04:05なくて、VML命令で余計なファイル無しに画像を表示してこそIEのメリットが
あるわけです。VMLはワード等でお気軽に自動生成できるわけですから積極的
に使うべきだと思います。
0844デフォルトの名無しさん
2011/02/19(土) 03:05:44まずは定番の電卓、つぎはキッチンタイマー、そしてつぎは2chの保守ツールですね。わかります。
0845hidebou
2011/02/19(土) 10:29:30カーブとかの表示を行う機能があって関心したものです。IEはVMLで自由に
グラフィック書けますから、方程式の解をグラフィック表示で見せてくれる
ツールなんかは素敵かも知れません。
0846hidebou
2011/02/19(土) 13:36:08を持たせるのも面白いと思います。従来のSC1.0に加えJS.NET、VB.NETをパー
スしてモジュールとして保持でき、JS、VBSからコールでき、逆もできる。
別な言い方をすればHTABOXが提供するHTMLウインドウ生成ディスパッチと
アンマネージスクリプト、マネージスクリプトの3者がシームレスに呼び出し
合える環境を提示して、使い方は自由という緩い規則にすればもっと沢山の
方がHTABOXを利用してくれるかも知れません。勿論なんらかの収益が出なけ
れば開発を維持できませんのでEXE化はサーバーサイドで実行という案です。
0847デフォルトの名無しさん
2011/02/19(土) 19:36:07ただでHTMLのレイアウトを作るならポータブルでも動くOpenOfficeのワープロでも出来るよ。
グリッドに沿わせて大雑把にボタンの位置をそろえたり、グループ化とかもできる。単位にピクセルは使えないけど。
素の設定のままだと、文字やボタン等の名前と位置だけがHTMLに出力される。
で、いま改めていじって見たら、ボタンへのイベント用ダイアログに設定した項目も出力された。
ただそのままじゃ使えなさそうな文字列なので、エディタでいじらないと使えそうもないが・・・。
やり方は、OOOのメニューのツール。その中のオプションでエキスポートのところをIEを選んで、OpenOfficeBasicにチェック入れて、HTMLで保存するだけ。
すると、出力されたHTMLに、ボタンへのキーやマウスへのイベントに自分で設定した関数の文字列らしきものまで出力される。
何もないよりは目安にはなると思うんで、あとは自分で直せばいけそう。
0848デフォルトの名無しさん
2011/02/19(土) 20:25:06.85……まあ自分はVBScriptしか書けないんですけど
J-Scriptor
ttp://www.pololon.com/koby/software.php?id=J-Scriptor
> 概要
> WYSIWYG式エディターとJavaScriptコード補完機能を備えたソースエディターを併用することで、
> 効率的にDynamicHTML文書を作成することができるソフトです。
> WYSIWYG式エディター画面ではマウス動作で選択されたタグの属性を一覧表示で確認することができ、
> 属性値の変更も即座に反映されるため、初心者のHTMLの学習にも最適です。
> JavaScript専用のコード補完機能を備えたソース編集画面では、
> オブジェクトの入力と連動してメンバの候補がポップアップ表示されるため、
> 効率的にコーディングを行うことができます。
> おもな特徴
> WYSIWYG式エディター搭載
> コード補完(Code Completion)機能
> DOM構造ツリー表示機能
> スタイルシート対応
> OfficeXPスタイル
0849hidebou
2011/02/20(日) 00:06:48.18使えば、いろんなアイディアに触れることもできますし、情報をいただけれ
ば参考になさる方もいらっしゃると思います。
今日はHTABOXコア3.00の.NETスクリプトエンジンを再設計しました。引数と
して言語を渡された場合JS、VBが切り替わるコンパクトなクラスになりまし
た。HTABOXインスタンスも自動的に参照可能としますが、アプリケーション
の開始起点はHTABOXコアの場合WSHと決めた方が混乱しないという方向で考
えています。HTABOXコアにおける.NETの位置づけは「WIN32でDLL書くよりは
.NETでWSHやHTMLスクリプトの機能を拡張したい」にとどめ、.NETを開始起点
としたHTMLアプリケーションは別ものでないと、私自身が混乱してしまうから
です。
0850hidebou
2011/02/20(日) 00:20:04.68WSHからJS.NET又はVB.NETコードをスクリプトエンジンでパースしてWSHから
利用することができます。また、既存アセンブリファイルをLoadしてWSHから
利用することができます。したがって間接的にHTML、WSHから全.NET機能を
利用することができます。取得する.NETのバージョンは今のところシステム
が返すデフォルトバージョンにしたいと考えています。
0851hidebou
2011/02/20(日) 04:12:33.81を行いましたが、予定通りの機能を実現できそうです。ただしWSHから直接
Unwrapしたオブジェクトを操作しようとするとさすがに怒られます。HTABOX
はマネージ空間側に任意なモジュールを動的に作成できますので、結果を返
してくれる関数をパースしてマネージ空間で仕事をさせ、結果を取得すると
いうごく当たり前な姿勢で開発すればまったく問題とならないでしょう。
0852hidebou
2011/02/21(月) 00:29:59.66ttp://kuroda.bglb.jp/htabox/htabox3.zip
HTML中のJScriptからJS.NETをVBScript中からVB.NETを利用するサンプルと
なっています。
0853hidebou
2011/02/21(月) 00:38:13.72WIN32.JSParse(js, "Root", "System.Windows.Forms.dll");
第1引数は.NETソースコード、第2引数はルート名前空間名、第3引数は参照DLL
で複数存在する場合はカンマ(,)で区切ってください。コンパイルエラーな
場合はエラー箇所をダイアログで表示します。返却値は生成されたアセンブリ
です。MSE等のデバッガで返却オブジェクトを見るとAssemblyのプロパティー
をすべて持っていることを確認できると思います。
0854hidebou
2011/02/21(月) 00:46:56.47扱う事ができます。
var Dispatch = Assembly.CreateInstance("Root.Dialog");
のCreateInstance関数は私が書いたわけではなくSystem.Reflection.Assembly
のメソッドです。インスタンス化したクラスのメソッドは通常の関数と同じよ
うに呼び出すことができます。
var Files = Dispatch.OpenFile();
0855hidebou
2011/02/21(月) 01:15:00.14WIN32.JSParseは同じですが、アセンブリに対してTypeを問い合わせます。
var Type = Assembly.GetType_2("Root.Dialog");
このTypeの静的要素を呼び出す関数がInvokeMember_3なのですが、引数が多い
のとSAFEARRAYを生成する必要があるのでヘルパー関数を用意しました。
WIN32.TypeInvoke(Type, "test", 256);
TypeInvoke関数は第3引数に呼び出しフラグ(BindingFlags)を取り、その後
10個までの引数を処理できます。上記例はBindingFlags_InvokeMethod(256)
で引数が全くないtest関数呼び出しの例です。
0856hidebou
2011/02/21(月) 01:27:43.18でラップしたクラスを生成しそのメソッドを呼び出して間接的に結果を得よう
とするものです。この「間接的」なことが重要で、結果的にマーシャリング周
りのことを全く考慮する必要がなくソースを書くことができます。
悪戯好きな方は生のマネージオブジェクトを引きずり出すコードを書いていろ
いろ試してください。私の言っていることの意味が理解できるはずです。
0857hidebou
2011/02/21(月) 01:57:07.94ttp://kuroda.bglb.jp/htabox/htabox3.zip
を更新しました。コンパイルエラーダイアログの文字化けを修正しました。
0858hidebou
2011/02/21(月) 02:09:56.94可能な2つの文字列引数を持たせることで対応したいと考えています。
WIN32.BuildMenu("HTABOX_MENU", "HTABOX_POPUP");等とすることで既存の
IDとの衝突を防ぐことができるはずです。ただし、自動的にBuildMenuが呼ば
れるQuickに関しては引数が省略されたものとみなし従来どおりの処理にした
いと考えています。今回からインターフェースをIDLで記述していますので
いままで不可能だった柔軟な引数のへの対応が可能となりました。
0859hidebou
2011/02/21(月) 04:40:28.99ttp://kuroda.bglb.jp/htabox/htabox3.zip
プロセスが残留する場合があるのでアルゴリズムを変更しました。
0860hidebou
2011/02/21(月) 04:54:39.76ttp://kuroda.bglb.jp/htabox/htabox3.zip
起動時にウインドウが非アクティブになる場合があるので修正しました。
0861hidebou
2011/02/21(月) 12:42:00.49結果として返されるマネージオブジェクトはWSHからも操作可能です。デモの
EXEをレジストリ登録すると下記のスクリプトが動作します。
var InvokeMethod = 0x100;
var WIN32 = new ActiveXObject("SAMPLE_EXE.CMother");
var Domain = WIN32.CUtil.CurrentDomain();
var COR = Domain.Load_2("Mscorlib.dll");
var File = COR.GetType_2("System.IO.File");
var Stream = WIN32.TypeInvoke(File, "OpenRead",InvokeMethod, WScript.ScriptFullName);
var Byte = Stream.ReadByte();
WScript.Echo(Byte);
0862hidebou
2011/02/21(月) 12:51:58.51で自身スクリプトの先頭バイトをバイナリー読み込みしてその値を表示する
ものです。この場合は単純な数値ですのでそのまま表示可能ですが、Byte配列
等をJScriptやVBScriptの配列に変換するヘルパーが必要だろうと考えています。
0863hidebou
2011/02/21(月) 15:31:20.79ttp://kuroda.bglb.jp/htabox/htabox3.zip
HTAウインドウ生成後のディスパッチ注入、EXE終了に関する微調整を行いました。
0864hidebou
2011/02/21(月) 17:26:20.20バージョンの違いからか例外が発生します。できるだけ歩み寄ってみますが
場合によってはWindows2000を動作対象から外す可能性もあります。
0865hidebou
2011/02/21(月) 17:52:42.25原因は実験機のWindows2000が不安定だっただけのようです。
0866hidebou
2011/02/21(月) 21:14:48.19ttp://kuroda.bglb.jp/htabox/htabox3.zip
Windows2000、2003での動作を確認しました。甘い書き方をしていたので
Windows2000にその部分を指摘されてしまったというのが真相のようです。
0867hidebou
2011/02/22(火) 01:29:22.53ttp://kuroda.bglb.jp/htabox/htabox3.zip
メニュー及びポップアップメニューを実装しました。デモに双方のIDを指定
するサンプルを追加しました。このデモ用HTMLを見ていただけるとわかりま
すが、起動JSからCreateHtaWindowでHTMLが生成される場合、</head>直後に
<script language="jscript">
var WIN32 = showModalDialog('about:blank',null,'dialogHeight:0px;dialogWidth:0px;unadorned:yes');
</script>
と記述するだけでWIN32が取得できるものとしています。格納を想定する場合
#defineで打ち消す必要がありますが、自分用ツールの場合はこの記述で冒頭
からWIN32が有効となります。HTABOXはHTA起動直後に大きさ0の子ウインドウ
が存在した場合その返却値としてWIN32オブジェクトを返します。
0868hidebou
2011/02/22(火) 01:50:43.83「格納を想定する場合 #defineで打ち消す必要がありますが」はミスです。
この手法は格納時にも有効です。事実Quickは格納時にこの手法でWIN32を
取得し、システム側のJSからBuildMenu();を実行することでメニューを生
成しています。そろそろ50歳ですから物忘れが激しくなってきました。
0869hidebou
2011/02/22(火) 08:29:48.22います。TreeViewは通常ランタイムみたいなCOM経由で使うらしいのですが、
HTABOXはメニューがそうであるようにピュアWIN32APIの軽量なコントロール
になる予定です。単純に<ul ID="TREE">内のli,ul階層を処理できればと考
えています。イメージリストについては適当な大きさに限定するかも知れま
せん。
0870デフォルトの名無しさん
2011/02/22(火) 15:25:39.400871デフォルトの名無しさん
2011/02/22(火) 19:54:57.25やっぱりHTABOX_TREEとかにしたほうがよさそう。
0872デフォルトの名無しさん
2011/02/22(火) 19:57:36.890873hidebou
2011/02/23(水) 01:57:45.83勿論HTABOXコアからのHTML生成ならメニューのように任意なIDを選択すること
ができます。例え少数のご意見だとしても、方向を変えるのではなく選択肢を
増やすという解決策が取れるのであれば総て受け入れて改良したいと考えてい
ます。IDを縛るのは私自身も気にしていた部分ですので今後追加されるすべて
のコントロールは任意なIDを選べる関数で認識される予定です。
0874hidebou
2011/02/23(水) 02:06:05.84ールされても破綻しない処理というのにちょっと手間取りましたが、予定ど
おりのものになりそうです。このコモンコントロール操作手法が確立すれば
ツールバーやリストビュー、タブコントロール、プロパティーシートについ
ても短時間で対応できるものと考えています。
0875hidebou
2011/02/24(木) 02:50:57.32ttp://kuroda.bglb.jp/htabox/htabox3.zip
TreeViewデモを追加しました。まだ仕様として煮詰まっていないので画像は
COM登録されたEXEを起点に検索しています。たぶんHTMLに従属的ActiveXでは
ない形でツリービューを乗せたのは私が初めてなんじゃないかと思いますが、
上に乗っているのはCreateWindowEx(WS_EX_CLIENTEDGE, WC_TREEVIEW....
で生成された本物ですのでこれ以上クイッキーにはできないほど軽量です。
0876hidebou
2011/02/24(木) 03:03:58.88メニュー用TABLEとは違いvisibility="hidden"な状態としています。これに
よりウインドウサイズが変動して基準となるULが動いても自動的に追従して
表示されます。ただあくまでも別ウインドウですからページウインドウを
意地悪く縮小させた場合の処理にもう一工夫必要なのかなぁーとも感じてい
ます。現状はページウインドウのスクロールバー描画を阻害しないように自身
ツリービューのウインドウサイズを縮小させる選択をしています。
0877hidebou
2011/02/24(木) 03:26:51.04ツリービューコントロールを目次にして書籍のように文字や、画像や、音楽
を楽しめるコンテンツを作って販売するなんていうのもいいんじゃないかと
思います。プログラミングという言葉にアレルギーを持つような方でもこれ
なら使えそうだと思っていただけるものにしてゆきたいと思っています。
0878hidebou
2011/02/24(木) 05:46:54.38にしてもListにしてもできるだけシンプルに宣言できることを主眼とします
ので、ドラッグドロップとか、要素の直接編集とかは今のところ守備範囲に
入っていません。ただListViewの場合、ネイティブコードレベルでの高速な
ソートが魅力でしょうから、それは是非実現したいと思います。
0879hidebou
2011/02/24(木) 15:30:45.21ttp://kuroda.bglb.jp/htabox/htabox3.zip
TreeViewのラベル認識部分を改良し各タグの#textだけでラベルを形成できる
ようになりました。
0880hidebou
2011/02/24(木) 15:50:24.73れ動作中の追加、変更をサポートしていませんが、リストビューの場合動作
途中での生成、更新に対応したいと思います。HTMLとは異次元な速度のソート
表示を目的としますので通常はHTMLデータとは切り離されていなければなり
ませんが、必要に応じてベースとなるTableタグとの同期をとるメソッドも
必要になるだろうと考えています。
0881hidebou
2011/02/24(木) 16:16:01.65<ul id="HTABOX_TREE" imglist="bmp/close.bmp,bmp/open.bmp,bmp/doc.bmp">
<li image="0" selected="1">フォルダ1
<ul>
<li image="2" selected="2" onclick="alert('001')">ドキュメント</li>
<li image="2" selected="2" onclick="alert('002')">ドキュメント</li>
<li image="2" selected="2" onclick="alert('003')">ドキュメント</li>
</ul>
</li>
</ul>
0882hidebou
2011/02/24(木) 16:28:44.24ます。このIDを省略した場合は"TREE"が検索されます。指定IDのタグはulで
なければなりません。内容はli/ulのみが有効でそれ以外は無視されます。
ルートulタグにはimglist属性があります。表示に使いたい画像をしています。
尚、現段階ではHTABOX3.EXEを基準とした相対パスとなります。
子タグにはimage/selected属性があります。これはimglistで設定した画像の
配列インデックスを表現しています。imageは非選択、selectedは選択時に
表示される画像です。各要素が選択されるとHTABOXはエレメントに対して
click()を呼び出します。したがってonclickを記述すればイベントを受け取る
ことができます。
0883hidebou
2011/02/24(木) 16:38:01.48ればなりませんが、「簡単、軽量」を極限まで追求した現在のスタイルは
従来のTreeViewに対する観念を完全に払拭するものではないかと自負して
います。
0884hidebou
2011/02/24(木) 16:48:20.93いう想定で動作しています。ここに大きな画像が必要になることはないので
はと考えているのですが、サポートすべきサイズについてご要望があれば対
応します。また、背景、前景色については元となるulの同設定を取得して反
映する予定です。
0885デフォルトの名無しさん
2011/02/24(木) 17:31:05.42敷居が低く、かつ潰しがきく仕様であることを心から望みます。」 〜江戸城より
0886デフォルトの名無しさん
2011/02/24(木) 20:10:22.18空のウインドウとそのタイトルありのタスクバー、加えて空のタスクバーが表示された上に
リモートプロシージャコール失敗とのWSHエラーになります
0888hidebou
2011/02/25(金) 01:10:02.94ttp://kuroda.bglb.jp/htabox/htabox3.zip
Quickリリース時にIE6用に慎重なコードを書いたのですが、試験的にもっと
緩やかにしていました。現状で従来のチェック方式に戻しました。HTA中の
WIN32取得スクリプトは変数宣言が一行増えて
var HIDEDLG;
var WIN32 = showModalDialog('about:blank',null,'dialogHeight:0px;dialogWidth:0px;unadorned:yes');
となります。尚、レジスト登録の為にHTABOX3を起動すると開発中の変なもの
が見えますが気にしないでください。
0889hidebou
2011/02/25(金) 02:21:48.21ttp://kuroda.bglb.jp/htabox/htabox3.zip
888デモは悩んでいる状態のままでしたのでウインドウを小さくするとTreeが
追従しませんでした。
0890hidebou
2011/02/25(金) 14:22:03.90もできるし、XMLDocumentを渡しても生成できるとすれば私はたいしたことを
書かずとも汎用な取り扱いができることに気づきました。そしてTreeやList
がスクリプト側の問い合わせに対して現在の状態をXMLで返せば何がどう選択
されているのかをこれまた柔軟に認識することができます。
こういった「どうしたら楽ができるか」を考えさせた時私は世界で一番貪欲
な気がします。
0891デフォルトの名無しさん
2011/02/25(金) 22:02:57.250892hidebou
2011/02/25(金) 23:16:25.63HTABOXコアは現在ベクターで2.40を公開中ですが、その3.00版がHTABOX3.EXE
です。リリース時には単にHTABOX.EXEとなる予定です。
HTABOX3.00デモを更新しました。ListViewデモを加えました。
ttp://kuroda.bglb.jp/htabox/htabox3.zip
0893hidebou
2011/02/25(金) 23:22:10.11せっかくのソート速度が体感できないのでこのPCのsystem32にあるファイル
情報(約2,500ファイル)を一覧表示させています。その都合で表示にすこし
時間がかかる場合もあると思いますが、ハングではなくデータが大きいだけ
ですので心配しないでください。
0894hidebou
2011/02/25(金) 23:31:18.34何かがチェック、又は選択されたらテーブル本体へ単にclick()を送り、
スクリプト側はリストボックスのXML情報を見て何らかの動作を行うかを
決定してもらおうと考えています。なんだかんだとここのところよく寝て
いないのでちょっと未完成すぎる気もしますが、WIN32ならではの高速な
ソートをお楽しみください。
他人のデータではつまらないという方向けにTABLEデータを作成する側の
スクリプトもこれからアップします。
0895hidebou
2011/02/25(金) 23:40:24.61http://kuroda.bglb.jp/htabox/jscript1.zip
1万ノードくらいの規模になればHTMLを介在させずに直接XMLでデータを認識
させたくなるでしょうが、その機能は後日追加させてください。
0896デフォルトの名無しさん
2011/02/26(土) 00:06:06.22となると、レジストリに登録しないとテスト出来ない仕様になるって事なんですかね。
ポータブルの環境や、レジストリを汚さない前提の環境では開発は厳しいことになるのですかね。
0897hidebou
2011/02/26(土) 00:18:09.46ます。Treeの場合は数千とか数万とかの要素を扱うことは考えにくく、したが
ってDHTMLで代替可能な分野です。それに比べListの方はどうひっくり返って
もHTML+スクリプトでは不可能な速度を実現してしまいます。今回はWIN32で
ウインドウを生成しレンダリングもWIN32で行っているわけですが、この手法
を進展させると、WIN32の速度を保ちながらJavaBeansのようにコンポーネント
の組み合わせでアプリケーションを構築することも可能でしょう。
0898hidebou
2011/02/26(土) 00:22:15.62いいえ、ご心配には及びません。デモ版ですからドロップされたスクリプト
を処理する能力が無いだけです。HTABOX3.00は上位互換として2.40の機能
を受け継ぎます。
0899hidebou
2011/02/26(土) 00:44:33.36います。自分用ツールなら#import "mshtml.tlb"でインターフェース定義を
活用できるわけですが、汎用に使ってもらおうとすると危険をはらんでいま
す。本来インターフェースとは公開後に変更されないものですが、IEのバー
ジョンアップが原因なのかタイプライブラリの記述どうりでは呼び出せない
場合が発生するのです。
0900hidebou
2011/02/26(土) 00:52:13.19を行うことで克服できます。反面、常に照会が発生するというデメリットも
生じるわけですが、一旦照会だけを行って実行関数IDを保持し、以降は照会
なしに直接実行を繰り返すことでそのデメリットも打ち消す工夫を3.00では
採用しています。特にWM_PAINTでドキュメントのスクロール量を取得するよ
うな局面ではこういった小さな事の積み重ねが全体のレスポンスに影響を与
えることになります。
0901デフォルトの名無しさん
2011/02/26(土) 01:12:30.74htmファイルを読み込むという形ではなくて、一気に文字列で読み込ませてしまうような組み方はできるんですか?
strhtml='<html><head><hta:application id="HTA"> <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">';
strhtml+='<meta http-equiv="Content-Type" content="text/html; charset=shift_jis"><title>Button</title></head><body><input type="button" value="Button" ID="Button1"></body></html>';
var HTA = WIN32.CreateHtaWindow( strhtml );
んな感じで。
そのあとで、動的にタグを付け加えていくような作り方をする場合のことなんですけども。
var obody = document.getElementsByTagName("body").item(0)
var oinputtext = document.createElement("input");
oinputtext.style.setAttribute('cssText','font-size:9pt;font-weight:bold;position:absolute;');
obody.appendChild( oinputtext );
ってな感じで。
0902hidebou
2011/02/26(土) 02:00:32.49HTAを動的に生成する目的によっていくつか手法がありますが、javascript:
プロトコルを使う方法もあります。引数ファイルパスの代わりに
mshta javascript:alert()
とするとalertが表示されます。これの応用で
javascript:document.write("........");document.close();のような引数
で有る程度の長さのHTMLを指定できます。
0903hidebou
2011/02/26(土) 02:08:17.13らの標準出力で全HTMLを動的に生成する実験というのを行った記憶がありま
す。
HTABOXコアの場合はWIN32.CreateHtaWindow("about;blank");の返却オブジェ
クトからドキュメントへ書き込みが簡単にできますが、"about;blank"生成
のHTAは自身のドメインやファイルパスを認識していない不都合がありますの
で制約のある存在となります。
0904hidebou
2011/02/26(土) 02:25:12.86そのスクリプトから標準入力なり、ファイルなりを読み込んで最終的な
HTMLを形成する手法にすればなんら苦労することはありません。
スクリプトタグ自体を後付で追加することはできませんが、追加スクリプ
トコードをごっそりexecScriptで評価すれば問題がないと記憶しています。
0905hidebou
2011/02/26(土) 02:40:07.33ナルな動作ものにすりかえることができるかに帰着すると考えています。
ただ、それを実現したところでデバッガでのソース追跡をかわせるわけでは
ありませんので、徹底したチャレンジを行っていないのが現状です。
0906デフォルトの名無しさん
2011/02/26(土) 02:56:26.63sdbl=String.fromCharCode(34);
var oexec= new ActiveXObject('WScript.Shell').Exec('MSHTA.EXE ' + sdbl + "javascript:new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(0).ReadAll()" + sdbl)
oexec.StdIn.WriteLine(shtml)
oexec.StdIn.Close();
sret = oexec.StdOut.ReadAll();
WScript.Echo(sret);/ * htaで作ったGUIの戻り値によって簡単な処理をする使い方 * /;
で、教えてもらった
var HTA = WIN32.CreateHtaWindow("about;blank")
のヒントからいろいろ試しているのですが、いまいちよくわからないのです。
もしよかったら、もう少し教えてもらえませんでしょうか。
0907デフォルトの名無しさん
2011/02/26(土) 03:20:50.81var HTA = WIN32.CreateHtaWindow("about:blank");
HTA.document.body.innerHTML='<input type="button" value="Button" ID="Button1">';
//HTA.document.write('<body><input type="button" value="Button" ID="Button1"></body>');
0908デフォルトの名無しさん
2011/02/26(土) 05:11:57.72var phtaboxexe="V:\\portableapps\\htaboxcore"+"\\"+"htabox.exe";
main=function(){HTA.window.onFileDrop = Drop;SCR.Button1.onclick = hello;
HTA.Show();HTA.window.resizeTo(200,140);WIN32.WiteForWindowVisible(HWND);WIN32.MsgBox("正常終了");
};
var argcl=[];var argdrop=[];var argdropadd=[];
var oshl=new ActiveXObject("WScript.Shell");var ofso=new ActiveXObject("Scripting.FileSystemObject");var oenvprocess=oshl.Environment('process');
if(typeof(WScript)!='object'){
var n=oenvprocess.item('arglength');if(n==''){n=0;};
for(var argcl=[],iii=0;iii<n;iii++){argcl.push( oenvprocess.item('arg'+iii));};}else{
for(var argcl=WScript.Arguments,iii=0;iii<argcl.length;iii++){oenvprocess.item('arg'+iii)=argcl(iii);};oenvprocess.item('arglength')=argcl.length;
oshl.run( phtaboxexe + " " + WScript.ScriptFullName,1,false);WScript.Quit();};
var HTA = WIN32.CreateHtaWindow("about:blank");
shtml='\
<head></head><body id=mainbody>argdrop[]=ウィンドウにドロップしたファイル<br>argcl[]=起動時の引数<br><input type="button" value="終了" ID="Button1"></body>\
';HTA.document.write(shtml);
var SCR = HTA.Script;var HWND = HTA.FraHwnd;
function hello(){SCR.alert("ウィンドウにドロップされたファイルは---"+argdropadd.join("\n")+ "\n---コマンドラインの引数は\n" + argcl.join("\n"));SCR.window.close();};
function Drop(sarg){
argdrop = sarg.replace(/^"|"$/g,"").split("\"\x20\"");argdropadd=argdropadd.concat(argdrop);oshl.popup( "---"+argdrop.join("\n")+ "---");
};
main();
0909hidebou
2011/02/26(土) 12:05:33.15いう制約の有る状態でしか操作できなかったHTMLオブジェクトをWSHという
自由度の高い環境に引きずり出そうという関数ですので、それを理解してい
ただいて今まで不可能だったことをどんどん実現していただきたいと思いま
す。
0910hidebou
2011/02/26(土) 13:15:57.02「自由な形のウインドウ」です。
これもHTML + スクリプトでは実現できるはずが無い操作ですが、WIN32では
普通に使われるテクニックです。最終的にはビットマップを準備して指定色
をマスクしたウインドウを生成できるようにする予定ですが、まずは基本的
図形で基礎実験を行いたいと思います。
0911hidebou
2011/02/27(日) 02:41:54.72ttp://kuroda.bglb.jp/htabox/htabox3.zip
kumo.jsはHTAの表示前にSetWindowRgnFrom関数でウインドウの形を自由に変形
させます。この処理は画像データを元に1px単位で行われますので表示にやや
時間がかかると思います。これにより文字だろうが絵だろうが自由な形のウイ
ンドウを生成することができます。
0912hidebou
2011/02/27(日) 02:51:31.24のbmpファイルへのパスであり、二つ目はマスクのカラー数値です。まだこな
れていないため第1引数は絶対パスで指定してください。第2引数はWIN32での
RGBですのでBGRの順になります。白は0xffffff、青0xff0000、緑0x00ff00...
bmpファイルは1bit白黒、4bit16色、8bit256色、24bit、32bitに対応
しています。現時点でマスクは許容範囲を持ちませんので明らかな純色を指定
してください。
0913hidebou
2011/02/27(日) 03:04:28.37移動できるはずなのですが、開発最終段階でなぜか無視されてしまいました。
これは早急に対策を考えて修正する予定です。このデモのようにマスクと画像
位置を同じくするためにはbodyにtopmargin="0" leftmargin="0"を指定する必
要があることに注意してください。是非いろいろな画像(手書きもOK)でおも
しろい形のウインドウを作成してみてください。
0914hidebou
2011/02/27(日) 03:35:30.36ttp://kuroda.bglb.jp/htabox/kumo.png
今回はマスクの形状データをウインドウに表示しない状態で取得しなければ
なりませんから、各種BMPファイル構造を認識し、自前でパレット展開して
色を調査しなければならず、その部分を書くのに時間がかかりました。
0915hidebou
2011/02/27(日) 05:32:52.73ttp://kuroda.bglb.jp/htabox/htabox3.zip
ウインドウ形状認識アルゴリズムを見直しごく当たり前な速度でウインドウ
が生成されるようになりました。複雑な手書き文字形ウインドウでも実用的
な速度で表示可能と思われます。
0916hidebou
2011/02/27(日) 07:37:31.41ttp://kuroda.bglb.jp/htabox/htabox3.zip
ポリゴン形状ウインドウの場合タイトルバーを期待できませんので本体の左
ドラッグでウインドウ位置を移動可能としました。
0917hidebou
2011/02/27(日) 23:24:10.06たので急遽3.00機能に追加することにします。本来ツールバーは最も簡単な
部類のコモンコントロールなわけですが、HTMLウインドウという有る意味閉
鎖的で、他人様が書いたウインドウに後付しようとすると最も困難を極める
コントロールになります。正直、美しいメッセージの流れでそれを実現する
ことがあまりに難しいものですから知らないふりをきめこんでいました。
どんな分野でも一旦理解してしまえばただそれだけことなのですが、私にと
っては3年越しくらいの課題に決着をつけることができてとてもすがすがしい
気分です。
0918hidebou
2011/02/27(日) 23:33:08.89ます。ウインドウレベルでの操作で「何でもあり」を実現でることは大変大き
な意味を持ちます。例えばタブブラウザのように複数スレッドのドキュメント
画面を切り替えることも可能です。そういった機能もおいおい追加してゆく予
定です。
0919hidebou
2011/02/28(月) 06:48:28.01ttp://kuroda.bglb.jp/htabox/htabox3.zip
従来のmenu.jsはツールバーデモ tool.jsに統合されました。tool.jsはtrue
colorビットマップでツールバーを生成するデモです。今回作ったコントロー
ルが全部乗っているウインドウを見てHTMLであることに気づく人はまずいな
いでしょう。
0920hidebou
2011/02/28(月) 07:20:23.68ウインドウがフォーカスを失った状態で表示されることがありますので
SetForegroundWindowをメッセージループ初期で必ず1実行するように改めま
した。
0921hidebou
2011/02/28(月) 07:24:43.18に一行のテーブル内のTDに背景画像で設定してあり、onclickが定義されてい
ればボタンが押された場合実行されるという仕様にしました。
<table id="HTABOX_TOOL" imgsize="32">
<tr>
<td onclick="alert('Tool0')" width="32" background="bmp/tool0.bmp" height="32">
</td>
<td onclick="alert('Tool1')" width="32" background="bmp/tool1.bmp" height="32">
</td>
<td>-</td>
<td onclick="alert('Tool2')" width="32" background="bmp/tool2.bmp" height="32">
</td>
0922hidebou
2011/02/28(月) 07:35:34.28background属性です。<td>のwidthとheightは単に編集中の見栄えの為に設定
されています。上記例では間隔用に<td>-</td>としていますが、内部的には
background属性が無い<td>はスペース用と認識しています。
また、ツリービューも含めてマスク色を指定できるように整備しますが、現在
は純黒0x000000をマスクと認識しています。
0923hidebou
2011/02/28(月) 15:09:32.16よってはスプラッシュウインドウでも表示してこの問題を根本から解決し
たいと思います。まぁ私の勉強不足が原因なのですがウインドウのアクテ
ィブ設定というのは結構奥の深いものだと感じています。
0924デフォルトの名無しさん
2011/02/28(月) 15:21:18.94http://raicho.2ch.net/test/read.cgi/newsplus/1298870574/497
497 名前:名無しさん@十一周年[sage] 投稿日:2011/02/28(月) 14:58:57.92 ID:RfceUFt90
全てのプロバイダが談合して従量制に移行するのが決まっていて、
ネット代が月3万円以上するのが普通になるみたいだ。
【今までが】ついに従量制課金へvol.1【良かった】
http://hibari.2ch.net/test/read.cgi/isp/1297435617/
5 名無しさんに接続中… 2011/02/12(土) 07:28:23 ID:sCFMzbBe
>>3
総務省のお墨つきが出ているし、大手ISPはどこもやりたがっているから間違いなく従量制が主流になるでしょう。
友人がみかかの組合にいるけれど、組合には「案」が下りて来ているとのこと。
簡単にまとめれば従量制と定額制の並存になる。
ただし…
・定額制には1ヶ月もしくはは1日あたり、一定容量以上の利用でダウンロード規制。
・従量制は上限プランに応じて品質の差別化を図る。
マスコミで発表された「上限5985円」はメールとポータルサイト閲覧者向け。
ダウンロードが上限額に達したところで通信規制の対象となる。
最大の上限プランはは3万〜4万の辺で調整。ただし、このプランは通信規制の
原則対象外となる。
・小規模法人で家庭用プランを利用しているユーザーには法人向けプランへ誘導
する。
ことの話で確定済み。
0925デフォルトの名無しさん
2011/02/28(月) 15:22:15.78と、料金体系の改善を迫っているとのこと。これは光のみならず、ADSLやISDNも
同じなんだと。
あと、現行の料金プランのユーザーも2〜3年後目処に新しい料金プランへ移行させ
る方向で話をまとめているとのこと。
生活にネットはなくてはならない時代になったから、従量制にしても問題はないは
ずだが。
0926hidebou
2011/02/28(月) 18:23:44.53を存在させてコントロールしようとしているのですが、それによって本来の
ウインドウ同士の通信を阻害してしまう事態が発生しているのかも知れません。
あくまでも他人様が書いたものですから、仕様が公開されているわけでもなく
すべては手探りになるわけですが、現状の打開策としてツールバーを利用する
場合、はじめからドキュメント上部の余白をHTML的に設けてもらうことにすれ
ばとりあえずこの難解な問題には関らずに済むと思われます。
0927デフォルトの名無しさん
2011/02/28(月) 20:40:28.980928hidebou
2011/02/28(月) 21:09:43.10ttp://kuroda.bglb.jp/htabox/htabox3.zip
ウインドウ構成をシンプルなものにしました。
>>927
要望があればと考えていましたので、すぐに追加します。
0929デフォルトの名無しさん
2011/02/28(月) 21:24:08.00このデモだとエラーダイアログが
DInvoke Error:readyState GetDispID 80070005
DInvoke Error:readyState InvokeEx 80070005
DInvoke Error:parentWindow GetDispID 80070005
DInvoke Error:parentWindow InvokeEx 80070005
SAMPLE_EXE:Unknown Error
と連続して起動できずに強制終了するのですが……
0930hidebou
2011/02/28(月) 23:20:36.16希望通りにならない原因を究明できていません。安定したらここで告知
させていただきます。
0931hidebou
2011/03/01(火) 03:48:58.15コンパイラオプションをチェックしたり場合によってはVC6でライブラリを
形成してから結合する作業が必要になるかも知れません。一旦デモは停止
させていただきます。いかなるストレスがかかっても安定動作するものを
提供しなければ意味がありませんし、こういう機会こそ新たな成長のきっか
けになるものです。
0932hidebou
2011/03/01(火) 18:33:39.63ttp://kuroda.bglb.jp/htabox/htabox3.zip
HTAウインドウ生成にスレッド負荷を軽減させ動作を安定させました。
ツールバーデモ(tool.js)でツールチップの表示を行っています。
ツールチップはHTMLの仕様に則り「title」属性での文字列設定となります。
0933hidebou
2011/03/01(火) 18:46:52.81一つの完成したモジュールをお見せする裏では何百回とコンパイルと実行が
繰り返されるわけですが、そのほとんどがエラー停止又は強制終了になりま
す。その原因を探る作業がプログラミングの本質ですが、今回は主にウイン
ドウメッセージ系のプログラミングですのでいつもになくダメージが蓄積し
ていたようです。ヘッダファイルのバージョンによる差異はありますが、結
果的にVC6とVC7.1は同じ結果を報告してきましたので一安心しました。
0934hidebou
2011/03/01(火) 20:11:04.53基本としますが、特にリストの場合実際の<TABLE>高さとリストコントロール
の高さが大きく違う場合がありますのでこの両者に関しては常に下端を表示
ドキュメントウインドウに合わせるオプションを追加したいと考えています。
0935デフォルトの名無しさん
2011/03/01(火) 21:20:51.18demo.jsとkumo.jsはウインドウの中身が空になることがあり、
list.jsはウインドウ表示前に
DInvoke Error:readyState GetDispID 80070005
DInvoke Error:readyState InvokeEx 80070005
のエラーダイアログが必ず出ます
0936hidebou
2011/03/01(火) 23:24:32.92ご報告ありがとうございます。今書いている部分が終わったら私も別バージョン
のIEで総合的なチェックを行いたいと思います。しばらく時間をください。
0937デフォルトの名無しさん
2011/03/01(火) 23:53:56.71かなりwktkしてきました。
0938hidebou
2011/03/02(水) 00:08:44.93ttp://kuroda.bglb.jp/htabox/htabox3.zip
まだ根本的なIE6対策は行われていませんが、HTAのメニュー生成を他のコン
トロールと同じようにWSH側にWIN32があれば可能としました。これにより
HTAでメニューを生成する場合に<head>直後にダイアログ呼び出しを書く必要
はなくなりました。このダイアログ呼び出し時のストールが原因ですので
さらに原因を煮詰める作業を行います。
0939hidebou
2011/03/02(水) 03:27:53.84ttp://kuroda.bglb.jp/htabox/htabox3.zip
windows2000+IE6環境での安定動作を確認しました。この不具合を教えてくだ
さった方に感謝します。今回は真正面からドキュメントの状態取得に取り組み
ましたので、ご迷惑がかからないものになったと思います。
0940hidebou
2011/03/02(水) 03:58:27.99思います。勿論さまざまなご要望があればお答えしますが、まずはリリース
に向けて完成度を上げることに主眼をおきたいと思っています。.NETスクリ
プトが実行でき、新たなコモンコントロールが追加された3.00のリリースは
HTMLアプリケーションに新たな1ページを刻むはずです。
0941デフォルトの名無しさん
2011/03/02(水) 07:28:56.91list.jsが
DInvoke Error:readyState GetDispID 80070005
DInvoke Error:readyState InvokeEx 80070005
Windows Script Host:サーバーによって例外が返されました。 80010105
とエラーダイアログが連続してウィンドウ表示にまで至らないようです
他のサンプルは格段に安定したのですが……
0943hidebou
2011/03/02(水) 23:34:45.01ttp://kuroda.bglb.jp/htabox/htabox3.zip
ページャーコントロールのデモを追加しました。これはまだ込み入った手順
を抽象化できていなのでHTABOX3.EXEそのものを起動するとご覧になれます。
このページャーコントロールでは主たるHTMLインスタンスとは別のインスタ
ンス(モードレスダイアログ)をコントロールの内容としてスクロール表示し
ています。これ自体はDHTMLで行った方がいいような処理なのですが、もしこ
の親ウインドウがHTMLではなくWIN32ウインドウの場合は大きな意味を持ちま
す。最小限のC++コードでHTMLコントロールを生成しGUIをHTMLで書きながら
処理をC++で書けるからです。
0944hidebou
2011/03/02(水) 23:41:26.87率的にアプリケーションを生産し、足らない部分だけをC++のCOMモジュール
で補おうとする考え方と、C++を主体にして堅牢かつ繊細な管理を行いながら
煩雑なGUI形成だけをHTMLとスクリプトで補おうという考え方です。
つまりこのページャーコントロールは後者のためのアプローチになります。
0945デフォルトの名無しさん
2011/03/03(木) 00:00:19.16そしてこれがWindowsPhoneでも動くなんてことになれば凄いことになるんだが。
0946hidebou
2011/03/03(木) 00:33:49.69うに手探りでメッセージを解析したりしなくても、この程度のことなら即座
に提供可能なんだろうと思います。ただ、それが企業としての方向性とは相
容れないものだろうことも明らかです。「WindowsをよりフレンドリーなOSと
する為に」とでも題して本社にメールしてみましょうか。
0947hidebou
2011/03/03(木) 01:47:54.32に監視スレッドを投げて100msというのんびりした間隔で単にGetDispIDだけ
を問い合わせています。で、そのループでS_OKを確認した後の本番呼び出し
でストールしています。つまり一度はIDの取得に成功しているにも関らず再
度実行した場合、0x80070005(access denied error)が返されるなら、もはや
制御下にない状態だと考えられます。
0948デフォルトの名無しさん
2011/03/03(木) 02:02:45.53だめもとで本社にメールしたら面白いよ。Titanium、TitaniumMobileとかHTMLアプリで開発者を取り込む動きもある。
HTABOXがMSの既存の商品とバッティングするといって忌避されるとは限らない。
0949hidebou
2011/03/03(木) 02:03:11.74が、同じ状態に遭遇できていません。現実には650kのテーブルを読むだけでも
IEのエンジンにはかなり負荷がかかりますから、生のHTMLではなくHTAが安定
した後にデータベースでの取得かXMLでの取得を行ったほうが安全だろうとい
う教訓かも知れません。ちなみに現在公開中のデモにはlist2.jsが存在し、こ
れはCreateHtaWindowをCreateDlgWindowに変えただけの存在です。Dlgの方が
軽量ですのでこちらで長大なリストビューをご覧になれるかも知れません。
0950デフォルトの名無しさん
2011/03/03(木) 07:22:43.050951hidebou
2011/03/03(木) 11:35:09.41了解しました。何かもっと気の利いた方法があるのに気づいていないんだと
思われますので、継続した課題として認識したいと思います。私としてはHta
を使うメリットは若干のウインドウスタイルの違いだと思いますのでDlgの使
用をお勧めします。
と書いていて気づいたんですがDlgでアイコンを任意なものにする機能が必要
ですよね。それを書きたいと思います。
0952hidebou
2011/03/04(金) 02:17:38.83ものでしたが、克服できたようです。これで普通のPaintで作成した各種BMP
ファイルを指定してウインドウアイコンとすることができます。内部では
TrueColorとして扱っていますので色についてもなんら制約がありません。
0953hidebou
2011/03/05(土) 02:07:05.86なデータをHTML側で高速に処理可能なように生のXMLインスタンスを共有した
かったのですが、コモンコントロール側はウインドウズメッセージ駆動での
XML操作となりますのでHTML又はWSHスレッドとの同期が難しくなるようです。
そこでコモンコントロール側はHTMLテーブルの各<TR>にchecked、selected
属性をfalseで初期化し、チェック又は選択時に属性へ逐次反映させるものと
しました。ツリービューに関しては同じ理由でXMLでの生成を今回はサポート
しません。動的なツリービューが必要な場合はスクリプトで動的にul/liを
生成してからツリービューを構築関数を呼ぶことになります。
明日最終的なデモを公開する予定です。
0954hidebou
2011/03/05(土) 18:15:14.08アプリケーションはその外観の面でも通常のアプリケーションと同等のものと
なります。http://kuroda.bglb.jp/htabox/newhta.png
HTA固有の問題なのですが、アクティブウインドウの確実な設定に取り組みまし
た。また、HTAウインドウの内部構造を解析することでページャーコントロール
を一般化しました。上記画像のようにフラットにするとなかなかおしゃれだと
感じています。
0955hidebou
2011/03/05(土) 18:45:40.16表示するという単純且つ汎用性の高いものです。尚、ツールバーと水平スクロー
ルバー、ページャーコントロールと垂直スクロールバーは排他的存在となります
ので双方を利用した場合、スクロールバーは表示されませんがこれは仕様です。
0956hidebou
2011/03/05(土) 20:35:40.60ttp://kuroda.bglb.jp/htabox/htabox3.zip
tool.jsにページャーコントロールのデモを追加しました。left.htmを書き
換えて独自の左メニューバーを作成することができます。
list.jsにリストビューの選択状態をHTMLスクリプトで取得するデモが追加
されました。
0957hidebou
2011/03/05(土) 20:47:15.59内容はHTMLダイアログです。デモのleft.htmがこれにあたります。
var LeftScript = Obj.BuildPager(Dir + "\\left.htm", "140");
BuildPager関数は第1引数に絶対パス、第2引数に横幅を取ります。縦はHTMLが
必要とする長さを自動的に取得します。本体ウインドウのクライアント領域
高さ(ツールバー表示ならその分を除く)がHTMLの要求高さよし小さい場合
スクロール用のボタンが自動的に表示されます。このHTMLは当初起動WSHと
は無関係ですが、BuildPagerはダイアログHTML側スクリプトインスタンスを
返しますので上記例ではLeftScript変数に保存し関数の追加を行っています。
詳しくはtool.jsとleft.htmをご覧ください。
0958hidebou
2011/03/05(土) 20:54:35.31単一のアイテムをalertで表示するデモとなっています。コントロールには任意
な表題をドラッグして自由に並び替えることができるスタイルも追加しました。
このメカニズムは極めてシンプルでコントロール側は与えられたHTMLのTRに属性
checked、selectedを新設し真偽をセットします。HTML側では単にTRをループで
検査し当該属性が真であるかを確認し表示しています。
詳しくはlist.jsとlist.htmをご覧ください。
0959hidebou
2011/03/05(土) 21:56:58.83ttp://kuroda.bglb.jp/htabox/htabox3.zip
ウインドウサイズ変更時のツールバーのちらつきを解消しました。
0960hidebou
2011/03/05(土) 23:19:43.81ttp://kuroda.bglb.jp/htabox/htabox3.zip
まだちょっと怪しい動きのときがあるのですが、HTABOX3.EXEはHTAウインドウ
にステータスバーを付けた場合の例となっています。
0961hidebou
2011/03/06(日) 01:20:09.63今回はかなり真剣に多方面から分析しているのですが、サイズブリップが設置
されているとデフォルトのウインドウが持つ同等なメッセージの流れを阻害し
てしまうのではないかというのが現時点での推理です。したがって現時点のデ
モではサイズブリップの無いステータスバーとしています。もしこの推理が正
しく、ステータスバーが安定したものとなれば、メニューに説明文を付加して
ここに自動表示されるといった使い方を考えています。
0962hidebou
2011/03/06(日) 02:40:47.77どのものを書けるとは思っていませんでした。一年前にHTABOXコアを世に出し
た時は自分でさえ、機序を理解していない危うさがあったのですが、COMとそ
れを最大限に利用したC++コードの書き方とは何か?という根源的なテーマと
向き合った結果、非常に見通しのいい設計ができるようになりました。一年間
このスレッドにお付き合いいただいた方々への御礼のつもりで3.00を仕上げた
いと思います。
0963hidebou
2011/03/06(日) 16:00:25.21にtitle属性文字列が存在する場合、状況依存の説明文としてステータスバー
に表示される機構を採用しました。ただし、ステータスバーと水平スクロール
バーも排他的な存在のようです。
従前バージョンが装備していたWIN32APIの実装作業に入りました。次に公開する
HTABOXコアはデモではなくβバージョンと呼称する予定です。
0964hidebou
2011/03/07(月) 00:20:48.90ttp://kuroda.bglb.jp/htabox/htabox3.zip
tool.jsに変更点が集約されています。メニューとポップアップの生成関数を
別にしました。ツールバー、ページャーに装飾のための線描画オプションを
追加しました。ステータスバー生成関数BuildStatusを新設しました。アプリ
ケーションメニューの最初の項目にマウスが乗るとステータスバーに説明文字
列が標示される動作を確認できます。
0965hidebou
2011/03/07(月) 07:55:11.98せっかくTreeを表示できるのでから、<h1>....<h6>を表示時に解析し見出し
文字列を階層表示してくれるTreeを作れば単なるHTMLをコンパイルされたヘ
ルプファイルのように閲覧することができるはずです。通常こういった階層
判断は整形XMLでないと面倒な事になりますが、実行時であればdocumentが
保持しているDOMノードをたどれば破綻しないわけですから実に軽量なソース
になるはずです。
0966デフォルトの名無しさん
2011/03/08(火) 05:36:13.12次スレの名前を決める論議もはじめないといかんだろう。
候補を挙げとくから、各自でTPP論議並みに慎重に判断してほしい。日本の運命が掛かっとるぜよ!
HTABOXコア Part2
HTABOXコア増量中Part2
HTABOXコア人生劇場Part2
HTABOXコア プロジェクトXPart2
HTABOXコア+D-NETBOX Part2
大河プログラムHTABOXコアPart2
HTABOXコア ヤッショーマカショPart2
今日は一日HTABOXコア三昧Part2
HTABOXコア プログラム深夜便Part2
HTABOXコアだよ!全員集合!Part2
連続プログラムドラマHTABOXコアPart2
HTABOXコア 吹けば飛ぶような将棋の駒にPart2
俺のHTABOXコアがこんなにかわいいわけがないPart2
そうだったのか!HTABOXコア いい質問ですねぇ!Part2
HTABOXコア+D-NETBOX+C++COMオブジェクトHTMLアプリ Part2
0967hidebou
2011/03/09(水) 00:15:29.22ヘルプエンジンの中核部分は完成しました。後は動的ドキュメント解析と
ツリーメニューとドキュメントの同期部分です。たとえどんなに気の利いた
ものを作っても、情報として伝わりにくければ使ってみようということにな
らないでしょうから、HTABOX.EXEのHelpから起動するこのエンジンの出来栄
えは重要だろうと考えています。
0968hidebou
2011/03/09(水) 20:34:58.74http://kuroda.bglb.jp/htabox/helpdemo.zip
helpdemo.exeはHTABOXそのものですが、HELP表示モードで起動します。
起動後に添付のtest.htmを開けばミニMSDNであることがご理解いただけると
思います。このEXEは汎用なHTML、HTAを自身のウインドウ内で実行できます。
表示HTML内に順序だった<h1>-<h6>が存在するとinnerTextをラベル名にTree
表示し、選択されたTree項目へ自動的にスクロールします。遊び方としては
複数のHTAを長い画面にまとめてTreeからランチャーのように必要な部分を
表示させて実行するというのがおもしろいかも知れません。
0969hidebou
2011/03/09(水) 21:17:32.56したモジュールとしてこのエンジンを設計しました。このエンジンは左右の
ウインドウサイズを変更できますが、本家MSDNのように破線表示に逃げずに
このスプリッターバーをどれだけ軽量にできるかというのも重要なテーマで
した。HTMLウインドウ自体が壮大なオーナードローウインドウですのでそれ
が重い場合には対策が難しいのですが、説明を目的としたコンテンツの表示
に関しては考えていた以上のクォリティーに仕上がったのではないかと思い
ます。この<H*>による階層表示、スプリッターも抽象化できればスクリプト
からコントロールできることになると思います。
0970デフォルトの名無しさん
2011/03/12(土) 15:39:54.090971hidebou
2011/03/12(土) 17:45:41.80ありがとうございます。
私の住む庄内は日本海側ですので被害もなく開発を続けております。
今回の地震災害に遇われた方々に心からお見舞い申し上げます。
0972hidebou
2011/03/13(日) 04:49:50.34ttp://kuroda.bglb.jp/htabox/helpdemo.zip
汎用に使える機能ではありませんが、ツールバー下をドラッグするとリッチ
テキストエディタが出現します。HELPで項目を選択するとここでサンプルコ
ードが出現し、その場で実行可能となる予定です。また、エディタですから
サンプルを書き換えて、実行することも可能となる予定です。
0973hidebou
2011/03/17(木) 03:52:55.22イメージを理解していただく目的でファイルを更新しました。
ttp://kuroda.bglb.jp/htabox/htabox3.zip
ツールバー右側ボタンの操作でエディタを開きtest.jsを読み込んで実行する
ことができます。この場合レジストリには関与せず自身のクローンインスタン
スへパイプ経由でスクリプトコードを渡して実行します。
0974hidebou
2011/03/17(木) 04:08:49.57する予定です。いくばくかでもお金をいただけるクオリティーを目指すという
ことでエディタ部のコメント及び予約語の表示には一週間ほど費やして軽量
な動作を目指しました。リッチエディットではこういうことができないという
のが定説のようですが、ITextDocument系インターフェースを解析すれば可能
です。TABで複数選択行のインデントができます。SHIFT+TABで逆を行えます。
動作軽量化のために文字色はカレント行での操作を監視しますが、複数行を
選択後にCTRL+TABで当該領域の予約語を再評価します。
0975hidebou
2011/03/17(木) 04:27:16.60機能はプロ、アマチュアを問わず会員アカウント制に移行します。この統合環
境はHTABOXワークベンチとでもして、プログラムなんか面倒で書く気にならな
いという面々にヘルプを眺めながらサンプルコードを実行してその簡単さに気
づいてもらうことをイメージした設計となっています。また、インテリセンス
有効なDLL版HTABOXをディープなスクリプター向けに販売します。
0976hidebou
2011/03/17(木) 04:58:32.72C++の威力をまざまざと見せ付けられた感があります。ソース解析では前段
で静的文字列領域の確定、コメント領域の確定、その後すべてのトークン
に対して予約語候補と一致するかを検定するわけですが、現状のHTABOXソー
スコード(150k)を与えても瞬時で終了する速度には驚嘆してしまいます。
これがスクリプトだったらどんなに賢く書いても30秒位は帰ってこないと
思います。このリッチエディットをCOMインスタンスとして扱う手法もいつか
コンテンツに整理して公開したいと思います。
0977デフォルトの名無しさん
2011/03/19(土) 16:59:58.44C++のことまで説明しても、食いつきが悪いと思って省きました。
”将来にわたって潰しが効く開発環境”をキーワードに考えてみました。
これに拘らず、早めに次スレを立てて、このスレは埋めないで残しておいたほうがいいと思うよ。
HTABOXコア ヤッショーマカショ.NET Part2
hidebou氏開発によるHTMLアプリ開発環境HTABOXコア、HTABOXクイックのスレッドです。
HTMLとJavascriptといった多くPCユーザーに使われている潰しの効く技術から、
Windowsに付属するHTAでは不可能なウィンドウへのドロップやメニューなどの
使いやすいGUIを取り入れながらアプリを作ることが出来ます。
またドットネット(.NET)やWIN32APIの機能を使うことも出来るので、
ドットネットを使うノウハウも取得しておきたいという方にも
将来に渡って潰しが効く製作環境となるでしょう。
そしてこの環境で作ったアプリを、ソースを限りなく隠蔽した状態で
販売、または配布するための環境も用意されています。
0978デフォルトの名無しさん
2011/03/19(土) 17:01:38.32http://hibari.2ch.net/test/read.cgi/tech/1268122426/1
HTABOXコア
http://www.vector.co.jp/soft/winnt/util/se481957.html
HTABOXクイック
http://www.vector.co.jp/soft/winnt/util/se487589.html
ホームページ
http://kuroda.bglb.jp/
関連スレ
HTAをもっと流行らせる計画 Part2
http://hibari.2ch.net/test/read.cgi/tech/1220874815/1
お前ら、wsh使ってますか? Part8
http://hibari.2ch.net/test/read.cgi/win/1292764835/1
WSH(・∀・)スレッド! Part 4
http://hibari.2ch.net/test/read.cgi/tech/1243095768/1
★WSHでCGI★JScriptVBScript
http://hibari.2ch.net/test/read.cgi/php/1059745064/1
0979hidebou
2011/03/20(日) 21:33:27.17きませんでした。とても的確な前文で、私よりもHTABOXのことを理解してい
ただいているようで大変うれしく思います。私が次スレッドを作ってもいい
のであれば是非使わせていただきたいと思います。
0980デフォルトの名無しさん
2011/03/20(日) 22:39:39.89>潰しが効く
個人開発で非オープンのソフトが
そんなわけないだろ。
作者がサポートしなくなったら、
その時点で終了。
0981デフォルトの名無しさん
2011/03/20(日) 23:10:47.24潰しが効くっていう主な理由は、HTMLとJavascriptで組めるから。それと.NETも使えるから。
仮にHTABOXコアがサポートなくなっても、ここに費やして得たノウハウはほかのHTMLアプリにも生かせる。
Titanium、TitaniumMobileなどのHTMLアプリへ移行してもいいし、HTAでも生かせる。そういう意味もある。
0982hidebou
2011/03/21(月) 03:08:15.99アマチュアがツールとして使う機能はたとえ私が居なくなっても有効である
事をガイドラインとしています。ビジネスの為のツールとして使う場合は管
理下に置く意味でオンライン認証をメインとすることになります。まだ、そ
この線引きを明確にできていないのでちょと漠然とした表現になってしまう
のですが。
WindowsやIEが様変わりしたら...についての対応は企業だとか個人だとかと
いうのは別問題で対応する技術があるかないかだけの問題だろうと考えます。
0983hidebou
2011/03/21(月) 03:41:43.41きました。RICHEDITは他のコントロールとは違いIDispatchで操作するための
インターフェースが装備されていますのでそれをスクリプトへ公開するという
手法で有る程度のことは実現できるのではないかと考えています。ただし用途
からして独立したウインドウの方がいいのではないかとも思います。つまり
CreateRtfWindow()で新たなPopupウインドウが生成されITextDocument2を通じ
て操作してもらうという構想です。従来はすべてMSHTML.DLLがらみのウインド
ウでしたが、非HTMLなウインドウをスクリプトから操作することになります。
0984hidebou
2011/03/21(月) 04:02:14.58りませんから本格的にスクリプトを実行する機能はありません。
ttp://kuroda.bglb.jp/htabox/HTABOX3.zip
ソースは16Mbまで行は99999まで予約語はJS、VBそれぞれの.NETの4種類に切り
替える事が可能で、行番号部分をクリックするとブックマークとして記憶され
コンボボックスの選択で即座にジャンプ可能です。メモ帳よりは幾分使いやす
いと思いますので遊んでみてください。ツールバーの「スクリプトエディタの
表示」でエディタが現れます。
レス数が950を超えています。1000を超えると書き込みができなくなります。