Tips

HSP(Hot Soup Processor)

  • おにたま氏によるフリーのインタプリタ言語。BASICライクでシンプル。
  • HSP公式ページ

HSPの便利モノ?

  • HSPでのプログラミングで役立つかもしれないことを書いておきます。
  • 何かあったらコメント欄へどうぞ。

  • コンテンツ

コマンドラインにはどんな風に代入されるか?

  • 普段はこんな感じ
    • 1個だけ
      C:\Windows\デスクトップ\enyasar\ennya.sar
    • 2個以上
      C:\Windows\デスクトップ\enyasar\ennya.sar C:\Windows\デスクトップ\enyasar\kora.sar ...
  • ファイルパスにスペースがあると
    • 1個だけ
      "C:\Windows\デスクトップ\enyasar\ennya 16.sar"
    • 2個以上
      "C:\Windows\デスクトップ\enyasar\ennya 16.sar" "C:\Windows\デスクトップ\enyasar\kora 13.sar" ...

ファイルパスを8:3形式にしたい

  • ここを参考にして8:3形式にできます。
  • 簡単なサンプルを置いておきます。
    /* 8:3形式に直す */
    ll_dll "Kernel32.dll"
      ll_func "GetShortPathNameA"
      ll_type "PPN"
      ll_p 83path		// 結果を入れる変数
      ll_p fullpath	// 8:3形式にしたいパスが入った変数
      ll_n 83path_size	// 結果を入れる変数の大きさ(直接数値でもいい)
      ll_call
      ll_ret er
    ll_free
  • 変数[83path]を変数[83path_size]のサイズに1足した数でsdimしてください。
    • (例)83path_sizeが260だったら、sdim 83size,261とする。

デスクトップのパスを取得したい

  • 下のスクリプトを自由にいじって使ってください。モジュール化しても良しだと思います。
  • 「ここを変えれば色々取得できる」の部分は、このへんを参考にしてください。
    // ですくとっぷのパスを取ってみる
    	mref bmscr,67
    	sdim desktoppath,2048,1		// 261byte以上
    	errmsg="失敗しますた"
    
    	ll_libload hdll,"Shell32.dll"
    	ll_getproc hfunc,"SHGetMalloc",hdll
    	  ll_getptr p :ll_ret pm
    	  ll_callfunc pm,1,hfunc
    	  ll_ret res
    	  if res!0 :dialog errmsg,,"1"
    	ll_getproc hfunc,"SHGetSpecialFolderLocation",hdll
    	  pm=bmscr.13,0x0000,0		// 0x0000の所を書き換えれば取得するパスを変えられる
    	  ll_getptr p2 :ll_ret pm.2
    	  ll_callfunc pm,3,hfunc
    	  ll_ret res
    	  if res!0 :dialog errmsg,,"2"
    	ll_getproc hfunc,"SHGetPathFromIDListA",hdll
    	  pm=p2,0
    	  ll_getptr desktoppath :ll_ret pm.1
    	  ll_callfunc pm,2,hfunc
    	  ll_ret res
    	  if res=0 :dialog errmsg,,"3"
    	ll_free

背景色をWindows色にする

  • cls命令の色はどれも微妙!最初からWindows色にしてくれよ!まぁどうしようもないので下のソースをモジュール化したりしてやってください。
    	ll_dll "user32.dll"
    	ll_func "GetSysColor"		// 色を取得
    	  ll_type "N"
    	  ll_n 15
    	  ll_call
    	  ll_ret ret
    	  clr = ret & 255
    	  clg = ret >>8 & 255
    	  clb = ret >>16 & 255
    	ll_dll "Kernel32.dll"
    	ll_func "GetVersionExA"		// OSの種類を取得
    	  ll_type "P"			// (9x系とNT系では処理が変わる)
    	  sdim OSVERINFO,139,1
    	  wpoke OSVERINFO,0,148
    	  ll_p OSVERINFO
    	  ll_call
    	  ll_ret ret
    	wpeek ret,OSVERINFO,16
    	if ret=1 :clr-- :clg-- :clb--
    
    	/* 塗りつぶし */
    	color clr,clg,clb :boxf 0,0,winx,winy
    	color

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-03-25 (木) 23:46:51