>僕は、友達をジョークソフトでビビらす計画を立てています。
GENKIさんが、仰られているように、笑い事じゃすまなくなるので注意してください。
また正常に動作するまで確認する場合、自分の端末が起動するたびに
シャットダウンする状態になり、自業自得になる可能性もありますので注意してください。
それでもよければ、ある程度ググりましたので、少しアドバイスを^^;
>ですがHDLでシャットダウンと検索しても出ませんでした。
シャットダウンする方法は、moritoshiさんが仰られているように
exec "cmd.exe shutdown -s" 命令を使用するか
sysexit 2 命令を使用する方法があります。
でシャットダウンするときに気をつけなければならないのが、
↓のサイトに記載されていましたが、
OSのシャットダウン権限を持っていなければならないようです。
その方法も↓のサイトに記載されているので、参考にしてみるとよいかと。
http://lldev.jp/hsp/module/exit_windows_nt.html
>しかも、どうやって2回数えるかも調べましたがどうもよくわかりません。
メモリの内容は、電源が落ちたら消えてしまうので、
moritoshiさんが仰られているように、または↓のサイトに記載されているように
テキストファイルに回数を記録しておけばよいと思います。
http://geocities.yahoo.co.jp/gl/gbmogiki/view/20090113/1231849411
以下にサンプルスクリプトを記載しますので、参考にしてみるといいかも。
#include "hspext.as"
// マクロの宣言
#define INI_FILE_NAME "HSP.ini"
// 定数の宣言
#const SYSEXIT_TYPE_LOGOFF 0 // ログオフ
#const SYSEXIT_TYPE_REBOOT 1 // 再起動
#const SYSEXIT_TYPE_SHUTDOWN 2 // シャットダウン
// グローバル変数宣言
g_strBufferAll = ""
g_strBufferLine = ""
g_nBufferLine = 0
// 対象バッファを指定する
notesel g_strBufferAll
// 指定したファイルのバッファを読み込む
// ※読み込んだデータは、notesel命令で指定した
// g_strBufferAllに格納される
noteload INI_FILE_NAME
// 読み込んだバッファから1行目のデータを読み込む
noteget g_strBufferLine, 0
// 1行目のデータを表示する
mes g_strBufferLine
// notesel, noteget命令の引数の指定した変数は、
// 文字列型になるので、整数型に変換する
g_nBufferLine = int(g_strBufferLine)
// データが2以上の場合
if (g_nBufferLine >= 2) {
// デバッグメッセージを出力する
mes "自動自己削除処理を行います"
// HSPを一時停止する
stop
// データが2未満の場合
} else {
// デバッグメッセージを出力する
mes "シャットダウン処理を行います"
// 起動した回数をカウントアップする
g_nBufferLine = g_nBufferLine + 1
// カウントアップした回数を文字列に変換する
g_strBufferLine = str(g_nBufferLine)
// 文字列を指定した行に上書きする
noteadd g_strBufferLine, 0, 1
// 変更したバッファを指定ファイルに保存する
notesave INI_FILE_NAME
// Windowsシステムをシャットダウンする
// sysexit SYSEXIT_TYPE_SHUTDOWN
// HSPを終了する
// end
// HSPを一時停止する
stop
}