というか、c言語なんかで定数が使えるのはヘッダに書いてあるからであって
SFCminiに定数の宣言されたヘッダがないなら、値を調べておいて
var MB_OK=0;
とする。面倒なら直接0とか指定してもいいし
>>952 やっぱそうですか・・・
win32apiの定数の名前と値が
ズラーっと並べてあるようなページとかありませんか?
replaceでJScript用に一発置換できそうなのがよりいいんですが
HTABOXで作ったEXEのアイコンて
好きなのに変更して配布するのってアリ?
>>942 配布やインストールが楽である
というのが最重要な場合もある
C:\Program Files\Microsoft Visual Studio\COMMON\Tools\Winapi\WIN32API.TXT
>>956 MD5
5BD0F5DCEF7EF8E03E762DDFAD9CCD02
ですがどうでしょう?
>>953 一括で並べてあるページは知らないな
1.MSDNでどのヘッダにあるか確認して直接ヘッダ(bccをインストールしてincludeディレクトリ以下)を覗く
2."define 定数名"あたりで検索
3.winapi32.txtを入手して正規表現で引っこ抜く(しかしVB向けなので該当行を抽出後、置換が必要か)
960 :
953:2008/09/03(水) 16:37:55
>>959 とりあえず
>>957で入手したwinapi32.txtに変換かけてます。
普通の定数は変換終了したんですが
構造体をSFCmini用に変換するのをどうするか思案中です。
SFCminiで宣言できる構造体メンバの型は↓しかないんですよ
http://kandk.cafe.coocan.jp/sfcmini/item-151.html Byte (バイト型)
Integer (16ビット整数型)
Long (32ビット整数型)
String (ANSI 文字列型)
Unicode (Unicode 文字列型)
String*長さ (固定長ANSI 文字列型)
Unicode*長さ (固定長Unicode 文字列型)
SfcMini.Structureオブジェクト (入れ子の構造体宣言に使用)
大まかに置換してあとは手動?
961 :
953:2008/09/03(水) 17:37:20
構造体は文字列の配列に置換して
コメントアウトしておくことにしました。
とりあえず当初の目的の8割は達成できたのでよしとします。
ありがとうございました。
>>960 あやしい変換ツール作った
以下を適当な名前.htaで保存して、テキストエリアにwin32api.txtをコピペしマウスのフォーカスをはずすと変換
As 〜の基本的な型は用意されてる前提でチェックせず変換してるので注意
特に、構造体の入れ子は処理してないんでそこら辺は自分でやってくれ(デフォルトの型以外はクォーテーションはずすだけでいいはず)
<html>
<head>
<script>
function conv(obj){
obj.value=obj.value
.replace(/(Declare| *')[^\r\n]*/g,'') //コメントと関数のプロトタイプ宣言を消去
.replace(/Public Const ([^\r\n']+)/g,"var $1;") //定数を宣言
.replace(/&H([0-9A-Z]+)\D?/g,"0x$1") //VBからJS的な表記に直す
.replace(/ Or /g," || ")
.replace(/ And /," && ")
.replace(/ {4}/g,'\t') //スペース4つをタブに
.replace(/([^\s]+) *As *([^\s]+)/g,"\"$1\",\"$2\",")
.replace(/([\r\n]*?)Type (\w+)(([^\r\n]+[\r\n]+)+?)End Type/g,'\nvar $2=WScript.CreateObject("SfcMini.Structure");$1$2(\n$3);')
.replace(/\([\r\n]+[^\r\n]+/g,'(')
.replace(/,(\s+\);)/g,"$1")
.replace(/([\r\n]+){3,}/g,'$1');
}
</script>
</head>
<body>
<textarea onblur='conv(this)' rows="30" cols="100"></textarea>
</body>
</html>
>>962 ありがたいんですがちょっと変換結果もあやしいっぽいですw
構造体名の最後の1文字欠損してたり
構造体の中身が何もなっかったり
どこからどこまでが構造体の中身かわからなかったり・・・
参考にして改造してみます
HTAでWEBサイトからDOMを取得したいんですけど、いい方法はないでしょうか?
目的のWEBサイトのContentTypeがtext/htmlなのでMsxml.XMLHTTPのresponceXMLではnullになってしまう制限があるようです。
現状はHTA内にiframeを非表示で設置してそこから取得していますが、どうも不恰好な気がして…
文字化けを恐れないならresponseTextをパースするか、createElementした要素のinnerHTMLに流し込んで利用する手もある
あとはMicrosoft.XMLDOM(現在はMsxml2.DOMDocument.3.0以上が推奨だっけ?)あたりでやるしかない
非表示のie
967 :
964:2008/09/05(金) 11:15:12
お二方レスありがとうございます。
>>965 ADODB.StreamでCharsetをあわせるようにしてあるので文字化けは大丈夫です。
XMLDOMというのは知りませんでした。調べてみます。
>>966 IEも考えたんですけど、自分の中でどうもiframeと似た不恰好さが気になります
htmlfile
普通のhtmlをxmlのdomに突っ込んでもパースしてくれないと思う。
xhtmlなら可。
970 :
デフォルトの名無しさん:2008/09/06(土) 04:38:58
MSHTMLにIPersistFileブチ込んでやればできないこともない
hta単体でできるかしらないけど
971 :
デフォルトの名無しさん:2008/09/06(土) 14:05:16
HTAで数値計算やグラフ描画ができますか?
便利なクラスがありますか?
972 :
デフォルトの名無しさん:2008/09/06(土) 14:14:38
それなりに数値計算はできるし
それなりにSVGとかVML使える環境もあるので
それなりにできるんじゃないでしょうか,できないかも
Mathオブジェクト
974 :
デフォルトの名無しさん:2008/09/06(土) 15:07:46
開発環境はメモ帳?
>>971 VMLならIEのカスタムインスコではずしていない限り使えるでしょ。
<html xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<style>
v\:* {behavior:url(#default#VML);}
</style>
</head>
<body>
<v:shape style="width:200px;height:200px" coordsize="100,-100"
path="m0,0 l 10,10, 20,30, 30,30, 40,70, 50,80, 60,50, 70,40, 80,70, 90,50, 100,100">
</v:shape>
</body>
</html>
976 :
デフォルトの名無しさん:2008/09/07(日) 13:28:33
どーでもいいけど、次スレ落ちてないか。
ホントだ
落ちてよかったじゃん
ここ、アクティブなときと過疎ってるときの落差が極端だからなー。
気を付けとかないと1000行くころには
>>979も落ちてたりして。
その前にこっちが落ちる
980以降は24〜30時間書込が無いと落ちるから
このスレが持つのは長くてもあと20日前後
実際にはそう都合良く24時間置きに1書込なんてならないから
1000行くにしても落ちるにしても、このスレが保つのは精々1週間だろ
とっとと埋めちゃえ!
梅
このスレみてはじめてVML知った。
IE使ってなかった自分に反省
HTAはクロスブラウザ対策とか考慮する意味ないし
豪快にIE依存でおkだから気楽でいいわ。
。
>>986 WindowsUpdateとかもろに影響を受けるから一長一短さ
はぁ?
>>988 とはいってもIEの挙動がそう豪快に変わることは
よくあるけど めったにないよ。
どっちなんだよ
俺としてはセキュリティー周りの制限とかWindowsUpdateでかなり変わってくるし、
クロスブラウザよりそういう面ではシビアだと思うけどね
クロスブラウザ問題とIEのセキュリティ変更の話は比較できる話か?
どっちみちIEにあわせて対応すりゃいい話じゃねえの?
まあ俺はWindowsUpdateで今までのスクリプトが使えなくなった事もないし
埋め
>>985 何気にGoogleMapで使われてたりするよ
UPDATEでADODB.Streamが使えなくなったんだっけ?
>>996 良く読まずに聴くのもあれだがHTAでも使えなくなると書いてある?
なんか使えてた記憶があるんだが
ggle
うめ
1000
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。