notepad.exe(ジョークソフト)を youtube に載ってるのを再現してみました(笑)
URL
https://www.youtube.com/watch?v=b9ib5e0qYjk
//拡張子読み込み
#include "user32.as"
#include "shell32.as"
#define WM_SIZE 0x0005
#define ctype LOWORD(%1) (%1 & $FFFF)
#define ctype HIWORD(%1) (%1 >> 16 & $FFFF)
#define WS_EX_TOOLWINDOW $80
#enum IDM_KOUMOKU11 = 1
#enum IDM_KOUMOKU12
#enum IDM_KOUMOKU13
#enum IDM_KOUMOKU14
#enum IDM_KOUMOKU15
#enum IDM_KOUMOKU16
#enum IDM_KOUMOKU17
#enum IDM_KOUMOKU21
#enum IDM_KOUMOKU22
#enum IDM_KOUMOKU23
#enum IDM_KOUMOKU24
#enum IDM_KOUMOKU25
#enum IDM_KOUMOKU26
#enum IDM_KOUMOKU27
#enum IDM_KOUMOKU28
#enum IDM_KOUMOKU29
#enum IDM_KOUMOKU210
#enum IDM_KOUMOKU211
#enum IDM_KOUMOKU31
#enum IDM_KOUMOKU32
#enum IDM_KOUMOKU41
#enum IDM_KOUMOKU51
#enum IDM_KOUMOKU52
#module
#uselib "user32.dll"
#func MessageBox "MessageBoxA" int, sptr, sptr, int
#deffunc MsgBox str prompt, int buttons, str MsgTitle
MessageBox hwnd, prompt, MsgTitle, MB_OKCANCEL | buttons
return
#global
//ウィンドウ作成
screen 0,ginfo(20),ginfo(21),0
//ウィンドウの最大化最小化使用を可能
GetWindowLong hwnd, -16
SetWindowLong hwnd, -16, stat | $10000 | $40000
//変数管理
sdim text
fontname = "MS ゴシック"
fontsize = 20
fontmode = 0
//ウィンドウサイズ変更
width 640,480
ExtractIcon hinstance, "theme\\NOTEPAD.ico", 0
sendmsg hwnd, $80, 1, stat
//ロード
exist "theme\\notepad.ini"
if strsize != -1 {
notesel loaddata
noteload "theme\\notepad.ini"
noteget WindowSizeX,2
noteget WindowSizeY,4
noteget WindowX,6
noteget WindowY,8
width int(WindowSizeX),int(WindowSizeY),int(WindowX),int(WindowY)
}
*reset
//タイトルバー
if textname = "" : textname = "無題"
title ""+textname+" - メモ帳"
//ウィンドウ削除
clrobj
//オブジェクト作成
CreatePopupMenu
hMenu.5 = stat
AppendMenu hMenu.5, 0, IDM_KOUMOKU51, "ヘルプの表示(&H)"
AppendMenu hMenu.5, $800, 0, ""
AppendMenu hMenu.5, 0, IDM_KOUMOKU52, "バージョン情報(&A)"
CreatePopupMenu
hMenu.4 = stat
AppendMenu hMenu.4, 0, IDM_KOUMOKU41, "ステータス バー(&S)"
CreatePopupMenu
hMenu.3 = stat
AppendMenu hMenu.3, 0, IDM_KOUMOKU31, "右端で折り返す(&W)"
AppendMenu hMenu.3, 0, IDM_KOUMOKU32, "フォント(&F)"
CreatePopupMenu
hMenu.2 = stat
AppendMenu hMenu.2, 0, IDM_KOUMOKU21, "元に戻す(&U) &Ctrl+Z"
AppendMenu hMenu.2, $800, 0, ""
AppendMenu hMenu.2, 0, IDM_KOUMOKU22, "切り取り(&T) &Ctrl+X"
AppendMenu hMenu.2, 0, IDM_KOUMOKU23, "コピー(&C) &Ctrl+C"
AppendMenu hMenu.2, 0, IDM_KOUMOKU24, "貼り付け(&P) &Ctrl+V"
AppendMenu hMenu.2, 0, IDM_KOUMOKU25, "削除(&L) &Del"
AppendMenu hMenu.2, $800, 0, ""
AppendMenu hMenu.2, 0, IDM_KOUMOKU26, "検索(&F) &Ctrl+F"
AppendMenu hMenu.2, 0, IDM_KOUMOKU27, "次を検索(&N) &F3"
AppendMenu hMenu.2, 0, IDM_KOUMOKU28, "置換(&R) &Ctrl+H"
AppendMenu hMenu.2, 0, IDM_KOUMOKU29, "行へ移動(&G) &Ctrl+G"
AppendMenu hMenu.2, $800, 0, ""
AppendMenu hMenu.2, 0, IDM_KOUMOKU210, "すべて選択(&A) &Ctrl+A"
AppendMenu hMenu.2, 0, IDM_KOUMOKU211, "日付と時刻(&D) &F5"
CreatePopupMenu
hMenu.1 = stat
AppendMenu hMenu.1, 0, IDM_KOUMOKU11, "新規(&N) &Ctrl+N"
AppendMenu hMenu.1, 0, IDM_KOUMOKU12, "開く(&O) &Ctrl+O"
AppendMenu hMenu.1, 0, IDM_KOUMOKU13, "上書き保存(&S) &Ctrl+S"
AppendMenu hMenu.1, 0, IDM_KOUMOKU14, "名前を付けて保存(&A)..."
AppendMenu hMenu.1, $800, 0, ""
AppendMenu hMenu.1, 0, IDM_KOUMOKU15, "ページ設定(&U)"
AppendMenu hMenu.1, 0, IDM_KOUMOKU16, "印刷(&P) (&Ctrl+P)"
AppendMenu hMenu.1, $800, 0, ""
AppendMenu hMenu.1, 0, IDM_KOUMOKU17, "メモ帳の終了(&X)"
CreateMenu
hMenu.0 = stat
AppendMenu hMenu.0, $10, hMenu.1, "ファイル(&F)"
AppendMenu hMenu.0, $10, hMenu.2, "編集(&E)"
AppendMenu hMenu.0, $10, hMenu.3, "書式(&O)"
AppendMenu hMenu.0, $10, hMenu.4, "表示(&V)"
AppendMenu hMenu.0, $10, hMenu.5, "ヘルプ(&H)"
SetMenu hwnd, hMenu.0
DrawMenuBar hwnd
gosub *textboxdraw
//コマンド
oncmd gosub *command, $111
oncmd *reset,WM_SIZE
onexit gosub *exit
//メモ帳のメイン画面
*NotepadMainLoop
//描画開始
redraw 0
//背景
color 0,128,255 : boxf
//処理
if clrsw = 1 : clrobj
//描画終了
redraw 1
//時間待ち
await 1
goto *NotepadMainLoop
*textboxdraw
clrobj
if clrsw = 0{
objmode 2 : font fontname,fontsize,fontmode
pos 1,1 : mesbox text,ginfo_winx-1,ginfo_winy-1,5,2147483647
}
return
*command
if lparam = 0 {
wID = LOWORD(wparam)
;dialog "wID = "+wID
if wID = IDM_KOUMOKU11{
MsgBox "メモなんてひとつあれば十分だろ",48,"NOTEPAD"
MsgBox "それくらい考えろ",16,"NOTEPAD"
}
if wID = IDM_KOUMOKU12{
MsgBox "開く?なにを?",48,"NOTEPAD"
MsgBox "ああ、そうかそうか",48,"NOTEPAD"
MsgBox "このメモ帳がそんなに気に入ったか",64,"NOTEPAD"
MsgBox "もうひとつ起動したいんだろ?",32+4,"NOTEPAD"
if stat = 6{
exist "notepad.exe"
if strsize = -1{
MsgBox "すまん失敗した",16,"NOTEPAD"
return
}
exec "notepad.exe",16
}
if stat = 7{
exist "notepad.exe"
if strsize = -1{
return
}
MsgBox "遠慮するなよ",48,"NOTEPAD"
exec "notepad.exe",16
}
}
if wID = IDM_KOUMOKU13{
MsgBox "は?どのファイルを上書きするんだ?",48,"NOTEPAD"
MsgBox "ワケわかんないこと言うな",16,"NOTEPAD"
}
if wID = IDM_KOUMOKU14{
MsgBox "やっぱバックアップは大事だよ",64,"NOTEPAD"
MsgBox "もしもの時に備えてたくさん保存しないと",64,"NOTEPAD"
buf = {"' Backup by NOTEPAD.EXE
MsgBox\"ゴミファイル\",vbExclamation,\"NOTEPAD\"
MsgBox\"なんの役にも立たない\",vbExclamation,\"NOTEPAD\"
MsgBox\"ボタン押してるヒマがあったらさっさと捨てろよ\",vbCritical,\"NOTEPAD\"
"}
repeat 100,1
notesel buf
notesave dir_desktop+"\\ゴミファイル("+cnt+").vbs"
loop
MsgBox "100個くらい保存しといたから安心だな",64,"NOTEPAD"
}
if wID = IDM_KOUMOKU15{
MsgBox "いいよそんな面倒なことしないで",48,"NOTEPAD"
MsgBox "紙なんてどれも同じだろ",48,"NOTEPAD"
MsgBox "面倒なこと言うんじゃない",16,"NOTEPAD"
}
if wID = IDM_KOUMOKU16{
MsgBox "印刷?なんでオレがしなきゃいけないの?",48,"NOTEPAD"
MsgBox "自分で紙にでも書いとけば?",16,"NOTEPAD"
}
if wID = IDM_KOUMOKU17{
MsgBox "こんな便利なメモ帳終了すんのかキミは",48,"NOTEPAD"
MsgBox "もっと使え",16,"NOTEPAD"
}
if wID = IDM_KOUMOKU21{
MsgBox "は?元に戻す?",48,"NOTEPAD"
MsgBox "もう忘れた",48,"NOTEPAD"
MsgBox "もっとはやく言え",16,"NOTEPAD"
}
if wID = IDM_KOUMOKU22{
MsgBox "仕方ねーな",48,"NOTEPAD"
MsgBox "切り取ってやるか",48,"NOTEPAD"
clrobj
clrsw = 1
MsgBox "おわったぞ",64,"NOTEPAD"
}
if wID = IDM_KOUMOKU23{
MsgBox "コピー?",48,"NOTEPAD"
MsgBox "まかせとけ",64,"NOTEPAD"
exist "notepad.exe"
if strsize = -1{
MsgBox "すまん失敗した",16,"NOTEPAD"
return
}
exec "notepad.exe",16
MsgBox "コピー完了",64,"NOTEPAD"
}
if wID = IDM_KOUMOKU24{
MsgBox "どこに張り付けるんだ?",48,"NOTEPAD"
MsgBox "ま、どこでもいっか",64,"NOTEPAD"
repeat 500,1
randomize
bx = rnd(ginfo(20)) : by = rnd(ginfo(21))
bgscr cnt,25,25,0,bx,by
gsel cnt,2
color rnd(256),rnd(256),rnd(256)
font "MS ゴシック",rnd(50),rnd(17)
pos 0,0 : mes rnd(10)
GetWindowLong hwnd, -20
SetWindowLong hwnd, -20, stat | $80000 | WS_EX_TOOLWINDOW
SetLayeredWindowAttributes hwnd, 0xffffff, 64, 2
loop
gsel 0,2
MsgBox "おわったおわった",64,"NOTEPAD"
}
if wID = IDM_KOUMOKU25{
MsgBox "削除か",48,"NOTEPAD"
MsgBox "まあやってみるよ",48,"NOTEPAD"
text = ""
repeat 300
repeat 10
text = text + "(・∀・)"
loop
text = text + "\n"
loop
gosub *textboxdraw
MsgBox "あ",48,"NOTEPAD"
MsgBox "失敗した",48,"NOTEPAD"
MsgBox "すまんすまん、はっはっは",16,"NOTEPAD"
}
if wID = IDM_KOUMOKU26{
MsgBox "このメモ帳のなかを検索するのか",48,"NOTEPAD"
MsgBox "まったくキミは小さい考えの持ち主だな",48,"NOTEPAD"
MsgBox "もっとでっかくいこう",64,"NOTEPAD"
exec "https://www.google.co.jp/#spf=1",16
}
if wID = IDM_KOUMOKU27{
MsgBox "次?次って何の次だよ",48,"NOTEPAD"
MsgBox "わけわかんねーよ",16,"NOTEPAD"
}
if wID = IDM_KOUMOKU28{
MsgBox "またそんな面倒な…",48,"NOTEPAD"
MsgBox "仕方ない",48,"NOTEPAD"
text = ""
repeat 300
repeat 10
text = text + "ーーーのーとぱっとーーー"
loop
text = text + "\n"
loop
gosub *textboxdraw
MsgBox "置き換えてやったぞ",64,"NOTEPAD"
}
if wID = IDM_KOUMOKU29{
MsgBox "はぁーやれやれ移動するとするか",48,"NOTEPAD"
text = ""
repeat 300
repeat 10
text = text + " "
loop
text = text + "\n"
loop
gosub *textboxdraw
MsgBox "終わったぞ",64,"NOTEPAD"
MsgBox "おい",48,"NOTEPAD"
MsgBox "疲れた",16,"NOTEPAD"
}
if wID = IDM_KOUMOKU210{
MsgBox "ヤダ",48,"NOTEPAD"
MsgBox "そんなことくらい自分でやれ",16,"NOTEPAD"
}
if wID = IDM_KOUMOKU211{
MsgBox "今日何日だっけ?",48,"NOTEPAD"
MsgBox "まあだいたいこれくらいだろ",48,"NOTEPAD"
randomize
text = text + "\nたぶん "+(gettime(0)*2+rnd(50))+"年"+(gettime(1)-rnd(5))+"月"+(gettime(3)-rnd(5))+"日 "+(gettime(4)-rnd(10))+"時"+(gettime(4)-rnd(10))+"分"+(gettime(4)-rnd(10))+"秒 くらい"
gosub *textboxdraw
}
if wID = IDM_KOUMOKU31{
MsgBox "なんで折り返すの?",48,"NOTEPAD"
MsgBox "広々としてたほうがいいだろ",48,"NOTEPAD"
MsgBox "まったく",48,"NOTEPAD"
MsgBox "心の狭いヒトだねキミは",16,"NOTEPAD"
MsgBox "さようなら、もう起動しなくていいよ",16,"NOTEPAD"
gosub *Save
end
}
if wID = IDM_KOUMOKU32{
MsgBox "フォント変えるの?",48,"NOTEPAD"
MsgBox "仕方ねーな",48,"NOTEPAD"
MsgBox "オレが選んでやるからありがたく思えよ",48,"NOTEPAD"
randomize
fontrnd = rnd(10)
if fontrnd = 0 : fontname = "MS ゴシック"
if fontrnd = 1 : fontname = "MS 明朝"
if fontrnd = 2 : fontname = "Meiryo UI"
if fontrnd = 3 : fontname = "Meiryo UI Bold"
if fontrnd = 4 : fontname = "Meiryo UI Bold Italic"
if fontrnd = 5 : fontname = "Meiryo UI Italic"
if fontrnd = 6 : fontname = "Microsoft PhagsPa"
if fontrnd = 7 : fontname = "游ゴシック"
if fontrnd = 8 : fontname = "メイリオ"
if fontrnd = 9 : fontname = "?????????????????"
fontsize = rnd(80)+20
fontmode = rnd(17)
gosub *textboxdraw
MsgBox "変えてやったぞ",64,"NOTEPAD"
}
if wID = IDM_KOUMOKU41{
MsgBox "すてーたすばってなに?",64,"NOTEPAD"
MsgBox "そんな高度そうな機能ついてるワケないじゃん",64,"NOTEPAD"
MsgBox "オレはただのメモ帳だよ?",48,"NOTEPAD"
MsgBox "ムリ言うな",16,"NOTEPAD"
}
if wID = IDM_KOUMOKU51{
MsgBox "ヘルプ?そんなもんないよ",48,"NOTEPAD"
MsgBox "使い方ぐらい自分で考えろよ",48,"NOTEPAD"
MsgBox "オレは誰にでも使える便利なメモ帳だぞ",16,"NOTEPAD"
}
if wID = IDM_KOUMOKU52{
MsgBox "バージョン?そんなの聞いてどうするの?",48,"NOTEPAD"
MsgBox "ヤダ",16,"NOTEPAD"
MsgBox "教えない",16,"NOTEPAD"
}
return
}
gosub *Save
return
*exit
gosub *Save
MsgBox "ヤダ",16,"NOTEPAD"
MsgBox "もっと使え",16,"NOTEPAD"
return
*Save
data == "(notepad.ini)\n"
data += "WindowSizeX=\n"
data += ""+ginfo_winx+"\n"
data += "WindowSizeY=\n"
data += ""+ginfo_winy+"\n"
data += "WindowX=\n"
data += ""+ginfo(4)+"\n"
data += "WindowY=\n"
data += ""+ginfo(5)+"\n"
notesel data
notesave "notepad.ini"
return