goo blog サービス終了のお知らせ 
goo

「ll_getproc」で関数のポインタ取得

一覧リスト:HSP Ver2.61ブログ関連その他 ・・・ 人気blogランキング

「ll_getproc」
「ll_llibload」を使用して読み込んだDLLのハンドルを使用して
任意の関数名のポインタを取得します。
※関数のポインタは「ll_callfunc」(関数を呼び出す命令)
で必要になります。

◆書式
ll_getproc v1,"s2",n3
v1 : 関数のポインタを受けるための変数
s2 : 文字列又は文字列変数
n3 : ll_libloadで取得したDLLのハンドル
「ll_libload」参照)
コメント ( 0 ) | Trackback ( 0 )

「ll_libfree」を忘れずに

一覧リスト:HSP Ver2.61ブログ関連その他 ・・・ 人気blogランキング

「ll_libfree」
「ll_llibload」を使用して読み込んだDLLを開放します。
※解放を忘れると、他のソフトが起動できなくなったり
不具合が発生する可能性があります。


◆書式
ll_libfree n1
n1には「ll_libload」の1番目の引数の変数(DLLのハンドルが格納されています)
を指定します。
「ll_libload」参照)
コメント ( 0 ) | Trackback ( 0 )

「ll_libload」でDLLを使用する

一覧リスト:HSP Ver2.61ブログ関連その他 ・・・ 人気blogランキング

「ll_libload」
「llmod.as」をインクルードして「dllproc」命令で
6つのDLLを使用することができますが、
「llmod.as」を使用せずに自分で任意のDLLを使用することができます。

◆書式
ll_libload v1,"s2"
v1 : DLLのハンドルを受けるための変数
s2 : DLLの名前が入った文字列変数又は文字列

◆ロードしたDLLの関数使用方法
  1. 「ll_libload」でDLLをロードして、DLLのハンドルを取得します。
    2でこのハンドルを使います。
  2. 「ll_getproc」で関数のポインタを取得します。
    3でこのポインタを使います。
  3. 「ll_callfunc」で関数を呼び出します。
  4. これ以上DLLを使用しない場合は
    「ll_libfree」でDLLを解放します。
「user32.dll」をロードするサンプル
    //ウィンドウの位置を0,0 サイズを200,50に
    screen 0 , dispx , dispy
    width 200 , 50 , 0 , 0

    //bmscr.13にウィンドウハンドルが入っています
    mref bmscr,67

    //「hdll」に「USER32.DLL」のハンドルが入ります
    ll_libload hdll , "USER32.DLL"

    //読み込んだDLLの使用
    //「MoveWindow」関数のポインタ取得
    ll_getproc movewnd , "MoveWindow" , hdll

    //関数を呼び出しがわかるようにダイアログ表示
    dialog "MoveWindow を呼び出します"

    //ウィンドウの位置を100,200 サイズを300,400に変更
    prm=bmscr.13 , 100 , 200 , 300 , 400,  1
    ll_callfunc prm , 6 , movewnd

    pos 70 , 185 : mes "移動、サイズ変更完了!"

    //※必ずDLLを解放すること
    ll_libfree hdll
    stop
コメント ( 0 ) | Trackback ( 0 )

「#define」について

一覧リスト:HSP Ver2.61ブログ関連その他 ・・・ 人気blogランキング

「#define」
#define マクロ名 マクロ定義
マクロ名で指定したキーワードをマクロ定義に置き換えます。
コードの変更、表記などが楽になります。

※#defineはあくまで、文字を置き換えているだけですので、
頻繁に使用するものではありません。
※大文字で書いてある部分がありますが、HSPは大文字と小文字は同じ意味です。
#define定義している事を判りやすくするために大文字にしています。

例)
#define SIZE 100
mes ""+SIZE
stop
「mes」の出力は、「100」になります。
SIZEが100に置き換えられています(マクロ)。

- 使用例 -
左がマクロ、右がマクロ展開時です
①頻繁に使われて、後から変更しない場合
#defineの部分を変更するだけで済むので後からの変更が簡単です
#define WINDOWXSIZE 640
#define WINDOWYSIZE 480
#define TITLENAME "SOFTNAME"

screen 0,WINDOWXSIZE,WINDOWYSIZE
title TITLENAME
screen 0,640,480
title "SOFTNAME"
②長い計算式を短く表記したい場合
#define KEISAN(%1,%2,%3) %1*%1*%1+(%2*%2)-(%3)

a=KEISAN 2,3,4
a=2*2*2+(3*3)-(4)
③HSP命令文を含めて、初期値をつける場合
#define MESSAGE(%1="丸",%2="三角") mes %1+"と"+%2

MESSAGE ,"四角"
mes "丸"+"と"+"四角"
④特殊マクロを使用する場合
#define start(%1) %tstart %s1 mes "START"
#define owari %tstart mes %o

start "OK"
owari
mes "START"
mes "OK"
コメント ( 0 ) | Trackback ( 0 )

「stick」命令について

一覧リスト: HSP Ver2.61 ・ ブログ関連  ・ その他 ・・・ 人気blogランキング

「stick」命令
ゲームのキャラクター移動など操作関連の
キー取得したい場合に使用します。
※文字コードは取得できません。
stick p1,p2,p3
p1=変数
読み込むための変数
以下左の数値が代入されます。
1 カーソルキー左(←)
2 カーソルキー上(↑)
4 カーソルキー右(→)
8 カーソルキー下(↓)
16 スペースキー
32 Enterキー
64 Ctrlキー
128 ESCキー
256 マウスの左ボタン
512 マウスの右ボタン
1024 TABキー
p2=0~(0)
非トリガータイプキー指定
例えば、ENTERキー32を指定するとENTERを押し続けている間も
検知します。他のキーは押した瞬間しか検知しません。
p3=0~1(0)
ウインドゥアクティブチェックON/OFF
0を指定するとウィンドウが非アクティブでも入力受け付けます。
1は逆にアクティブでないと受け付けません。
「stick」サンプル
    screen 0,300,50
    sdim titlename,1024
    titlename="「stick」サンプル"
    title titlename+" "+"引数省略"
    font "",12
    objmode 2,1
    objsize 100,20
    pos   0 , 0 : button "引数省略",*btn
    pos 100 , 0 : button "非トリガー:ENTER",*btn
    pos 200 , 0 : button "アクティブのみ",*btn

*main
    //描画の表示をストップ
    redraw 0
    color : boxf
    color 255,255,255

    st=0
    if bt=0:stick st
    if bt=1:stick st,32,0
    if bt=2:stick st,,1
    pos 10,30
    mes "取得キー"+st

    //上記描画の表示
    redraw 1
    wait 10
goto *main

*btn
   bt=stat
   if bt=0:title titlename+" "+"引数省略"
   if bt=1:title titlename+" "+"非トリガー:ENTER"
   if bt=2:title titlename+" "+"アクティブのみ"
goto *main


コメント ( 0 ) | Trackback ( 0 )
« 前ページ 次ページ »