UWSCのFormでX-UA-CompatibleがIE=9以上だとoleevent()が使えないのをどうにかする

UWSCのFormでこう、ちょっとしたUIを作りたいときに

<meta http-equiv="X-UA-Compatible" content="IE=edge">

などと書きたいわけですよ、つらいから
だけどそうすると oleevent が使えなくなっちゃうんですね
そんなイベントはねー!みたいなエラーになってしまう
こまる、つらい

じゃあもう自分でやるしかないな!

f = createform("about:blank", "test", TRUE)
f.document.write(html)

while f.visible
    select f.document.parentWindow.value
        case 1,2,3,4
            print f.document.parentWindow.value + " が押されました"
            f.document.parentWindow.value = 0
    selend
    sleep(0.01)
wend

textblock html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<script>
value = 0;
var hoge = function(n)
{
    value = n;
}
</script>
</head>
<body>
    <input type="button" name="1" value="1" onclick="hoge(this.value);">
    <input type="button" name="2" value="2" onclick="hoge(this.value);">
    <input type="button" name="3" value="3" onclick="hoge(this.value);">
    <input type="button" name="4" value="4" onclick="hoge(this.value);">
</body>
</html>
endtextblock

はい

script タグ内で宣言してる

value = 0;

の値をForm内でjs使って書き換えるようにして、それをUWSC側から監視してしまおうというわけです
これは要するに window.value なのでUWSC側からは f.document.parentWindow.value で見える

あとはおなじみFormの visible 監視ループの中でその変数の値を見てそれに応じて処理を行う、というすんぽーよ
毎回その変数を初期化するのを忘れずにね
取りこぼしがあるかもしれないからあんまり激しいのはNGよ!

とまぁこんな感じでごまかしながらやってんだけど oleevent() こうするとできるよーみたいな情報ある人は教えてください…

広告
カテゴリー: UWSC

UWSCで配列リテラルっぽいなにか

UWSCって配列リテラルないじゃないですか
なので配列リテラルっぽい気持ちになれる関数を作る

function Array(arg0 = NoValue, arg1 = NoValue, arg2 = NoValue, arg3 = NoValue, arg4 = NoValue, arg5 = NoValue, arg6 = NoValue, arg7 = NoValue, arg8 = NoValue, arg9 = NoValue, arg10 = NoValue, arg11 = NoValue, arg12 = NoValue, arg13 = NoValue, arg14 = NoValue, arg15 = NoValue, arg16 = NoValue, arg17 = NoValue, arg18 = NoValue, arg19 = NoValue, arg20 = NoValue, arg21 = NoValue, arg22 = NoValue, arg23 = NoValue, arg24 = NoValue, arg25 = NoValue, arg26 = NoValue, arg27 = NoValue, arg28 = NoValue, arg29 = NoValue, arg30 = NoValue, arg31 = NoValue)
    const NoValue = null + null + null
    tmp = safearray(0, 31)
    i = 0
    while TRUE
        value = eval("arg" + i)
        if value = NoValue then
            break
        else
            tmp[i] = value
            i = i + 1
        endif
    wend
    result = slice(tmp, 0, i - 1)
fend

function @(arg0 = NoValue, arg1 = NoValue, arg2 = NoValue, arg3 = NoValue, arg4 = NoValue, arg5 = NoValue, arg6 = NoValue, arg7 = NoValue, arg8 = NoValue, arg9 = NoValue, arg10 = NoValue, arg11 = NoValue, arg12 = NoValue, arg13 = NoValue, arg14 = NoValue, arg15 = NoValue, arg16 = NoValue, arg17 = NoValue, arg18 = NoValue, arg19 = NoValue, arg20 = NoValue, arg21 = NoValue, arg22 = NoValue, arg23 = NoValue, arg24 = NoValue, arg25 = NoValue, arg26 = NoValue, arg27 = NoValue, arg28 = NoValue, arg29 = NoValue, arg30 = NoValue, arg31 = NoValue)
    result = Array(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29, arg30, arg31)
fend

はい

for item in Array("foo", "bar", "baz")
    print item
next

for item in @(1,3,5,7,9)
    print item
next

こんな感じで使えます
Array() 関数に適当に引数渡せばSafeArrayの要素として返ってくるってすんぽーよ
Array() だと書くのめんどくさいから@() という別名も用意、PowerShell使いだからすごく配列に見える

