2012-04-24 4 views
-1

ı отправить мои файлы в cliboard и ı хотите сделать копию всех файлов указанным путем, например, одним нажатием кнопки на рабочем столе, такими документами, как у меня есть проблема: не получить все файлы из списка и ı don т копия указан путь, как я могу скопировать все файлы ....C# копировать файлы по указанному пути

public partial class Form1 : Form 
{ 
    [DllImport("User32.dll", CharSet = CharSet.Auto)] 
    public static extern IntPtr SetClipboardViewer(IntPtr hWnd); 
    [DllImport("User32.dll", CharSet = CharSet.Auto)] 
    public static extern bool ChangeClipboardChain(IntPtr hWndRemove, IntPtr hWndNewNext); 
    [DllImport("user32.dll", CharSet = CharSet.Auto)] 
    public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam); 

    IntPtr SonrakiClipboardOgesi; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     SonrakiClipboardOgesi = SetClipboardViewer(this.Handle); 
    } 

    protected override void WndProc(ref Message m) 
    { 
     int WM_DRAWCLIPBOARD = 0x0308; 
     int WM_CHANGECBCHAIN = 0x030D; 

     if (m.Msg == WM_DRAWCLIPBOARD) 
     { 
      ClipboardRead(); 
      SendMessage(SonrakiClipboardOgesi, m.Msg, m.WParam, m.LParam); 
     } 
     else if (m.Msg == WM_CHANGECBCHAIN) 
     { 
      if (m.WParam == SonrakiClipboardOgesi) 
      { 
       SonrakiClipboardOgesi = m.LParam; 
      } 
      else 
      { 
       SendMessage(SonrakiClipboardOgesi, m.Msg, m.WParam, m.LParam); 
      } 
     } 

     base.WndProc(ref m); 
    } 

    private void ClipboardRead() 
    { 
     StringCollection col = new StringCollection(); 
     col = Clipboard.GetFileDropList(); 
     for (int i = 0; i < col.Count; i++) 
     { 
      listBox1.Items.Add(col[i]); 
     } 
     listBox1.SelectionMode = SelectionMode.MultiSimple; 
     for (int i = 0; i < listBox1.Items.Count; i++) 
     { 
      listBox1.SetSelected(i, true); 
     } 
    } 

    private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     ChangeClipboardChain(this.Handle, SonrakiClipboardOgesi); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     // ı make a with click copy within listbox files specified path 
     //What code I should write here 
    } 
} 

ответ

0

То, что вы пытаетесь сделать, это немного излишним, как вам не нужно слушать в буфер обмена, если у вас есть событие нажатия кнопки. ..

if (Clipboard.ContainsFileDropList()) 
{ 
    // Get a list of files 
    System.Collections.Specialized.StringCollection returnList = Clipboard.GetFileDropList(); 
    // For each file in the list 
    foreach(string s in returnlist) 
    { 
     // split the file path and get the last node of the path which should be file.ext 
     String[] sa = s.Split('\'); 
     string sourceFile = s; 
     // set the file target 
     string targetFile = Environment.GetFolderPath(Environment.SpecialFolder.Desktop))+sa[sa.length-1]; 
     // Get a list of files 
     System.IO.File.Copy(sourceFile, destFile, true); // finally copy the file 
    } 
} 

Возможно, вам придется немного отладить, поскольку у меня нет Visual Studio h andy и я havent проверял, если он компилируется ...

+0

это ı ошибки код получить все файлы из выпадающего списка – leonf

+0

вы говорите турецкий Sevki Если вы знаете, я расскажу вам турецкий ?? – leonf

+0

частная пустота button1_Click (объект отправителя, EventArgs е) { // ı сделать с щелчком копирования в ListBox файлов указан путь // Какой код я должен написать здесь } – leonf

0

Вы уже задали этот вопрос, но я не могу найти нигде. Во всяком случае здесь код, как вы можете копировать файлы из выпадающего списка на рабочий стол:

foreach (string item in listBox1.Items) 
{ 
    FileInfo fileInfo = new FileInfo(item); 
    File.Copy(item,Path.Combine(
      Environment.GetFolderPath(Environment.SpecialFolder.Desktop), 
      fileInfo.Name), true); 
} 
+0

ошибка кода (файл «уже существует»). – leonf

+0

Конечно, если у вас уже есть тот же файл на рабочем столе, он будет генерировать исключение. Чтобы перезаписать существующий файл, вам необходимо установить третий параметр метода File.Copy - см. Отредактированный код. – Reniuz

+0

@leonf Узнайте, как это работает, затем отлаживайте его, чтобы он работал на вас, не ожидайте ответа на код вставки. – Amicable

Смежные вопросы