2012-12-06 18 views
11

thể trùng lặp:
Lock Windows workstation programmatically in C#Làm cách nào để khóa cửa sổ máy trạm theo trình tự?

Tôi hiện đang làm việc trên một cửa sổ phòng thu mẫu đơn xin thị giác mà đòi hỏi một chức năng khóa máy trạm. Làm thế nào tôi có thể sử dụng user32.dll để làm một khóa (Windows + L) khi chức năng được gọi là?

+0

Các dupe tôi gửi được yêu cầu cho một giải pháp quản lý, nhưng giải pháp không quản lý được đăng trong câu hỏi riêng của mình :) –

+0

Không trùng lặp, các có thể trùng lặp không cung cấp giải pháp! –

+0

Câu trả lời nằm trong câu hỏi – spender

Trả lời

28

Tôi đã không thử nó bản thân mình, nhưng tôi thấy this trên google

Process.Start(@"C:\WINDOWS\system32\rundll32.exe", "user32.dll,LockWorkStation");

chỉnh sửa: Tôi đã thử nó, và nó hoạt động!

edit2: Dưới đây là solution sử dụng user32.dll không bắt đầu quá trình bên ngoài.

using System.Runtime.InteropServices;

khai báo một phương pháp như thế này:

[DllImport("user32.dll")] 
public static extern bool LockWorkStation(); 

và sau đó gọi LockWorkStation();.

Voila

+0

Có, và câu hỏi trùng lặp không cung cấp giải pháp thiên tài của bạn! –

+0

+1. Làm cho việc sử dụng user32.dll, kiểm tra, khóa máy trạm, kiểm tra. Vâng, có vẻ hữu ích. Tuy nhiên, bắt đầu một tiến trình con cho điều này có thể có những tình huống không lường trước được. Ai biết. =) –

+0

Psst. ** Nếu ** bạn đã sao chép câu hỏi đó từ câu hỏi "trùng lặp", vui lòng chỉ định tác giả gốc. =) –

0
using System.Runtime.InteropServices; 


[DllImport("user32.dll")] 
public static extern int ExitWindowsEx(int uFlags, int dwReserved); 

chỉ cần gọi

ExitWindowsEx(0, 0); 
+0

Điều này sẽ xuất hiện để đăng xuất khỏi người dùng, không khóa máy trạm theo yêu cầu. – Iridium

+0

Theo cách này, khóa máy trạm và gửi người dùng trở lại màn hình lựa chọn người dùng. Nhược điểm là người dùng sẽ mất tất cả công việc của họ. – TheLegendaryCopyCoder