最大32個の要素を持つ配列が作れます
32なのは slctbox に倣ってるからです、とりあえず使う分には十分でしょう
(可変長引数があればね…こんなことしなくてもいいんだけど…)

const NoValue はそれぞれの引数の初期値として定義しています
おそらく絶対に渡されないであろう値ならなんでも良いんですがとりあえず null を3つ足しました
えるしってるか null は足せる(というか文字列結合してる、lengthは3になるぞ)
関数内で宣言してても const のスコープはグローバルです
なぜそんなことしてるのかと言うと、引数の初期値に変数を渡す場合はその変数がグローバルスコープじゃないとだめだからなんですね
関数内に書いてるのは外に書くと邪魔かなって気がしたからですが特に深い意味はないです

カテゴリー: UWSC

SLCT_LSTをダブルクリックで選択確定する

SLCT_LSTをダブルクリックで選択確定する

2たんで見た

SLCTBOXのSLCT_LSTで定型文字列を選べるスクリプト組んだんだけど、
マウス直下のウィンドウに貼り付ける手抜き処理なんで、OKボタンを
使わなくてもできるようにしたい。

今のトコEnterキーでやっつけてるのだけど、それをダブルクリックで
実行できるようにもしたい。

良いやり方あるかな?

実際のとここのケースなら popupmenu のが楽なのは間違いないんだけど、 SLCT_LST でダブルクリックして選びたいって思ったこと何度かあるのでじゃあやってみようぜっていう

そいや過去にUWSCでダブルクリックを検知して任意の関数を実行するモジュール書いてたっけ、これ使おう

call DoubleClick.uws

list = split("hoge fuga piyo")

DoubleClickEvent.SetEvent("ClickOk") // ダブルクリック検知開始
ret = slctbox(SLCT_LST or SLCT_STR, 0, "えらぶ", list)
DoubleClickEvent.RemoveEvent()       // ダブルクリック検知終了

if ret = -1 then exit
msgbox("選んだのは " + token("<#TAB>", ret))

procedure ClickOk
    id = getid(GET_ACTIVE_WIN)
    if status(id, ST_CLASS) = "TUslctBox_uwsc" then
        clkitem(id, "OK")
    endif
fend

はい

DoubleClickEvent モジュールについては元記事見てもらうとして
ダブルクリックを検知したら ClickOk() 関数が呼ばれます
こいつは単純にダブルクリックが検知されたときに slctbox がアクティブならOKを押すってもの
ダブルクリックされたときは間違いなくアクティブだろうというすんぽーです
ちなみにボタン以外がダブルクリックされても反応するけどそこはまぁ、紳士協定です
ちゃんとボタンだけで反応するのもできなくもないとは思うので、その場合は ClickOk() で頑張ります
僕は頑張らないが

あと、 token 使ってるのは複数選択対策です
うっかり複数選択されても一番上のだけ値を返すよっていう
僕はこの小細工をよくやる

実際何度か試してみたけどわりとゴキゲンに動作しますね
いいんじゃないかしら!
まぁきっと popupmenu 使うけども!

カテゴリー: UWSC

UWSCで色選択ダイアログを使う

balloon (fukidasi) 関数なんかに渡す色を取得できる

戻り値はbool、ダイアログのOK押したかキャンセルしたかがわかる
第一引数のcolorには色のBGR値を入れる
第二引数は色選択ダイアログの親ウィンドウIDを入れる
例えば getid(GET_FORM_WIN) とか入れるとフォームが親になる

サンプルスクリプトでは吹き出しの色を選んで変更できるよ

カテゴリー: UWSC

世界樹の迷宮Vおわりました

120時間やってた
4みたいに程よい難易度だったのでアドバンスでやってたけどだいたいどうにかなりましたよ

星喰さん以外は!

星喰さんにはついぞ勝てませんでした
あまりに勝てないので難易度ノーマルにしてみたんだけど
それでも負けたので諦めました

あとなんか図鑑が微妙に埋まってない

パーティメンバー

12人くらい作ってとっかえひっかえ運用してたけど中盤くらいからメンバーが固定されました
以下がその5人です

パキラ

あまりにも似てたので名前もそのままの子
胸のサイズだけ似てないけど

そんな経緯で作られたのでネタ枠のつもりだったんだけど実際使ってみたら面白かったのでそのままパーティメンバーに居座りました
すれ違い用のギルドカードもこの子です

通称パキちゃん、声は22番(高飛車)

紫宵

ロマン火力枠
二つ名で刀4本装備できて大興奮だったんですけど紙装甲が過ぎて重鎧は着ました
刀3本になってしまったので三途でロマンを求めることに
すぐ味方とか斬る

頭はわるい

紫宵ちゃんて呼ぶと怒る、声は34番(クール)

シンシア

封じ担当
それどころかパンチが高火力で普段は紫宵ちゃんより破壊力あるんじゃないの
ロマン火力枠より火力あるってどういうことなの
ワンツーやリードブローで三途が大変なことになるのでこの子がいないとロマンも生まれなかった

通称しーちゃん、声は37番(意地っ張り)

ポプラ

バフ担当
鎮守や脱兎で味方を守るよ (紫宵ちゃんから)
あとは分霊でHP回復を補助したり、乱舞で三途の威力を底上げしたりする

他の子と違って食が細いのでいつも心配されてる
ほんとは他の子達が食いすぎてるだけなんだけど

ポプラはポプラだよ~?声は28番(天然)

メアリーアン

のじゃロリヒーラー
チェイスハーブ、オートリザレクトと反応系回復が得意
ハーブへのこだわりが強すぎて普通の回復系ハーブが出てくるのが遅い
みんなが美味しくハーブを食べられるように風味なんかも妥協しない
その間に紫宵ちゃんが死んだりする

通称アンちゃん、声は35番(古風)

控えのメンバー

モニフクス

ドラグーンの青年、最初期にスタメンとして生まれたんだけど第一階層の途中で外され、以後街の治安を守っている
声は3番(自信家)

ミシェル

フェンサーの女の子、猪突猛進系バカだけど素直で良い子です
中盤くらいまでは魔法属性弱点のボスと戦ったりしてました、声は25番(活発)

モモ

フェンサーの女の子、ミシェルと組んでチェイスしまくります
この二人は期待したほど火力出なかったのでだんだん使わなくなっちゃった
今でもコンビで、広場にいる子供の群れを相手に奮闘している、缶けりとかする
声は36番(オドオド)

ロロ

ウォーロックの男の子、フェンサーコンビの発火役として活躍してたんだけどまぁそのつまり、そういうことだ、声は17番(冷静)
子供たちにドッヂボールとかぶつけられてる

ベルニ

ネクロマンサーの女の子、死霊はデコイになるし麻痺持ってたりして強いんだけど本人のやる気が欠けてた
職業柄服は着ないし着せようとするとパニックになる、声は39番(無口)

雪華

ハウンドの少年、初期はメアリーアンとともに複数のパーティ掛け持ちしてた有能な子
だけど新人のシンシアに封じ能力も火力も及ばなかったので引退
今は犬と鷹を連れて普通の動物を狩りながら生活してる、声は8番(弱気)

白雪

犬、みんなを唾液まみれにする

雪風

鷹、品の良さそうな顔してるけど性格はいい加減

一ヶ月間COMPだけ食べるというのをやります(やりました)

一ヶ月間COMPだけ食べるというのをやります

ずっと気になっていたCOMPだけ食ってたらどうなってしまうの?を身をもって検証します
というやつをやるあれです、これは
つらそう

これをやると

  • 体の調子はどうなるの
  • 精神的なあれはどうなの
  • うんこどうなるの

とかほら、わかる

主に #一ヶ月COMPだけ生活 というハッシュタグを付けたtweetをまとめていきます

気が向いたときにまとめて、最終的には一ヶ月分のつぶやきで埋め尽くされる予定です
長い記事になる

追記:2016/12/01

無事終わりました

追記:2016/12/05

#一ヶ月COMPだけ生活 を終えて | たっぷす庵
書きました

2016/11/01

始めたということを宣言しました

こういうのは大事です

どうやるかです
最初に明確にしておきます

さっそく弊害が出ている
先行きが不安

……?
それはそうと、このtweetの埋め込みを手作業でやっているのがちょっとどうかしてる感じがして、それが理由でこっちが頓挫しそうです
なんか楽な方法を検討しなければ存続の危機が危ない

お昼

ごちそうさまでした
このあたりでお弁当持った同僚が登場

ヒデェ

このへんは食べないともたないの

食べる量を申告しています
ちなみにこれで十分食った気になれます
朝だけ少なめにしてるので11時過ぎくらいにハラヘリに陥るんですが、お昼食べて以降は満たされています

気付きがある
勘のいい子は嫌いだよって言われるやつです

2016/11/02

