Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 1 / 4
Регистрация: 13.05.2013
Сообщений: 673

Перенос текста между программами

15.05.2018, 09:38. Показов 1105. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день я тут увидел передача текста между формами
Ответы на 7 самых частых вопросов по WinForms

Как можно так же передать текст если создать(не две формы)а два проекта.
т.е в одной будет текст "слово" если нажать кнопку , то 1 приложение закрывается и открывается второе приложение
и там тот же текст "слово" отображается.

Думаю вы меня поняли))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.05.2018, 09:38
Ответы с готовыми решениями:

Переключение между программами
Здравствуйте, может быть кто-нибудь сможет помочь ссылкой или примером. У меня есть одно приложение, код которого вызывает диалоговое окно...

Передача данных между программами
Здравствуйте. Нужно написать приложение на C# выполняющее передачу данных между Microsoft Office и Opera (передача web страниц данных) за...

Взаимодействие между двумя разными программами
Задача у меня такая, есть программа сделанная на WPF. Нужно написать программу которая будет принимать запрос от моего проекта на WPF и...

5
Unnamed
 Аватар для kingzfate
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
15.05.2018, 09:46
esenbek, вариантов много. Один из них, использование разделяемой памяти
Записываем данные в память
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
static void Main(string[] args)
        {
            Console.WriteLine("Введите сообщение");
            //Ввод выражения для записи в общую память
            char[] message = Console.ReadLine().ToCharArray();
            //Размер введенного сообщения
            int size = message.Length;
 
            //Создание участка разделяемой памяти
            //Первый параметр - название участка, 
            //второй - длина участка памяти в байтах: тип char  занимает 2 байта 
            //плюс четыре байта для одного объекта типа Integer
            MemoryMappedFile sharedMemory = MemoryMappedFile.CreateOrOpen("MemoryFile", size * 2 + 4);
            //Создаем объект для записи в разделяемый участок памяти
            using (MemoryMappedViewAccessor writer = sharedMemory.CreateViewAccessor(0, size * 2 + 4))
            {
               //запись в разделяемую память
               //запись размера с нулевого байта в разделяемой памяти
                writer.Write(0, size);
                //запись сообщения с четвертого байта в разделяемой памяти
                writer.WriteArray<char>(4, message, 0, message.Length);
            }      
 
            Console.WriteLine("Сообщение записано в разделяемую память");
            Console.WriteLine("Для выхода из программы нажмите любую клавишу");
            Console.ReadLine();
        }
Читаем данные из памяти
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
 static void Main(string[] args)
        {
            //Массив для сообщения из общей памяти
            char[] message;
            //Размер введенного сообщения
            int size;
 
            //Получение существующего участка разделяемой памяти
            //Параметр - название участка
            MemoryMappedFile sharedMemory = MemoryMappedFile.OpenExisting("MemoryFile");
            //Сначала считываем размер сообщения, чтобы создать массив данного размера
            //Integer занимает 4 байта, начинается с первого байта, поэтому передаем цифры 0 и 4
            using (MemoryMappedViewAccessor reader = sharedMemory.CreateViewAccessor(0, 4, MemoryMappedFileAccess.Read))
            {
                size = reader.ReadInt32(0);
            }
 
            //Считываем сообщение, используя полученный выше размер
            //Сообщение - это строка или массив объектов char, каждый из которых занимает два байта
            //Поэтому вторым параметром передаем число символов умножив на из размер в байтах плюс
            //А первый параметр - смещение - 4 байта, которое занимает размер сообщения
            using (MemoryMappedViewAccessor reader = sharedMemory.CreateViewAccessor(4, size * 2, MemoryMappedFileAccess.Read))
            {
                //Массив символов сообщения
                message = new char[size];
                reader.ReadArray<char>(0, message, 0, size);
            }
            Console.WriteLine("Получено сообщение :");
            Console.WriteLine(message);
            Console.WriteLine("Для выхода из программы нажмите любую клавишу");
            Console.ReadLine();
        }
Но самым разумным я думаю будет использование разделяемых каналов, Pipes
0
0 / 1 / 4
Регистрация: 13.05.2013
Сообщений: 673
15.05.2018, 09:54  [ТС]
а как через FORM это реализовать?
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
15.05.2018, 10:36
эм, если банально текст передать, то есть же, старый, добрый буфер обмена, зачем городить огороды? берёшь в 1 форме по кнопке заносишь текст в буфер обмена, на второй форме при её запуске читаешь текст из буфера и заносишь куда надо
0
0 / 1 / 4
Регистрация: 13.05.2013
Сообщений: 673
15.05.2018, 13:39  [ТС]
Цитата Сообщение от SeIZVeIZ Посмотреть сообщение
эм, если банально текст передать, то есть же, старый, добрый буфер обмена, зачем городить огороды? берёшь в 1 форме по кнопке заносишь текст в буфер обмена, на второй форме при её запуске читаешь текст из буфера и заносишь куда надо
можете помочь с кодом просто я в этом новичек не знаю что к чему.
Задание дали нам выполнить такой
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
15.05.2018, 14:10
esenbek, начинающему это проще всего сделать через аргументы командной строки. В первом проекте:
C#
1
Process.Start("proj2.exe", "\"" + text + "\"");
Во втором в методе Main
C#
1
2
...
Application.Run(new Form1(args.Length == 1 ? args[0] : ""));
В классе формы
C#
1
2
3
4
5
6
7
8
9
class Form1
{
    public Form1(string text)
    {
        InitializeComponent();
        label1.Text = text;
    }
...
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.05.2018, 14:10
Помогаю со студенческими работами здесь

Какой компонент отвечает за переключением между программами?
Я сделал Таймер и Секундомер,отдельные проекты,как сделать чтобы в одной программе была два этих проекта?

Как сделать канал связи между программами?
Нужна хотя бы идея и желательно ее реализация. Есть два компа (ну или больше) на каждом запущена одна и та же прога (winforms). К примера...

Оптимальный способ передачи данных между программами на c#
Здравствуйте. Ситуация следующая: есть 2 программы, между которыми необходимо обеспечить передачу данных(от одной к другой, в обратную...

Программа для обмена данными между другим программами
Не знаю в какую часть форума написать, изучаю c# поэтому тут. Надо сделать небольшую программу для экспорт данных из 1С, преобразование и...

Реализация ssl для обмена между программами на одном устройстве
Вопрос как создать защищенный сеанс используя протокол ssl между двумя программами. Программы обмениваются сообщениями и запущены на одном...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru