2012-09-09 1 views
0

Possible en double:
close a message box from another program using c#Studio.NET visuel dialogue étroit d'un autre programme

Il y a un autre programme sur mon ordinateur qui affiche une boîte de message à chaque fois dans un certain temps. Est-il possible d'utiliser .NET pour fermer ces boîtes de dialogue lorsqu'elles apparaissent?

+1

http://www.codeproject.com/Articles/22257/Find-and-Close-the-Window-using-Win-API – Matthew

+0

fantastique laissez-moi essayer ça? Pensez-vous qu'il fonctionnera sur les boîtes de message? – Akshat

+0

Je pense que ce sera le cas. – Matthew

Répondre

1

Utiliser les fonctions FindWindow et SendMessage WinAPI comme ici http://www.codeproject.com/Articles/22257/Find-and-Close-the-Window-using-Win-API

Vous devez créer un wich boucle ferme cette fenêtre continue, comme while (true). J'ai utilisé un minuteur parce que c'est plus efficace. Voici mon code:

[DllImport ("user32.dll")] public static extern IntPtr FindWindow (String sClassName, String sAppName); 
[DllImport ("user32.dll")] public static extern int SendMessage (IntPtr hWnd, uint Msg, int wParam, int lParam); 
    Timer t; 
    public Form1() 
    { 
     InitializeComponent(); 
     t=new Timer(); 
     t.Interval=100; 
     t.Tick+=delegate 
     { 
      IntPtr w=FindWindow (null, "Message box title"); 
      if (w!=null) SendMessage (w, 0x0112, 0xF060, 0); 
     }; 
     t.Start(); 
    } 

Où WM_SYSCOMMAND = 0x0112 public const int SC_CLOSE = 0xF060;

Si vous ne connaissez pas le nom de la classe de la fenêtre (comme ci-dessus), utilisez le titre null et le titre de la boîte de message comme paramètres. Bien sûr, cela signifie que la boîte de message a un titre.

Questions connexes