• ベストアンサー

access2000 で コンピュータのロックをする関数を作る

題名のとおり、 access2000で コンピュータのロックをするfunctionを作成したいです (VBA) OSはwindos2000です。 dllファイルの rundll32.exe user32.dll, LockWorkStation を呼び出せばいいと思うのですが、呼び出し方がわからず困っています。 アドバイスをいただけないでしょうか。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.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 を使う(調べてないけど多分できるはず) こんなところ。

ilnmfay
質問者

お礼

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

関連するQ&A