タイトル : Re: SPI_SETFOREGROUNDLOCKTIMEOUTについて 投稿日 : 2008/12/12(Fri) 14:28 投稿者 : 魔界の仮面弁士
Get 時には、変数の参照を渡しますが、 Set 時には、値そのものを渡さねばなりません。SDK で確認しておいてください。 VB6 的に言えば、前者は「Long 型変数の ByRef 渡し」または「VarPtr の ByVal 渡し」、 後者は「Long 値の ByVal 渡し」です。 今回の場合は、Declare 宣言を「ByRef pvParam As Long」で行っていますので、 'bRtn = SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, 0, 0) bRtn = SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, ByVal 0&, 0) そして 'bRtn = SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, lTime, 0) bRtn = SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, ByVal lTime, 0) とする必要があるでしょう。 > 最後の再度取得を実行してみると1305288という値が入っておりました。 ポインタですね。変数のアドレス値がそのまま設定されたのでしょう。 おそらく、それを実行した時点の Debug.Print VarPtr(lTime) の値が、1305288 だったのだと思いますよ。 |