J'essaie d'écrire une petite application qui doit utiliser le presse-papiers pour certaines fonctionnalités. Puisque je ne veux pas écraser les données de l'utilisateur actuellement dans le presse-papiers, j'ai décidé de l'enregistrer en mémoire, de faire mon travail et de le réécrire. Le code ci-dessous est une application de console qui est un exemple de ce que j'essaie de faire.Étrangeté avec accès au presse-papiers
Le problème que je rencontre est la restauration de l'état. Si je copie quelque chose dans le presse-papiers à partir de Visual Studio avant d'exécuter l'application, il y a un total de six objets dans le presse-papiers (différents formats de chaîne et une locale) qui sont tous mis dans le cache. Une fois que je les restaure, seuls les paramètres régionaux sont dans le presse-papiers et il apparaît que chaque appel à SetData() écrase le dernier. (par la façon dont SetDataObject ne semble pas être l'inverse de GetDataObject donc je ne peux pas l'utiliser)
Des idées sur comment je peux stocker l'état du presse-papiers et le restaurer plus tard?
[STAThread]
static void Main(string[] args)
{
//Store the old clipboard data
Dictionary<string, object> clipboardCache = new Dictionary<string, object>();
IDataObject clipboardData = Clipboard.GetDataObject();
foreach (string format in clipboardData.GetFormats())
{
clipboardCache.Add(format, clipboardData.GetData(format));
}
Clipboard.SetText("Hello world!");
string value = Clipboard.GetText();
Console.WriteLine(value);
//Clear the clipboard again and restore old data
Clipboard.Clear();
foreach (KeyValuePair<string, object> valuePair in clipboardCache)
{
Clipboard.SetData(valuePair.Key, valuePair.Value);
Thread.Sleep(100);
}
Console.ReadLine();
}
Utilisez-vous un plugin pour plusieurs presse-papiers comme ClipX? – TheVillageIdiot
L'extrait de code a résolu mon problème - complètement différent du vôtre - mais google m'amène ici, donc je posterai les détails ici: Pour toute personne ayant des difficultés à accéder au presse-papiers de Windows à partir d'une application de console, "méthode avec l'attribut" [STAThread] "! : D – BrainSlugs83