(投稿者削除)
犬の毛 2013/6/15(Sat) 23:45:42|NO.54928
この記事は投稿者により削除されました。
2013/6/17(Mon) 00:23:47
ツノン 2013/6/16(Sun) 01:54:09|NO.54932
hspでは以下のような構文で、ダイナミックリンクライブラリの関数を使用することが出来ます。
#uselib "psapi.dll"
#func GetDeviceDriverBaseName "GetDeviceDriverBaseNameA" int,var,int
#func GetDeviceDriverFileName "GetDeviceDriverFileNameA" int,var,int
#func EnumDeviceDrivers "EnumDeviceDrivers" var,int,var
user32.dll gdi32.dll kernel32.dll 等の一般的な ライブラリは
#include "user32.as" 等で全ての関数を定義できますが、psapi.dll は標準で実装されていません。
それぞれ、引数形式などを調べて定義する必要が有ります。
KA 2013/6/16(Sun) 06:48:06|NO.54939
HSP用に変換は出来る。
言語の違いを理解していれば、そんなに難しくはない。
MillkeyStars 2013/6/16(Sun) 14:48:27|NO.54945
とりあえず、サンプルと説明をちょこっと。
#uselib "psapi.dll"
#func GetDeviceDriverBaseName "GetDeviceDriverBaseNameA" int,var,int
#func GetDeviceDriverFileName "GetDeviceDriverFileNameA" int,var,int
#func EnumDeviceDrivers "EnumDeviceDrivers" var,int,var
font "MSゴシック",12
/* C++言語
LPVOID Address[ 1024 ]; ← アドレス格納用の数値配列だから、dim
TCHAR szFileName[ 1024 ]; ← ファイル名格納用だから、sdim で 1024 バイト確保
TCHAR szBaseName[ 1024 ]; ← ベース名格納用だから、sdim で 1024 バイト確保
DWORD dwSize; ← EnumDeviceDrivers が列挙した個のバイト数を入れる為の数値変数
DWORD dwMax; ← 上記のバイト数を個数に変換の変数(1個 4バイトだから、 4 / 1)
DWORD dwNow; ← ループカウンタ用の変数。HSPでは、標準で cnt が使えるのでHSPではいらない。
// デバイスドライバのロードアドレスを取得
EnumDeviceDrivers( Address, sizeof(Address), &dwSize );
// 取得した数を求める
dwMax = (dwSize / sizeof(LPVOID));
// デバイスドライバの一覧表示
for ( dwNow = 0 ; dwNow < dwMax ; dwNow++ ){
GetDeviceDriverBaseName( Address[dwNow], szBaseName, sizeof(szBaseName) );
GetDeviceDriverFileName( Address[dwNow], szFileName, sizeof(szFileName) );
printf( "%3d: %-30s %s\n", (dwNow + 1), szBaseName, szFileName );
}
return 0;
}
*/
//以下 HSPに変換したソース
dim Address,1024
sdim szFileName,1024
sdim szBaseName,1024
dwSize = 0
dwMax = 0
EnumDeviceDrivers Address,length(Address)*4,dwSize // 第二引数は、アドレス配列に格納できるサイズ INT配列 * 1024 なので 1024 * 4
dwMax = dwSize / 4 // HSPのINT は、4バイトなので、 dwSize / 4
repeat dwMax
GetDeviceDriverBaseName Address(cnt),szBaseName,1024 // 第三引数は、上記 sdim で確保したバイト数
GetDeviceDriverFileName Address(cnt),szFileName,1024 // 〃
mes ""+strf("%3d: %-30s %s",cnt + 1,szBaseName,szFileName)
loop
こんな感じでマイクロソフトのMSDN ってサイトの説明を見ながらやれば、OK
検索などで、「HSP DWORD」とか入れて検索すると、HSPではどんなのか調べることができるからがんばってね。