2012-05-11 10 views
0

Windows起動時またはユーザーがログインしたときに何かをする必要のあるc#(.net)Windowsサービスがあります(休止状態から戻るなど)。サービスがこれをどのように検出できますか?それに特有のWindowsイベントはありますか?C#(.net)Windowsサービスで開始されたウィンドウまたはユーザーログインを検出する方法?

+2

関連するhttp://stackoverflow.com/questions/687156/how-to-receive-event-when-network-is-connected-and-also-when-user-logs-in? –

+0

リンクは非常に便利です。ありがとう! – Henry

答えて

1

Windowsのスタートアップの場合、を使用する簡単な方法を確認してください。おそらく、以前のウィンドウのスタートアップ値をconfigに保存して比較する必要があります。 Environment.TickCountはあなたのための十分なまたは非常に簡単ではありません場合は

:)そして、WMIを使用します。

public void BootTime(){  
    SelectQuery query = new SelectQuery("SELECT LastBootUpTime FROM Win32_OperatingSystem WHERE Primary='true'"); 
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); 

    foreach (ManagementObject mo in searcher.Get()) 
    { 
     DateTime dtBootTime = ManagementDateTimeConverter.ToDateTime(mo.Properties["LastBootUpTime"].Value.ToString()); 
     Console.WriteLine(dtBootTime.ToString()); 
    } 
} 

を検出するためにログオン/ログオフそれはSystemEventsクラスを使用したコメントの一つに言われたように、イベントSessionSwitch

メッセージポンプが動作している場合にのみ動作することに注意してください。 Windowsサービスでは、隠しフォームが使用されていないか、メッセージポンプが手動で開始されていない限り、このイベントは発生しません。

関連する問題