Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
76 / 77 / 40
Регистрация: 03.06.2014
Сообщений: 462
1

Работа с буфером обмена

08.10.2014, 18:27. Показов 2085. Ответов 8
Метки нет (Все метки)

Добрый вечер.
Непонятные вещи творятся с Clipboard, Создаю файл, копирую его в Нное место (Рабочий стол допустим), копирую уже скопированный файл что б в Clipboard.GetFileDropList() появился путь уже к новому файлу, но он не появляется!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
String sndc =@"c:\1.txt";
 
//Заношу "c:\1.txt"  в StringCollection 
                StringCollection filePath = new StringCollection();
                filePath.Add(sndc);
 
//Очищаю буфер и и заношу туда "c:\1.txt"
                Clipboard.Clear();
                Clipboard.SetFileDropList(filePath);
 
//Делаю клик (Рабочий стол), вставку КТРЛ+В и копирование КТРЛ+С
                InputSimulator InpSim = new InputSimulator();
                InpSim.Mouse.LeftButtonClick();
                InpSim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_V);
                InpSim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_C);
 
//Здесь по идее должен достаться путь к новому файлу, но достается старый!
                filePath = Clipboard.GetFileDropList();
                MessageBox.Show(filePath[0]);
А если написать вот так
C#
1
2
3
                MessageBox.Show(filePath[0]);
                filePath = Clipboard.GetFileDropList();
                MessageBox.Show(filePath[0]);
То достается старый путь, а потом новый!
Не пойму в чем проблема?
Пробовал и Sleep() и Sleep() в цикле, ничего не помогает
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2014, 18:27
Ответы с готовыми решениями:

COM-порт, работа с двумя формами и одним буфером обмена
Доброго времени суток. Обращаюсь с вопросом, который повторяли, наверно, сотню и один раз. Но...

Как работать с буфером обмена
Помогите пожалуйста,не пойму с чего начать. Есть форма,на ней два button один на запись,другой...

Исключение при работе с буфером обмена
Задача: при нажатии на кнопку, в буфер обмена копируется текст. Я делаю это таким образом: ...

Все таки подружить кириллицу с буфером обмена
Всем привет! Распространенная проблема, но что-то не могу найти решение. Есть DataGridView в ней...

8
202 / 171 / 67
Регистрация: 04.10.2014
Сообщений: 839
08.10.2014, 18:35 2
C#
1
MessageBox.Show(filePath[1]);
? проверьте массив чтоли или его count прежде чем к индексу обращатся
0
76 / 77 / 40
Регистрация: 03.06.2014
Сообщений: 462
08.10.2014, 19:03  [ТС] 3
System.ArgumentOutOfRangeException

Добавлено через 3 минуты
Такое ощущение, что он не успевает попасть в буфер, но почему тогда не действует Слип?
0
202 / 171 / 67
Регистрация: 04.10.2014
Сообщений: 839
08.10.2014, 19:09 4
C#
1
filePath.Add(Clipboard.GetFileDropList());
Добавлено через 30 секунд
C#
1
MessageBox.Show(filePath[1]); //мб тогда сработает
0
76 / 77 / 40
Регистрация: 03.06.2014
Сообщений: 462
08.10.2014, 19:14  [ТС] 5
Clipboard.GetFileDropList() это массив файлов в буфере

Добавлено через 2 минуты
пробовал Clipboard.Clear() перед вторым копирование, но прога вылетает Exception.
0
202 / 171 / 67
Регистрация: 04.10.2014
Сообщений: 839
08.10.2014, 19:29 6
asql, а теперь понятно, не работал просто с буфером, предположил, что так надо было сделать

Добавлено через 12 минут
asql,

C#
1
2
3
InpSim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_V);
//Очистка буфера тут не нужна?
InpSim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_C);
0
76 / 77 / 40
Регистрация: 03.06.2014
Сообщений: 462
08.10.2014, 19:54  [ТС] 7
пробовал Clipboard.Clear() перед вторым копирование, но прога вылетает Exception.
0
202 / 171 / 67
Регистрация: 04.10.2014
Сообщений: 839
08.10.2014, 20:01 8
asql, asql, а ты поток останавливал где именно?

Добавлено через 3 минуты
C#
1
2
3
4
5
6
7
filePath.Clear();
while (filePath.Count < 1) 
{
    filePath = Clipboard.GetFileDropList();
    Thread.Sleep(100);
}
MessageBox.Show(filePath[0]);
Добавлено через 38 секунд
хз мб так проканает)
0
429 / 383 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
09.10.2014, 16:19 9
http://www.developer.com/net/c... y-in-C.htm
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2014, 16:19

Работа с буфером обмена. (Опен офис, Компас).
Добрый день. Идея следующая. Выделяю область в опенофисе калькулятор (аналог Экселя). Копирую в...

Операции с буфером обмена
Доброго времени суток,форумчане!Назрел один вопрос у меня по поводу буфера обмена. Цель:Если в...

Управление буфером обмена через другой поток
Надо удалять, добавлять, изменять буфер обмена через фоновой поток. //При стандартном...

Работа с буфером обмена
У меня на форме 17 эдитов и панель инструментов происходит так: пользователь вводит данные в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru