007wan |
Отправлено: 11 Ноября, 2019 - 07:20:25
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: А пример можно
Вначале темы пример на c++. А для передачи данных между кибор есть writebuffer.
Мне нужно, что бы буфер какой-то создавался, если он создан, то общаться: одна программа в него пишет, другая - читает. При закрытии буфер не долженссбрасываться(В киборе такого нету) и без привязки к окну, так же - быстрая скорость общения для обработки информации. Не мало важно: приватность- что бы никто из сторонних не смог управлять буфером через программу. |
|
|
007wan |
Отправлено: 11 Ноября, 2019 - 09:41:06
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: При закрытии буфер не долженссбрасываться(В киборе такого нету)
Такого нигде нет. Чтобы что-то сохранить это надо куда-то записать и уж точно не в память, потому что она освобождается при закрытии программы. Убедил. Тогда может мне как-то скрытый текстовый файл создать и записать это всё туда? Или не имеет смысла? |
|
|
007wan |
Отправлено: 11 Ноября, 2019 - 17:43:50
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Можно сложный пример? (С комментариями, что б понять)
1) будет создано несколько pipe (3 шт) и запишет туда, в каждый, например, в первый часы, в другой минуты, третий секунды. это первый exe .
Хочу посмотреть реакцию на быстролействие.
2)создается еще 3 exe, которые это будут читать не общая между собой, кроме главного exe и выводить по отдельности время.
Так решится одна проблема, про которую я потом вам скажу, writebuffer не очень подходит для общения. |
|
|
007wan |
Отправлено: 12 Ноября, 2019 - 05:20:12
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: writebuffer не очень подходит для общения.
Почему? я не знаю как мне это назвать. Допустим вы общайтесь с 3 и более программами через буфер кибора с указателем на диалог и главная exe пишет буфер текст для кажжой программы, а те в свою очередь должны его 1)найти: какой текст для чего и кому(парсинг)
2)ответить на него, т.е записать в буфер диалога измененный текст такого плана: найти старый, заменить соответствующий текст на свой и отправить окну, все бы хорошо, только пока одна программа будет меня, то пипец что будет, когда из 50-100 exe, получается россинхрон какой-то, а pipe хотя бы имеют свои созданные буфера - коробки. Смешивание как такового не будет.
Для понимания приведу пример:
1)exe (главный) : пишет окну
"Первая программа закройся, ответь перед закрытием, пж!//текст для первого exe
Вторая включи такую-то опцию...ответь,если успешно
Третья запусти скрипт...ответь, если успешно//это все команды
"
Так вот, пока будет браться старый текст для первого exe, заменяться и даваться ответ, то другие в тоже время сделают тоже самое и будет каша. |
|
|
Zireael |
Отправлено: 12 Ноября, 2019 - 12:36:02
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: 1) и запишет туда, в каждый, например, в первый часы, в другой минуты, третий секунды. это первый exe .
2)создается еще 3 exe, которые это будут читать не общая между собой, кроме главного exe и выводить по отдельности время.
Собрать в exe, назвать server (Отобразить)CODE:char addr[100]; // массив для адресов
char c1[999]; // этот массив будет читать другая программа1
char c2[999]; // этот массив будет читать другая программа2
char c3[999]; // этот массив будет читать другая программа3
strcpy(#addr[0], format(address(#c1[0]))); // адрес массива
strcpy(#addr[12], format(address(#c2[0]))); // адрес массива
strcpy(#addr[24], format(address(#c3[0]))); // адрес массива
writebuffer(#addr[0], sizearray(addr)); // записываем в свой буфер адреса массивов
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
loop()
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
strcpy(#c1[0], "Час: "+format(Hour)); // текст для первой программы
strcpy(#c2[0], "Минуты: "+format(Minute)); // текст для второй программы
strcpy(#c3[0], "Секунды: "+format(Second)); // текст для третьей программы
sleep(300);
}
Первая программа (Отобразить)CODE:char cc[999]; // сюда будем читать текст от сервера
while(window ("server")==0)sleep(10); // ждём пока не найдено окно
sleep(500);
win w=window ("server");
int prc=openprocess(w);
readbuffer(#cc[0], 36, w); // прочитали буфер
int addr=formatsn(format(#cc[0])); // получили адрес массива
loop()
{
readmemory(#cc[0], 100, addr, prc); // читаем
textout(0, 300, 300, format(#cc[0]), 1);
sleep(1000);
}
Вторая программа (Отобразить)CODE:char cc[999]; // сюда будем читать текст от сервера
while(window ("server")==0)sleep(10); // ждём пока не найдено окно
sleep(500);
win w=window ("server");
int prc=openprocess(w);
readbuffer(#cc[0], 36, w); // прочитали буфер
int addr=formatsn(format(#cc[12])); // получили адрес массива
loop()
{
readmemory(#cc[0], 100, addr, prc); // читаем
textout(0, 300, 330, format(#cc[0]), 1);
sleep(1000);
}
Третья программа (Отобразить)CODE:char cc[999]; // сюда будем читать текст от сервера
while(window ("server")==0)sleep(10); // ждём пока не найдено окно
sleep(500);
win w=window ("server");
int prc=openprocess(w);
readbuffer(#cc[0], 36, w); // прочитали буфер
int addr=formatsn(format(#cc[24])); // получили адрес массива
loop()
{
readmemory(#cc[0], 100, addr, prc); // читаем
textout(0, 300, 360, format(#cc[0]), 1);
sleep(1000);
} |
|
|
007wan |
Отправлено: 21 Ноября, 2019 - 13:45:05
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: strcpy(#addr[0], format(address(#c1[0]))); // адрес массива
strcpy(#addr[12], format(address(#c2[0]))); // адрес массива
strcpy(#addr[24], format(address(#c3[0]))); // адрес массива
writebuffer(#addr[0], sizearray(addr)); // записываем в свой буфер адреса массивов
Почему адреса массива 0,12,24? Zireael пишет: readbuffer(#cc[0], 36, w); // прочитали буфер И почему когда читаем буфер у всех адреса 36, а не 0, 12, 24? |
|
|
|