Buonasera, sto programmando un software timesheet.
Per far ricordare ai collaboratori di inserire il timesheet ho pensato che, prima dello spegnimento del computer, il programma (o un servizio) chiedesse se avesse inserito il timesheet e se l'utente clicca "Sì" il computer prosegue lo spegnimento altrimenti il pc rimane accesso.
Ho già cercato su google però non ho trovato una risposta, soltanto verificare se il pc si spegne quando il programma è aperto.
Ho provato con c# windows service ma niente da fare .
[DllImport("wtsapi32.dll", SetLastError = true)]
static extern bool WTSSendMessage(
IntPtr hServer,
[MarshalAs(UnmanagedType.I4)] int SessionId,
String pTitle,
[MarshalAs(UnmanagedType.U4)] int TitleLength,
String pMessage,
[MarshalAs(UnmanagedType.U4)] int MessageLength,
[MarshalAs(UnmanagedType.U4)] int Style,
[MarshalAs(UnmanagedType.U4)] int Timeout,
[MarshalAs(UnmanagedType.U4)] out int pResponse,
bool bWait);
protected override void OnStart(string[] args)
{
bool result = false;
String title = "Alert";
int tlen = title.Length;
String msg = "Hai inserito il timesheet?";
int mlen = msg.Length;
int resp = 7;
result = WTSSendMessage(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, title, tlen, msg, mlen, 4, 3, out resp, true);
int err = Marshal.GetLastWin32Error();
}
My mostra errore su "WTS_CURRENT_SERVER_HANDLE" e "WTS_CURRENT_SESSION" e comunque non andrebbe bene poichè mostra un messaggio e non una domanda.
Non so più cosa fare