#include "HSP3utf.as" #include "kernel32 […]
#include "HSP3utf.as" #include "kernel32 […]
#include "HSP3utf.as"#include "kernel32.as"#define WM_MOUSEMOVE 0x0200screen 0, 1600, 900font "メイリオ", 13randomizeoncmd gosub *WM_MOUSEMOVE_, WM_MOUSEMOVEcount = 0stop/*マウルカーソルを画面上で動かすとWM_MOUSEMOVEを捕捉して以下のサブルーチンが実行されますしばらく動かしてるとスッ…とプロセスが落ちるよ!艦これ一覧めいかー改二はこのバグに悩まされていたんDA★*/*WM_MOUSEMOVE_//アルファベット、ひらがなカタカナ混合の64~128文字の文字列を作成し変数に代入するutf8 = makeRandomString()//UTF-16に変換したときの文字数を取得するwideLen = MultiByteToWideChar(65001, 0, varptr(utf8), strlen(utf8), 0, 0)//UTF-16の文字列は1文字2Byteなので終端文字まで含めたバッファを確保する(指定はByte)sdim wide, wideLen*2+2//画面に作成した文字列を表示させるmes utf8//必要な領域をちゃんと確保したバッファにHSPの標準命令でUTF-8→UTF-16に変換するcnvstow wide, utf8if (count\50==0):clscount++return#module#defcfunc makeRandomStringsdim output, 1024sdim toutIdx = 0repeat 64+rnd(64)switch rnd(5)case 0t = "!"poke t, 0, peek(t,0)+rnd(93)poke output, outIdx, peek(t, 0)outIdx++swbreakcase 1t = "ぁ"poke t, 2, peek(t,2)+rnd(63)wpoke output, outIdx, wpeek(t, 0)poke output, outIdx+2, peek(t, 2)outIdx += 3swbreakcase 2t = "む"poke t, 2, peek(t,2)+rnd(23)wpoke output, outIdx, wpeek(t, 0)poke output, outIdx+2, peek(t, 2)outIdx += 3swbreakcase 3t = "ァ"poke t, 2, peek(t,2)+rnd(31)wpoke output, outIdx, wpeek(t, 0)poke output, outIdx+2, peek(t, 2)outIdx += 3swbreakcase 4t = "ダ"poke t, 2, peek(t,2)+rnd(59)wpoke output, outIdx, wpeek(t, 0)poke output, outIdx+2, peek(t, 2)outIdx += 3swbreakswendloopreturn output#global