2013-03-13 29 views
1

是否可以模擬windows服務的按鍵?例如,假設我有一個服務在後臺運行,每當觸發發生時,例如觸發器可能是下午2點,我會按例如窗口鍵+ L鎖定計算機。這可能在C#中嗎?帶有windows服務的鍵盤筆劃

+0

我編輯了自己的冠軍。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2013-03-13 18:02:21

+0

無論採取什麼方法,您可能都需要讓系統服務在用戶會話中啓動子進程。可能有用的API調用包括WTSGetActiveConsoleSessionId,WTSQueryUserToken和CreateProcessAsUser。 (理論上另一個選擇是使用設備驅動程序,但這更復雜。) – 2013-03-15 02:58:47

回答

2

我意識到你只想鎖定你的電腦。

通過使用此代碼,可以鎖定您的計算機一樣Windows徽標+大號

[DllImport("user32")] 
public static extern void LockWorkStation(); 

和大約的時間。它可能看起來像這樣。

DateTime d = DateTime.Now; 
if (d.TimeOfDay.Hours >= youSettedTime) 
{ 
    LockWorkStation(); 
} 

參考:http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/7aab9893-430a-4aed-8d51-b8368a61860e/

+0

這是否可以從會話0工作?當然,它會鎖定運行它的會話的工作站,而不是用戶登錄的會話? – 2013-03-15 02:54:41

+0

我很抱歉,但我沒有測試:),但如果OP提到有關「會話」,這可能是另一個問題。 – spajce 2013-03-15 11:23:10