COMP袋とか売ってくれてもいいのよ

すっかり日常と化してるので第三者視点でどうかって感覚は抜け落ちていた

このあたりはこれ始める前からそうだったのでまぁ、ね
ただ以前と違ってそういうときはそういうの食べればいいじゃない、ができない縛りなので今後もぐぬぬってなることが増えるのではないだろうか

ちなみにCOMPだけ食うのが不正解でCOMPも食べつつ好きなもん食うのが正解だって結論は出てる上で、これやってます
わかっててやってるのでだいじょうぶです

前日の気付きから
実際に計算してみたらかなりがっぽり食べなければいけないように見えるがほんとかよ
ちなみに一回で480ccはきついです、量が
食ってて苦しい思いをするだろうよ

発見の報告

2016/11/03

正直

2016/11/04

憎しみで人が殺せたら

太る、太るってなんだ

耐えられないんじゃないかな

なんだすりおろししょうがとか入れればいいのか
あっそれCOMP以外食べない縛りに引っかかるのでダメなんですよ

2016/11/05

TLにめし画像が多かったんだ、なんだあれわざとか

朝起きれば朝食べますが朝起きないので朝食べない

腹へってるときにうまそーに見えためし画像が余計にうまそーに見えるというのはある

2016/11/06

COMPがイカにヤバイものかみたいな記事バズらせてむしろ知名度上がってCOMP売れるみたいなの炎上得意な人とかがやってくれたらいいのにはてなブログあたりで
COMPを水で溶いたものに金魚入れるとおそらく数分で死ぬので危険なのは間違いないから!

2016/11/07

このあと一食だけ食べであとは寝込んでました
COMPとの因果関係はさっぱりです

2016/11/08

お湯で溶くとおいしくない

のどあめも例外にしよう

理解が得られないというお話
一度食ってみればわかるのにね

2016/11/09

食べたあとぽっかぽかーみたいなことはない

消費量の多さにぬかおののいていた

2016/11/10

はい

おいしい!

2016/11/11

つぶやいてなかったらしい

2016/11/12

生産量が下がる

すごいぞFF15

多かった

やったね

2016/11/13

休みの日だけどおなかすいたのでなんだかんだで食べてた

2016/11/14

リアルノマドの子が東京来てて、長野で猟師の知り合いに貰った鹿肉あるんだけど食べる?って言うわけですよ
そりゃ食べたいさ

…でも鹿肉ってCOMPじゃないじゃないですか!食べられない!

くっそー…

2016/11/15

つぶやいてなかった

2016/11/16

つい魔が差した
例外にないものを飲んでしまった

2016/11/17

安心したまえ、足りた

先日の反省が活かされている
もう過ちは繰り返さない

2016/11/18

COMP食ったら消えた

まさかこんなに仕事が早いとは…
いつももっとのんびりだろ…

喜びたまえ、足りた

2016/11/19

つぶやいてなかった、この日はしっかり三食食べたはず

2016/11/20

二週目くらいからカチカチになってきてた
硬すぎて出血する

お待ちしてます

2016/11/21

とくに何も起こることなく三週間経過してしまったので
これ多分最後までとくに何も起こりませんよ
面白みが足りない

2016/11/22

つぶやきがなかった

2016/11/23

祝日、COMPが補充された

2016/11/24

お菓子をもらったよ
おあずけだよ

夕飯
いまだかつて体験したことのない冷え方をしていた
冷製COMP

2016/11/25

2016/11/26

2日開く、さすがに毎日言うことってないんだ

2016/11/27

精神に異常をきたすとかそういうのがさぁ!ない

2016/11/28

帰宅して気付いた
朝開けてそのままだった

気にせず食べたけどなにも問題なし

2016/11/29

2016/11/30

ついに!
そして夜

最後の一杯!
とは言ったものの

区切り感がまったくなかった

終わった気になるように自己暗示ツイートをする

もうやらないことを表明することでやり終わった気持ちを強固にする

習慣になっちゃってね
翌朝おべんとうCOMPの準備しそうになるのをぐっと堪えて、そこでようやくほんとに終わったんだなという気持ちになりつつ朝食のCOMPを摂取したのであった

というわけで、終わりました
あとでなんか書きます

バイトでサイズ欲しいんだけど計算めんどいな?計算しなくていい!

500MBのダミーファイル作りたくってな
500MBって何バイト?

答え

PS> 500mb

えええ…

1.5gb なんて書いてもOK