2009-07-15 15 views

Antwort

10

Vorausgesetzt, Sie haben bereits einen Handle zum Senden an.

...Some Class... 
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] 
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam); 

//I'd double check this constant, just in case 
static uint WM_CLOSE = 0x10; 

public void CloseWindow(IntPtr hWindow) 
{ 
    SendMessage(hWindow, WM_CLOSE, IntPtr.Zero, IntPtr.Zero); 
} 
...Continue Class... 

Einen Griff zu bekommen kann schwierig sein. Control-Nachkommen Klassen (WinForms, im Grunde) haben Handle, und Sie können alle Top-Level-Fenster mit EnumWindows (die erweiterte p/invoke erfordert, obwohl nur leicht) auflisten.

0

Angenommen, Sie möchten den Editor schließen. Mit dem folgenden Code wird es tun:

private void CloseNotepad(){ 
     string proc = "NOTEPAD"; 

     Process[] processes = Process.GetProcesses(); 
     var pc = from p in processes 
       where p.ProcessName.ToUpper().Contains(proc) 
       select p; 
     foreach (var item in pc) 
     { 
      item.CloseMainWindow(); 
     } 
    } 

Überlegungen:

Wenn der Notizblock etwas nicht gespeicherten Text hat, wird es Popup „Wollen Sie sparen ....?“

item.CloseMainWindow() 

mit

item.Kill(); 

Ersetzen-Dialog oder wenn der Prozess keine UI hat Würfen es Ausnahme folgende

'item.CloseMainWindow()' threw an exception of type 
'System.InvalidOperationException' base {System.SystemException}: 
    {"No process is associated with this object."} 

Wenn Sie sofort schließen Prozess erzwingen möchten, dann Wenn Sie PInvoke hinwollen So können Sie den Griff des ausgewählten Elements verwenden.

item.Handle; //this will return IntPtr object containing handle of process. 
+0

Notwendigkeit, die Frage zu lesen, @karthik will eine andere Anwendung –

+0

@Hamish schließen Ich denke, das Hinzufügen * andere * wie geholfen hätte, * andere kleine Anwendung wie Notepad * – TheVillageIdiot

+0

, wo ich den Namen geben, tun müssen, der Anwendung, um es zu schließen? – Anuya

Verwandte Themen