- ベストアンサー
access2000 で コンピュータのロックをする関数を作る
題名のとおり、 access2000で コンピュータのロックをするfunctionを作成したいです (VBA) OSはwindos2000です。 dllファイルの rundll32.exe user32.dll, LockWorkStation を呼び出せばいいと思うのですが、呼び出し方がわからず困っています。 アドバイスをいただけないでしょうか。よろしくお願いします。
- みんなの回答 (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 を使う(調べてないけど多分できるはず) こんなところ。
お礼
お礼を遅れて申し訳ありません。 回答していただき大変感謝いたします。 ありがとうございました。