|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.11.2008, 21:22 | #1 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Передача хэндла через командную строку
Здравствуйте. Вопрос на первый взгляд ламерский, но я в нем затупился конкретно. Гугл мне не сильно помог, да и на форуме ничего толком не нашел.
Суть вопроса вот в чем. Нужно написать прогу (эт я сам как-нить ). В которой будет 3 процесса. Первый процесс создает файл (ну или открывает уже имеющийся), мэпает его, создает Мютекс. Потом создает два процесса второй проги (тоже сам как-нить напишу), в первый экземпляр передается дескриптор мютекса и имя проекции файла. А во второй - имя мютекса и имя проекции. Передача идет через командную строку. Терь проблемы: 1. Создаю строку, для передачи в первый процесс в качестве командной. Пытаюсь туда скопировать (функцией strcpy) имя проекции, а на этой строке вылетает Exception и код ошибки 5, тоесть нету доступа. Нету доступа к той строке, которая будет использована в качестве командной, тоесть та, в которую копирую. Код:
Помогите, а то вопрос (как я думал) в принципе не сложный, а вот инфы почти нету. ПыСы: Язык С++ Последний раз редактировалось MaTBeu; 25.11.2008 в 21:26. |
25.11.2008, 21:36 | #2 |
Тупой студент
Форумчанин
Регистрация: 12.05.2007
Сообщений: 614
|
2MaTBeu не очень вникал в суть вопроса, но всеж) ты память то выделил под lpCmd? т.к LPSTR это указатель на строку)
|
25.11.2008, 21:36 | #3 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
во-первых, хендл это простое число.
во-вторых, если ты хендл (вернее цифру) передаш в другое приложение, то там он будет недействителен, приложение должно само открыть нужный объект. у мьютексов есть имена, эти имена и передавай через командную строку. |
25.11.2008, 21:43 | #4 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
2vvviperrr
Код:
2rpy3uH В том, то и дело, что надо именно хэндл передать через командную строку (я смысла сам не понимаю, но препод сказал). Так же я не представляю как открывать мютекс чисто по хендлу (такого ж вроде нету???). Скажу преподу пускай правит задание. ПыСы: а если адрес хэндла передавать? |
25.11.2008, 22:08 | #5 | ||
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
Цитата:
Хэндлы можно передавать другой проге. Смысл этого в том, чтобы понять как это делается. А зачем это может применяться на практике - <?..> Цитата:
|
||
25.11.2008, 22:19 | #6 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Тоесть вы хотите сказать, что надо просто наследовать хэндлы дочерних процессов от родителя? Ну и как потом можно передать хэндл мютекса?
Не сильно понятно вы выразились. ПыСы: короче я понял, что хэндл передавать смысла нету. Так что сделаю с именем. А вот вопрос по поводу строк и ERROR_ACCESS_DENIED остается открытым... Последний раз редактировалось MaTBeu; 25.11.2008 в 22:46. |
25.11.2008, 23:17 | #7 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
Можно разрешить наследовать хэндлы и передать хэндл через командную строку, если действительно именно так надо. Но лучше передавать имя.
|
26.11.2008, 17:50 | #8 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
насчёт строк:
Код:
|
26.11.2008, 21:55 | #9 | |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
2rpy3uH
Да, я к этому выводу тоже пришел. Только вот если парсить командную строку на слова, то присвоить ее так не получиться. Тоесть закинуть и передать эту строку выйдет, а вот на стороне "клиента" разбить ее на слова врядли получиться. ПыСы: Код:
Цитата:
Код:
Последний раз редактировалось MaTBeu; 26.11.2008 в 23:00. |
|
29.11.2008, 15:30 | #10 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Но в данном методе тоже есть недостаток. Если строк, в которые нужно писать несколько, то получается, что они будут находится по одному и тому же адресу, и при изменении одной, будут изменяться все.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача файла через TServerSocket и TClientSocket | Vanya | Работа с сетью в Delphi | 10 | 08.04.2008 18:12 |
передача данных через idtcpclient | BioS | Работа с сетью в Delphi | 0 | 20.02.2007 11:04 |
Передача данных(массива) через DLL. | acorables | Общие вопросы Delphi | 4 | 05.02.2007 13:16 |