GetSystemPowerStatusを使いたいのですが・・・

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: GetSystemPowerStatusを使いたいのですが・・・

Re: GetSystemPowerStatusを使いたいのですが・・・

by Mario2 » 2005年8月29日(月) 18:27

> いえ、今回エラーが起きた箇所は If文ではないと思います。
> ぱっと見ただけなので確実ではないのですが、原因はMessageBox()で値を表示するときに、第2引数において Str$() で数値を文字列化していないため、アクセス違反が起きてしまうのではないでしょうか。
確かに、メッセージボックスにStr$()を追加するとアクセス違反が起きなくなりました。
ありがとうございます。

Re: GetSystemPowerStatusを使いたいのですが・・・

by tak » 2005年8月29日(月) 17:15

> ここのページを参考に
> 電源の状態を取得できるGetSystemPowerStatusと言うのを使いたいのですが、「アクセス違反」がでてしまい、上手く出来ません。

> (多分)If GetSystem~の部分でアクセス違反が出ています。
> (ソース行が多いせいなのか、別の行をエラーとして表示されていました)

いえ、今回エラーが起きた箇所は If文ではないと思います。
ぱっと見ただけなので確実ではないのですが、原因はMessageBox()で値を表示するときに、第2引数において Str$() で数値を文字列化していないため、アクセス違反が起きてしまうのではないでしょうか。

こんな場合に #strict を有効活用したいものです。

GetSystemPowerStatusを使いたいのですが・・・

by Mario2 » 2005年8月29日(月) 16:50

ここのページを参考に
電源の状態を取得できるGetSystemPowerStatusと言うのを使いたいのですが、「アクセス違反」がでてしまい、上手く出来ません。

コード: 全て選択

Declare Function GetSystemPowerStatus Lib "kernel32.dll" _
(ByRef lpSystemPowerStatus As SYSTEM_POWER_STATUS) As Long

Type SYSTEM_POWER_STATUS
ACLineStatus As Byte	'ACパワーの状態を示す定数の組み合わせ
BatteryFlag As Byte 'バッテリチャージの状態を表す定数の組み合わせ
BatteryLifePercent As Byte 'バッテリの残り容量のパーセント(0~100)
	'255のとき不明
Reserved1 As Byte '常に0
BatteryLifeTime As Long 'バッテリーの残り秒数(&Hffffffffのとき不明)
BatteryFullLifeTime As Long 'フルチャージ時の残り秒数(同上)
End Type

Dim PowerStatus As *SYSTEM_POWER_STATUS
Dim pPowerStatus As SYSTEM_POWER_STATUS
IF GetSystemPowerStatus(pPowerStatus)=0 Then End
MessageBox(hMainWnd,pPowerStatus.ACLineStatus,0,0)
MessageBox(hMainWnd,pPowerStatus.BatteryFlag,0,0)
MessageBox(hMainWnd,pPowerStatus.BatteryLifePercent,0,0)
MessageBox(hMainWnd,pPowerStatus.Reserved1,0,0)
としているのですが、(多分)If GetSystem~の部分でアクセス違反が出ています。
(ソース行が多いせいなのか、別の行をエラーとして表示されていました)

自分なりにがんばってみたのですが、取得できませんでした。
どうすれば良いのか、よろしくお願いします。

ページトップ