1 / 0 / 0
Регистрация: 16.07.2009
Сообщений: 28
1

Clipboard.SetDataObject

16.08.2009, 15:08. Показов 2462. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот мой метод. Проблема в том что этот метод вызывается не из основного потока связи с чем и не работает. Как вызвать метод из не из главного потока, но что бы метод выполнялся в главном потоке? Пробовал BeginInvoke и Invoke, но не получалось.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public static void SendText(string text)
       {
           try
           {
               string data = Conversions.ToString(Clipboard.GetData(DataFormats.Text));
               Clipboard.SetDataObject(text, true);
               if (Operators.ConditionalCompareObjectEqual(Clipboard.GetData(DataFormats.Text), text, false))
               {
                   PostMessage(mem.WindowHandle, 0x100, 13, (int)IntPtr.Zero);
                   PostMessage(mem.WindowHandle, 0x101, 13, (int)IntPtr.Zero);
                   Thread.Sleep(200);
                   PostMessage(mem.WindowHandle, 0x100, 0xa2, (int)IntPtr.Zero);
                   PostMessage(mem.WindowHandle, 0x100, 0x56, (int)IntPtr.Zero);
                   Thread.Sleep(200);
                   PostMessage(mem.WindowHandle, 0x101, 0xa2, (int)IntPtr.Zero);
                   Thread.Sleep(200);
                   PostMessage(mem.WindowHandle, 0x100, 8, (int)IntPtr.Zero);
                   Thread.Sleep(200);
                   PostMessage(mem.WindowHandle, 0x100, 13, (int)IntPtr.Zero);
                   PostMessage(mem.WindowHandle, 0x101, 13, (int)IntPtr.Zero);
                   PostMessage(mem.WindowHandle, 0x101, 0x56, (int)IntPtr.Zero);
                   PostMessage(mem.WindowHandle, 0x101, 8, (int)IntPtr.Zero);
                   Clipboard.SetDataObject(data, true);
               }
           }
           catch (Exception exception1)
           {
               ProjectData.SetProjectError(exception1);
               Exception exception = exception1;
               ProjectData.ClearProjectError();
           }
       }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2009, 15:08
Ответы с готовыми решениями:

Ошибка при повторном вызове метода Clipboard.SetDataObject
Необходимо программно отправить текст в текстовое поле стороннего приложения. Задавал вопрос в...

Console app clipboard монитор
Всем привет, нужна помощь. Не могу разобраться. Делаю консольное приложение, должно мониторить в...

Clipboard - Fail Paste Files
Доброго времени суток. Пытаюсь скопировать вложения в письме Outlook и вставить в своем...

Clipboard копирование сериализуемого объекта
bool s = IsSerializable(this); DataFormats.Format format =...

6
308 / 161 / 11
Регистрация: 07.06.2009
Сообщений: 538
16.08.2009, 15:32 2
почему c Invoke не получается?
зы что за колдунство кроется под отправками сообщений?
0
1 / 0 / 0
Регистрация: 16.07.2009
Сообщений: 28
16.08.2009, 15:37  [ТС] 3
У меня не получает нормально это написать так как везде примеры Invoke для того чтобы присвоить какого-нибудь лабелу.

зы что за колдунство кроется под отправками сообщений?
Секрет, но если запускать в основном потоке то все работает.
0
308 / 161 / 11
Регистрация: 07.06.2009
Сообщений: 538
16.08.2009, 15:42 4
а что мешает присвоить значения всем лейбелам в одном методе, а потом этот метод вызвать через invoke?
и да, код какойто не правильный, повсюду шаманство как я понимаю.
0
1 / 0 / 0
Регистрация: 16.07.2009
Сообщений: 28
16.08.2009, 15:48  [ТС] 5
Говорю мне нужно не с лэйбалами работать а посылать в окно текст по мере выполнения метода в потоке. Текст всегда разный.
0
308 / 161 / 11
Регистрация: 07.06.2009
Сообщений: 538
16.08.2009, 15:52 6
и ты через буфер обмена обмениваешься данными между потоками?
0
1 / 0 / 0
Регистрация: 16.07.2009
Сообщений: 28
16.08.2009, 16:25  [ТС] 7
МЕТОД который Я выложил посылает в окно нажатие кнопок и строку текста.
Это метод вызывается не в главном потоке. Clipboard.SetDataObject(text, true); - нельзя использовать не в главном потоке. В это проблема

Добавлено через 25 минут 35 секунд
Окно другой программы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2009, 16:25
Помогаю со студенческими работами здесь

Как получить в Clipboard выделенную часть текста в <Input...> или в <TextArrea>?
Как получить в Clipboard выделенную часть текста в &lt;Input...&gt; или в &lt;TextArrea&gt;?

Работа с Буфером обмена (Clipboard)
Всем привет! Ребята, в простом не могу найти решение. Подскажите, почему не работает. Мне нужно...

загрузить значение в clipboard
Как загнать в Clipboard какое-то стороковое значение?

Буфер обмена Clipboard
Программа должна отслеживать все копирования в буфер и сохранять «историю» работы с буфером обмена...


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

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

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