Текущий архив: 2006.08.27;
Скачать: CL | DM;
Вниз
Обмен данными между процессами Найти похожие ветки
← →
Сергей_С (2006-07-13 15:13) [40]2 Игорь Шевченко © (13.07.06 15:11) [39]
ясно
← →
Юрий Зотов © (2006-07-13 19:07) [41]> Сергей_С (13.07.06 15:08) [38]
> другой способ определения размера буфера, без его передачи вместе с
> буфером :). Не уходя от использования FileMapping.
Например, после закладки данных в буфер послать сообщение, а через его параметр(ы) передать размер буфера. Это же сообщение послужит уведомлением о том, что данные готовы и их можно брать. А если еще и посылать его через SendMessage, то получаем полную синхронизацию работы с данными.
При использовании WM_COPYDATA получим практически тот же механизм.
← →
Verg © (2006-07-13 19:20) [42]Обменивайся через сокеты. Поверь, это решение никогда тебя не разочарует.
Ты окажешься
вне привязки к хосту,
вне привязки к платформе, и, практически,
вне ... к ОС.
← →
MikProg © (2006-07-13 19:27) [43]
> FileMapping - это просто кусок памяти.
HANDLE CreateFileMapping(
HANDLE hFile,
LPSECURITY_ATTRIBUTES lpAttributes,
DWORD flProtect,
DWORD dwMaximumSizeHigh,
DWORD dwMaximumSizeLow,
LPCTSTR lpName
);
Это файловый объект (как дисковый файл, пайп и пр.) и с ним можно работать как с файлом, а значит можно выполнять Read пока не EOF.
Почемуто в хелпе к 2005 студии не написано, что если в качестве хендля использовать FFFF... то файл будет создан в составе своп файла, т.е. абсолютно незаметно.
← →
Сергей_С (2006-07-13 21:28) [44]2 Юрий Зотов © (13.07.06 19:07) [41]
Например, после закладки данных в буфер послать сообщение, а через его параметр(ы) передать размер буфера.
Этот путь понятен :) Я до последнего надеялся, что механизм с FileMapping несет в себе также и информацию о размере буфера.
Все-таки "кусок", как его обозвал Игорь - это нечто, имеющее конечные размеры. Но, как выяснилось, это не "кусок", а просто начало пирога. А жаль.
2 Verg © (13.07.06 19:20) [42]
Поверь, это решение никогда тебя не разочарует
Не силен в сетевых технологиях, но что-то мне подсказывает, что механизм с сокетами не будет работать при отсутствии хотя бы одного активного сетевого интерфейса.
Да и вообще, как-то рука не поднимается использовать механизм сетевого обмена для межпроцессного взаимодействия. Поживем - увидим.
← →
GrayFace © (2006-07-13 23:12) [45]Evgeny V © (13.07.06 14:51) [35]
Посигналь обратно неустановленным Event (по твоему примеру один из E2 или Е3), отправляющий знает какой это эвент и будет ждать его, как синхронизацию. Вообще это не метод на мой взгляд, ни с двумя ни с тремя ...так что лучше стандртными способами воспользоваться.
Ээ. А как ждать Reset-анья Event"а?
← →
Verg © (2006-07-14 09:38) [46]
> Да и вообще, как-то рука не поднимается использовать механизм
> сетевого обмена для межпроцессного взаимодействия. Поживем
> - увидим.
Вам виднее. Однако, применение более общих методов всегда являлось предпочитителнее применению частных.
> Не силен в сетевых технологиях, но что-то мне подсказывает,
> что механизм с сокетами не будет работать при отсутствии
> хотя бы одного активного сетевого интерфейса.
Да, по крайней мере loopback интерфейс должен быть активен.
← →
Slym © (2006-07-14 10:09) [47]Demos\Ipcdemos\
← →
Игорь Шевченко © (2006-07-14 10:33) [48]MikProg © (13.07.06 19:27) [43]
> Это файловый объект (как дисковый файл, пайп и пр.) и с
> ним можно работать как с файлом, а значит можно выполнять
> Read пока не EOF.
Пробовал ? Результаты в студию.
← →
MikProg © (2006-07-14 22:50) [49]
> Игорь Шевченко © (14.07.06 10:33) [48]
Автору вопроса бесплатно. А вам даш на даш! Обещаете навсегда оставить менторский тон?
← →
Leonid Troyanovsky © (2006-07-14 22:53) [50]
> MikProg © (14.07.06 22:50) [49]
> Автору вопроса бесплатно. А вам даш на даш! Обещаете навсегда
> оставить менторский тон?
Ты не умничай - просто рукой укажи (с)
--
Regards, LVT.
← →
Ketmar © (2006-07-15 00:14) [51]>MikProg © (14.07.06 22:50) [49]
не раньше, чем участники форумов пообещают не писать ерунды.
← →
atruhin © (2006-07-15 10:06) [52]> [46] Verg © (14.07.06 09:38)
Да, по крайней мере loopback интерфейс должен быть активен.
Это с чего бы? Если на компьютере нет сетевой карты, то и TCP/IP не установлен. Знаю точно, потому что приходилось в подобном случае ручками устанавливать Microsoft loopback adapter. (название могу переврать)
← →
Ketmar © (2006-07-15 11:19) [53]хм. раньше у меня карты не было. TCP/IP -- был. я снова что-то сделал не так?
← →
GrayFace © (2006-07-15 18:06) [54]<offtopic>
Игорь Шевченко ©
Не подскажите мыло?
</offtopic>
← →
MikProg © (2006-07-15 21:56) [55]
> не раньше, чем участники форумов пообещают не писать ерунды.
Очевидно одного из нас вводят в заблуждение слова хелпа или вы пробовали и не получилось?
MS Studio 2005:
Windows Me/98/95: File handles that are used to create file mapping objects must not be used in subsequent calls to file I/O functions, such as ReadFile and WriteFile. In general, if a file handle is used in a successful call to the CreateFileMapping function, do not use that handle until you close the corresponding file mapping object.
В то время как MS Help к D7 зарпещает оное действие только для:
Windows 95: File handles that have been used to create file-mapping objects must not be used in subsequent calls to file I/O functions, such as ReadFile and WriteFile. In general, if a file handle has been used in a successful call to the CreateFileMapping function, do not use that handle unless you first close the corresponding file-mapping object.
← →
Игорь Шевченко © (2006-07-15 22:05) [56]MikProg © (13.07.06 19:27) [43]
> > FileMapping - это просто кусок памяти.
>
> HANDLE CreateFileMapping(
> HANDLE hFile,
> LPSECURITY_ATTRIBUTES lpAttributes,
> DWORD flProtect,
> DWORD dwMaximumSizeHigh,
> DWORD dwMaximumSizeLow,
> LPCTSTR lpName
> );
> Это файловый объект (как дисковый файл, пайп и пр.) и с
> ним можно работать как с файлом, а значит можно выполнять
> Read пока не EOF.
> Почемуто в хелпе к 2005 студии не написано, что если в качестве
> хендля использовать FFFF... то файл будет создан в составе
> своп файла, т.е. абсолютно незаметно.
> Очевидно одного из нас вводят в заблуждение слова хелпа
> или вы пробовали и не получилось?
> MS Studio 2005:
> Windows Me/98/95: File handles that are used to create
> file mapping objects must not be used in subsequent calls
> to file I/O functions, such as ReadFile and WriteFile. In
> general, if a file handle is used in a successful call to
> the CreateFileMapping function, do not use that handle until
> you close the corresponding file mapping object.
> В то время как MS Help к D7 зарпещает оное действие только
> для:
> Windows 95: File handles that have been used to create file-
> mapping objects must not be used in subsequent calls to
> file I/O functions, such as ReadFile and WriteFile. In general,
> if a file handle has been used in a successful call to
> the CreateFileMapping function, do not use that handle unless
> you first close the corresponding file-mapping object.
"Беда в том, Шариков, что вы несете чушь, и, что самое страшное, несете ее безапелляционно"
← →
MikProg © (2006-07-15 23:47) [57]Дешевые понты. Фраза из документации или пример кода спасет вашу репутацию. А пока видно что вы о файлмаппинге знаете понаслышке.
← →
Игорь Шевченко © (2006-07-16 00:41) [58]MikProg © (15.07.06 23:47) [57]
Нет, дорогой друг, это ты приведи пример кода чтения по filemapping handle до eof, согласно своему утверждению
> Это файловый объект (как дисковый файл, пайп и пр.) и с
>
> ним можно работать как с файлом, а значит можно выполнять
>
> Read пока не EOF.
Вот когда приведешь, тогда продолжим дискуссию. Еще Рихтера почитай, который Джеффри. Он про файлмаппинг много интересного писал, а главное, доходчиво.
← →
MikProg © (2006-07-16 09:19) [59]http://www.soft32.ru/literature.shtml?topic=visual&book=1&page=head17.htm
"Пальцем покажи" ©
Ну и? Пересказ хелпа для не знающих ангельского вижу, но не боле.
← →
Игорь Шевченко © (2006-07-16 19:25) [60]MikProg © (16.07.06 09:19) [59]
Где код чтения из FileMapping до Eof ?
← →
MikProg © (2006-07-16 22:08) [61]Трындец!!! Полный!!! Этож не Библия! Это макулатурка для начинающих!
← →
Игорь Шевченко © (2006-07-16 23:46) [62]MikProg © (16.07.06 22:08) [61]
Дорогой друг, я по-прежнему жду твоего кода чтения до Eof с помощью Handle, полученного по CreateFileMapping.
← →
Суслик © (2006-07-17 00:08) [63]о детский сад продолжается
ЗЫ.
Игорь, сам знаешь, что не всех можно научить :)
Некоторых просто не берут в 9 класс, а отправляют в техникум, можно клинарный.
← →
Игорь Шевченко © (2006-07-17 00:11) [64]Суслик © (17.07.06 00:08) [63]
Дима я был бы тебе крайне признателен, если бы свое мнение ты выражал бы не столь публично, а, например, по аське.
← →
Ketmar © (2006-07-17 03:40) [65]MikProg, неуважаемый, а не пошли бы вы читать мануалы? прежде чем давать "советы космического масштаба и космической же глупости"...
поверьте (проверить вы не можете по понятной причине), что здесь собрались далеко не дилетанты... и уж Игорь -- однозначно не дилетант. и если он говорит -- то знает...
← →
tButton © (2006-07-17 04:56) [66]не, я может глупость скажу... но разве "буфер обмена" (который clipboard) он не для обмена данными между приложениями? =)
← →
Юрий Зотов © (2006-07-17 07:32) [67]> tButton © (17.07.06 04:56) [66]
Да, но он для пользователя. Вряд ли кому понравится программа, которая затирает буфер обмена.
"The clipboard is user-driven. A window should transfer data to or from the clipboard only in response to a command from the user. A window must not use the clipboard to transfer data without the user"s knowledge".
Цитата - из MSDN. Скопирована через буфер обмена. Это удалось сделать потому, что у меня таких программ, к счастью, не установлено...
:о)
← →
tButton © (2006-07-17 08:06) [68]хм. оно конечно понятно.
но ведь ситуация самая типичная.
* бэкапим буфер
* пишем в него свои данные
* сигналим второе программе, чтоб приняла данные
* вторая программа принимает данные и сигналит первой что всё путём
* первая программа возвращает содержимое буфера на место
для красоты можно либо запретить пользователю что либо делать, либо предупредить его
ну и если программы обмениваются довольно часто и работают в фоне, то наверное такой способ не подойдёт.
ПыСы
я бы вообще не выпендривался, а сделал обмен данными через сокеты
← →
MikProg © (2006-07-17 08:55) [69]The MapViewOfFile function returns a pointer to the file view. By dereferencing a pointer in the range of addresses specified in MapViewOfFile, an application can read data from the file and write data to the file. Writing to the file view results in changes to the file mapping object. The actual writing to the file on disk is handled by the system. Data is not actually transferred at the time the file mapping object is written to. Instead, much of the file input and output (I/O) is cached to improve general system performance. Applications can override this behavior by calling the FlushViewOfFile function to force the system to perform disk transactions immediately.
Специально для корифеев болдом
Data is not actually transferred at the time the file mapping object is written to Instead, much of the file input and output (I/O) is cached to improve general system performance. Applications can override this behavior by calling the FlushViewOfFile function to force the system to perform disk transactions immediately
Специально для корифеефилов
by calling the FlushViewOfFile function to force the system to perform disk transactions immediately
← →
Юрий Зотов © (2006-07-17 08:57) [70]> tButton © (17.07.06 08:06) [68]
Еще можно передавать данные, например, через Excel. По той же схеме.
:о)
← →
Юрий Зотов © (2006-07-17 09:05) [71]> MikProg © (17.07.06 08:55) [69]
Не вмешиваясь в вашу дискуссию, все же замечу, что 20 строчек кода были бы в 20 раз убедительнее, чем 20 строчек текста. ИМХО.
:о)
← →
tButton © (2006-07-17 09:12) [72]
> Еще можно передавать данные, например, через Excel. По той
> же схеме.
> :о)
метод универсален в своей примитивности =)
← →
Ketmar © (2006-07-17 10:23) [73]>MikProg © (17.07.06 08:55) [69]
код где? рабочий код?
← →
evvcom © (2006-07-17 10:32) [74]
> [73] Ketmar © (17.07.06 10:23)
> >MikProg © (17.07.06 08:55) [69]
> код где? рабочий код?
Да он, похоже, только баснями кормить умеет. Крылов наш. :)
← →
Игорь Шевченко © (2006-07-17 10:32) [75]MikProg © (17.07.06 08:55) [69]
Где код Read до Eof ? Если сказал ерунду, то хоть признайся в этом, а не пости цитаты из help"а, не относящиеся к твоему заявлению.
← →
MikProg © (2006-07-17 10:33) [76]Там же где и ваш и Суслика и Шевченко. Теореетики. :)
← →
tButton © (2006-07-17 10:40) [77]<offtop>
> Теореетики. :)
хорошая опечатка =)
ещё вариант - "Теоеретики" =)
</offtop>
← →
Игорь Шевченко © (2006-07-17 10:45) [78]MikProg © (17.07.06 10:33) [76]
LMD
← →
Fay © (2006-07-17 11:11) [79]2 MikProg © (17.07.06 10:33) [76]
Ступай и не греши. Твой бред тянет на орешник, только читать его грустно.
← →
sniknik © (2006-07-17 11:20) [80]краткая аллегорическая стенограмма спора ;), для тех кому всю ветку влом читать. суть так сказать.
- угадаю мелодию с шести нот!
- я, с пяти!
- с четырех!
- трех!
- двух!
- с одной!!!
- это невозможно. угадывай!!!
- нет это возможно. сам угадывай!!! теоретик.
последние две строчки повторяются в периоде. ноты по количеству это методы решений.
p.s. тоже неохота "встревать", но всетаки кажется логичным показать как это делается тому кто говорит, что это возможно, а не тому кто говорит невозможно (ему то и показывать нечего. если решения нет. то его нет.).
Страницы: 1 2 3 вся ветка
Текущий архив: 2006.08.27;
Скачать: CL | DM;
Память: 0.64 MB
Время: 0.041 c