2016-04-28 11 views
0

Ich versuche, Chrom aus meiner Anwendung zu schließen.WM_CLOSE Nachricht scheint nicht zu schließen chrom

Ich verwende die folgende Methode:

public class CloseChrome 
{ 

    static int WM_CLOSE = 0x0010; 
    static int WM_QUIT = 0x0012; 



    [DllImport("user32.dll", CharSet = CharSet.Auto)] 
    private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); 



    static public void closeCrome() 
    { 

     var process = Process.GetProcesses(); 

     foreach (var item in process) 
     { 
      if (item.ProcessName.Contains("chrome")) 
      { 
       //item.Kill(); 

       int ret = SendMessage(item.Handle, WM_CLOSE, 0, 0); 
       Console.WriteLine("Chrome Reply: " + a); 
      } 

     } 
    } 
} 

das Kill-Methode verwenden tötet den Chrom-Prozess, aber wenn ich die Meldung von WM_CLOSE nichts senden geschieht, obwohl der Rückgabewert 0 von nachrichts ist. Mache ich etwas falsch ist Chrom nur ignorieren meine Anfrage?

+1

Haben Sie versucht, nur 'item.CloseMainWindow();' aufzurufen, das ist dasselbe wie das Senden von WM_CLOSE. –

+0

Danke. Das scheint zu funktionieren, aber warum funktioniert WM_CLOSE nicht – SamFisher83

+0

Ich weiß es nicht. Ich kann nur spekulieren, dass "item.Handle" nicht der Griff zum Hauptfenster ist. Sie könnten auch versuchen, PostMessage statt SendMessage zu verwenden, aber ich weiß nicht, ob das auch funktioniert. –

Antwort

1

Process.Handle ist das HANDLE des Prozesses, nicht das HWND des Hauptfensters. Tatsächlich kann ein Prozess viele Fenster besitzen, so dass das Konzept eines Hauptfensters nicht wirklich zutrifft.

Was Sie tun müssen, ist das (Csharp-Äquivalent von) EnumWindows anrufen und dann GetWindowProcessThreadId aufrufen, um jedes HWND zu testen, um zu sehen, ob es zu Ihrem Zielprozess gehört.

Die üblichere Alternative besteht darin, ein Zielfenster mit Spy ++ zu untersuchen, um festzustellen, ob der Klassenname ziemlich eindeutig ist, und wenn dies der Fall ist, können Sie FindWindow verwenden.

Verwandte Themen