Suggerirei Importazione e definire quanto segue:
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern bool PostMessage(IntPtr handleWnd, UInt32 Msg, Int32 wParam, Int32 lParam);
const int WM_ENDSESSION = 0x0016,
WM_TRUE = 0x1,
WM_FALSE = 0x0;
Poi invia attraverso 0x1 o 0x0 che rappresenta vera o falsa, come il messaggio wParam.
Quindi, nel codice, utilizzare:
PostMessage(HandleToSendTo, WM_ENDSESSION, WM_TRUE, 0);
Dove HandleToSendTo è l'handle di finestra della finestra che si desidera inviare il messaggio.
Modifica
Per ottenere le finestre gestire se non lo sai, sto supponendo che si sa che è il titolo o il nome.Se è così è possibile utilizzare questo:
[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
public static extern int FindWindowEx(int hwndParent, int hwndEnfant, int lpClasse, string lpTitre);
Quali ulteriori informazioni si possono trovare in this question.
O forse
Non so se questa è una maniglia simile, dubito ma qualcuno potrebbe farmi sapere se lo è, ma è possibile ottenere un handle di Process, il che significa che è possibile ottenere il processo utilizzando Process.GetProcessesByName ("MyAppName") ;, anche se non si basa su questo perché non lo faccio pensa che otterrà il comando che cerchi. Solo un suggerimento.
Penso che appartenga a stackoverflow.com –
Qualche fortuna con quello? – ThePower