dポイントプレゼントキャンペーン実施中!

題名のとおり、
access2000で コンピュータのロックをするfunctionを作成したいです
(VBA)

OSはwindos2000です。
dllファイルの rundll32.exe user32.dll, LockWorkStation を呼び出せばいいと思うのですが、呼び出し方がわからず困っています。

アドバイスをいただけないでしょうか。よろしくお願いします。

A 回答 (1件)

> コンピュータのロックをするfunctionを作成したいです



何のために? 目的を提示しないと的外れなアドバイスになって
しまいそうですが。。

関数にする意図もよくわかりませんが...何個かサンプルを。
全て Windows2000、XP 限定です。Win9x 系 OS や NT では動きません。

■方法1. Shell を使う

  Shell "rundll32.exe user32.dll,LockWorkStation"

■方法2. LockWorkStation API を使う

Private Declare Function LockWorkStation Lib "user32.dll" () As Long

Sub SampleProc()
  If LockComputer() = False Then
    MsgBox "ロックできません", vbCritical
  End If
End Sub

' // OS をロックする(無理やり関数にしてみた)
Public Function LockComputer() As Boolean
  LockComputer = CBool(LockWorkStation() <> 0)
End Function


■方法3. [Windows]+[L] キーシュミレート

Private Declare Sub keybd_event Lib "user32.dll" ( _
   ByVal bVk As Byte, _
   ByVal bScan As Byte, _
   ByVal dwFlags As Long, _
   ByVal dwExtraInfo As Long)

Private Const VK_LWIN As Long = &H5B
Private Const KEYEVENTF_KEYUP = &H2
Private Const KEYEVENTF_KEYDOWN = &H0

' // [Win]+[L] のキーシュミレート
Public Sub LockComputer()
  Call keybd_event(VK_LWIN, 0&, KEYEVENTF_KEYDOWN, 0&)
  Call keybd_event(vbKeyL, 0&, KEYEVENTF_KEYDOWN, 0&)
  Call keybd_event(vbKeyL, 0&, KEYEVENTF_KEYUP, 0&)
  Call keybd_event(VK_LWIN, 0&, KEYEVENTF_KEYUP, 0&)
End Sub

■方法4. WMI を使う(調べてないけど多分できるはず)

こんなところ。
    • good
    • 0
この回答へのお礼

お礼を遅れて申し訳ありません。
回答していただき大変感謝いたします。
ありがとうございました。

お礼日時:2008/01/06 00:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!