J'ai un programme sur lequel je dois pouvoir copier et coller depuis un ordinateur distant vers mon ordinateur local.Pourquoi Clipboard.GetFileDropList() retourne une collection vide sur le Bureau à distance?
Mon problème est, quand j'utilise
Clipboard.GetDropList();
retourne une collection avec 0 éléments, peu importe le nombre d'éléments que j'ai essayé de copier.
Je l'ai essayé avec:
if (Clipboard.ContainsFileDropList())
{
foreach (string item in Clipboard.GetFileDropList())
{
File.Copy(item, path + '\\' + Path.GetFileName(item));
}
}
J'ai aussi essayé (BoltBait's answer):
System.Collections.Specialized.StringCollection idat = null;
Exception threadEx = null;
Thread staThread = new Thread(
delegate()
{
try
{
idat = Clipboard.GetFileDropList();
}
catch (Exception ex)
{
threadEx = ex;
}
});
staThread.SetApartmentState(ApartmentState.STA);
staThread.Start();
staThread.Join();
Les deux versions retournent une collection vide.
D'où le problème pourrait-il provenir? Sachant que:
- Copier/coller de distance au niveau local (via Windows) fonctionne
- Copier/coller de la section locale Local (via le code) fonctionne partage
- Presse-papiers est activé
- OS (local) : Windows 10
- OS (à distance): Windows Server 2008 R2
Lorsque j'essaie d'accéder à FileContents, j'obtiens une exception (CLIPBRD_E_BAD_DATA HRESULT: 0x800401D3) (J'utilise GetData ("FileContents")). Y a-t-il une autre méthode que je devrais utiliser? – user3399
Malheureusement, cela n'est pas bien supporté par l'implémentation de 'Clipboard' dans .NET. Vous devez passer à une approche non gérée - soit via P/Invoke ou en créant votre propre module non géré. Pour plus de détails, voir [cette rubrique] (https://msdn.microsoft.com/fr-fr/library/windows/desktop/bb776904%28v=vs.85%29.aspx#filecontents). – dymanoid