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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0615
犬の毛 (投稿者削除)3未解決


犬の毛

リンク

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ではどんなのか調べることができるからがんばってね。



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