HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1105
kanzakiwin32apiを使用する際の、データー型に関しての質問4解決


kanzaki

リンク

2006/11/5(Sun) 20:45:27|NO.3249

win32apiに関する、データー型の扱いの質問です。
WIN32api(今回はkeybd_event)を使用したくて調べてみましたら

VOID keybd_event(
BYTE bVk, // 仮想キーコード
BYTE bScan, // ハードウェアスキャンコード
DWORD dwFlags, // 動作指定フラグ
ULONG_PTR dwExtraInfo // 追加情報
);

とありました。

BYTE は 8bit、 DWORD は 32bit、 ULONG は 32bit(?) です。
#func の解説を見ると、使用できる型は32bitのものばかりです。
これは、気にしなくても良いのでしょうか?
変数の内容を判別してbit数を調整しているのでしょうか?
ビットずれなど起きないのでしょうか?
いまいち、HSPで言っている変数の型と、他言語における変数の型の関係が把握できておりません。


一応

#uselib "user32.dll"
#cfunc keybd_event "keybd_event" int,int,int,int

repeat 5 : title ""+(4-cnt)+"秒前" : wait 100 : loop

mes keybd_event(0x41, 0, 0, 0)
mes keybd_event(0x41, 0, 0x0002, 0)

とすれば、キー入力はされますが、
繰り返しているうちに不安定にならないか?とか、システムによる動作の差が無いか?と心配です。
hspext.dllを使用すればよいのでしょうが、DLLが存在しない場合も想定して
是非ご教示願いたい部分です。


参考
http://yokohama.cool.ne.jp/chokuto/urawaza/api/keybd_event.html



この記事に返信する


TZ

リンク

2006/11/5(Sun) 22:25:31|NO.3250

> BYTE は 8bit、 DWORD は 32bit、 ULONG は 32bit(?) です。
> #func の解説を見ると、使用できる型は32bitのものばかりです。
> これは、気にしなくても良いのでしょうか
気にしなくて良いです。
kanzakiさんの使い方であってます。



kanzaki

リンク

2006/11/6(Mon) 04:34:09|NO.3255

TZ様 ご丁寧に有難う御座います。
気にしなくとも良いとの事、了解しました。



ゆちボン

リンク

2006/11/7(Tue) 17:16:29|NO.3288

ちなみに、

>ULONG は 32bit(?)
C言語で言ったら

int

ActiveBasicでは

Long

のことです。
って、C言語は「ハローワールド」が限界なんですが(^^;

さらに、

Long(int) 符号付き32ビット整数型 -2147483648 〜 2147483647
DWord   符号無し32ビット整数型 0      〜 4294967295

です。
無駄なことを書き込み、すいません。



kanzaki

リンク

2006/11/10(Fri) 02:53:28|NO.3325

ゆちボンさま ご解説有難う御座います。

変数の型なのですが
一番の疑問は、8bitのBYTE型をどうやってHSPで表現したらよいのか…と言う事と

ULONG_PTRとULONGは同一視しても良いのか?
と言う事の意味合いでULONGに疑問符(?)を書いてみました。

調べてみました所、
http://win64xp.impress.co.jp/programming/index.htm

>>〜PTRという名前のポータブルメソッドとよばれるポインタ型が用意されている。
>>ポータブルメソッドを使えば、ポインタの精度やサイズに悩むことなく、
>>32bit、64bitの両方に対応したWindowsアプリケーションを書くことができる。
と、在りました。

ULONG_PTRが、変数のメモリー上のアドレスを示す型である事までは何となく理解できたのですが
32bit、64bitの両方に対応するアプリケーションを〜 と言う事で後者の場合intが32bitなのか64bitなのか
よく解らなかったのですが、HSPの場合は気にするだけ無意味かもしれません。
cをかじった(私も高度な事はできません)時に、intのサイズが環境によって変わるとかの記憶が微妙に残っていて
妙な先入観が在ったんだと思います。


早速、aplkey,aplkeyd,aplkeyu,aplstrの機能を拡充した関数をモジュール化できました。
自分自身に最適化してしまったので、とても公開できませんけど^^;
DLLを使わなくとも可能な事が増えると言うのはとても魅力的です。



ONION software Copyright 1997-2023(c) All rights reserved.