bloquer les entrées clavier souris, et envoyer des commandes en csharp

Si comme moi vous vous demandiez si il est possible de bloquer le clavier et la souris d’un utilisateur en .net, la réponse est oui !
Pour cela il faut utiliser une API de windows et donc faire un petit DllImport
[DllImport("user32.dll">)]
public static extern bool BlockInput(bool fBlockIt);

Attention cela ne bloque pas le Ctrl + Alt + Suppr heureusement…
Maintenant si vous voulez envoyer des commandes à une application pas de problème il faut utiliser la classe SendKeys qui se trouve System.Windows.Forms.
Bon voilà un petit exemple avec la Calculatrice de windows
//Bloc les entrées
BlockInput(true);

//Démarre la calculatrice
Process.Start("calc");

// Ajoutez la référence a Microsoft.VisualBasic.dll
Interaction.AppActivate("Calculatrice");

// Exécute un calcule
SendKeys.SendWait(>"20*20{enter}");

//débloc les entrées
BlockInput(false);

comment envoyer une ou plusieurs entrées clavier vers la fenêtre active = sendkeys !

Hier j’ai bossé sur un nouveau projet qui permet d’exposer un de nos service via un Terminal Server … bref je ne peux pas vous en dire plus la dessus, mais je voulais vous parler d’un super truc plus qu’utile sous Windows : le Windows Scripting Host (WSH).
Cela peut par exemple permettre de simuler la frappe d’un utilisateur sur le clavier !
Plusieurs objets sont disponibles.
Pour en savoir plus allez faire un tour sur http://www.secretswindows.com/ , très bon site en français sur plein de sujets concernant Windows :

  • base de registres
  • API Windows
  • Stratégies
  • Fichiers inf
  • Lignes de commandes
  • Scripts Windows
  • Erreur Windows

formater une chaine xml

Tout commence pas une banale discussion sur MSN avec mon ami JB …

jb :: dit :

ce batard de patrice

Evilz : 27 ou 28 Paintball envoyez moi un mail si vous voulez venir dit :

koi

jb :: dit :

c’est moi qui lui ai montre comment on faisait pour afficher de l xml indente

jb :: dit :

parce qu il y arrivait pas

Evilz : 27 ou 28 Paintball envoyez moi un mail si vous voulez venir dit :

?

jb :: dit :

et meme pas il me cite ou il me dit merci

Evilz : 27 ou 28 Paintball envoyez moi un mail si vous voulez venir dit :

cad

jb :: dit :

lis son blog

jb :: dit :

il affiche du xml

jb :: dit :

il recevait une string, qui contenait du xml

jb :: dit :

et il voulait re avoir une string

jb :: dit :

mais avec le xml correctement formate

Evilz : 27 ou 28 Paintball envoyez moi un mail si vous voulez venir dit :

pour son appli

jb :: dit :

et il y arrivait pas

jb :: dit :

oui

jb :: dit :

alors je lui ai fais en deux deux

jb :: dit :

et meme pas il me remercie

Evilz : 27 ou 28 Paintball envoyez moi un mail si vous voulez venir dit :

c koi le truc

Evilz : 27 ou 28 Paintball envoyez moi un mail si vous voulez venir dit :

un fonction recursive ?

jb :: dit :

StringWriter sw = new StringWriter ();

Evilz : 27 ou 28 Paintball envoyez moi un mail si vous voulez venir dit :

et?

jb :: dit :

XmlTextWriter xmltxt = new XmlTextWriter ();

jb :: dit :

// tu me laisses taper oui ?

jb :: dit :

XmlDocument doc = new XmlDocument ();

jb :: dit :

doc.LoadXml (ma_string_d_origine);

jb :: dit :

// fuck je me suis trompe

Evilz : 27 ou 28 Paintball envoyez moi un mail si vous voulez venir dit :

//lol

jb :: dit :

xmltxt = new XmlTextWriter (sw); xmltxt.Formatting = Formatting.Indented;

jb :: dit :

// il faut lire la haut

jb :: dit :

// je redescend en bas

jb :: dit :

doc.Save (xmltxt);

jb :: dit :

string my_new_string = sw.ToString ();

jb :: dit :

// et voila

jb :: dit :

// spa pratique dans msn

Evilz : 27 ou 28 Paintball envoyez moi un mail si vous voulez venir dit :

pas mal

jb :: dit :

oep

 

Donc je résume pour ceux qui n’arriveraient pas à suivre :

 

StringWriter sw = new StringWriter ();
XmlTextWriter xmltxt = new XmlTextWriter (sw);
xmltxt.Formatting = Formatting.Indented;
XmlDocument doc = new XmlDocument ();
doc.LoadXml (ma_string_d_origine);
xmltxt = doc.Save (xmltxt);
string my_new_string = sw.ToString ();