powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ресурсы
23 сообщений из 23, страница 1 из 1
Ресурсы
    #32851788
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело было так:

Есть процесс, который создаёт некий ресурс. Например иконку.
Есть второй процесс, с кнопкой.
Дык вот BM_SETIMAGE из первого процесса во второй сказать нельзя, потому что второй процесс не имеет доступа к памяти первого:

SendMessage(hBut_in2, BM_SETIMAGE, IMAGE_ICON, (long)hIcon_in1);

облом.

Скажите, как первому процессу дать доступ к своим ресурсам?
...
Рейтинг: 0 / 0
Ресурсы
    #32851866
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для такой мелочи наверно удобнее всего использовать WM_COPYDATA
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
Ресурсы
    #32851869
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Передать как кусок данных, а не как ресурс
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
Ресурсы
    #32852057
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак. У них разная память. Главное - нафига ?
...
Рейтинг: 0 / 0
Ресурсы
    #32852284
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторудобнее всего использовать WM_COPYDATA
Дык, эта, тот кому это послали, должен ведь обработать это сообщение?

авторНикак.
Нее, всегда можно что-то сделать, даже когда кажется, что нельзя.

авторГлавное - нафига ?
Надо.

Ааа, блин.
Можно сред приаттачить. Но, ёпрст, слишком жирно для такой маленькой операции...

Ок, кто что ещё придумает - пишите, я пошёл копать...
...
Рейтинг: 0 / 0
Ресурсы
    #32862362
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОк, кто что ещё придумает - пишите
Что ли никто ничего не придумал?
...
Рейтинг: 0 / 0
Ресурсы
    #32862416
Maksim UM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMb авторОк, кто что ещё придумает - пишите
Что ли никто ничего не придумал?

Можно еще попробовать во втором процессе сделать
handle=LoadLibrary(первый процесс)
LoadIcon(handle,...)
...
Рейтинг: 0 / 0
Ресурсы
    #32862852
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb авторудобнее всего использовать WM_COPYDATA
Дык, эта, тот кому это послали, должен ведь обработать это сообщение?

А WM_COPYDATA именно копирует данные из памяти одного приложения
в память другого. Средствами OS.
...
Рейтинг: 0 / 0
Ресурсы
    #32864480
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaksimМожно еще попробовать во втором процессе сделать
handle=LoadLibrary(первый процесс)
LoadIcon(handle,...)

Не, нельзя. Нету доступа к исходникам второго процесса.

MasterА WM_COPYDATA именно копирует данные из памяти одного приложения
в память другого. Средствами OS.
Это-то ясно.
Я к тому, что если я из первого процесса делаю
Код: plaintext
SendMessage(hWnd_od_2nd_proc,WM_COPYDATA,hWnd_od_1st_proc,(long)data);
то во втором процессе надо же этот посыл разобрать:
Код: plaintext
1.
2.
...
case WM_COPYDATA:
...
?
Или нет?
...
Рейтинг: 0 / 0
Ресурсы
    #32864714
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и обработаешь, сложно што-ли)))
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
Ресурсы
    #32866940
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блииин, не могу я обработать, не мой процесс, нету у меня к нему доступа, вот,блин, в чём, блин, проблема, блин!
Мне надо создать ресурс в памяти чужого процесса.
...
Рейтинг: 0 / 0
Ресурсы
    #32866949
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
другими словами:
тебе нужно заставить процесс выполнить определенные действия,
но сделать этого ты не можешь, потому что это невозможно :-)

козьма прутков умный мужыки были, бывало говаривали
нельзя объять необъятное. да помногу раз повторяли. нет. нельзя. если очень захотеть - тоже нельзя. :-)
...
Рейтинг: 0 / 0
Ресурсы
    #32867553
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbБлииин, не могу я обработать, не мой процесс, нету у меня к нему доступа, вот,блин, в чём, блин, проблема, блин!
Мне надо создать ресурс в памяти чужого процесса.

Ага, а использовать этот ресурс этот процесс как будет ? Кто его заставит ?
Короче, либо просто редактором ресурсов положи этот ресурс в этот модуль ( статичное решение), либо надо внедряться в пространство того процесса (это сложно), но как заставить его использовать этот ресурс - не понятно.
Как внедряться - написано в книге Джефри Рихтера и есть на www.rsdn.ru
...
Рейтинг: 0 / 0
Ресурсы
    #32869076
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_kно сделать этого ты не можешь, потому что это невозможно :-)
Вот тут ты не прав :)
Во-первых. Я заставить это делать я его смог сразу. Просто ресурс был не тот, так как загрузить было неоткуда.

Во-вторых. Оффтоп. Нет ничего невозможного. Если поставить себе это за принцип, можно много сделать. Например нахождение максимума без операции сравнения или полноценное прозрачное окно под WINDOWS<=0x400

К тому же, у меня есть программа(рассширение которой и повлекло этот вопрос). Которая очень хорошо умеет лезть в чужие окна. Как спай. Тока спай смотрит, а моя может менять. Оффтоп: это не хакерство, это надо было по работе, были ситуации, когда надо было проэмулировать некоторые действия окон при некоторых состояниях. А поднять эти окна - долгая/нудная песня. И чтобы каждый раз для одного шага теста не гонять весь проект, была написана полупрога для работы с окнами.
Теперь вот понадобились ресурсы.

МастерКак внедряться - написано в книге Джефри Рихтера и есть на www.rsdn.ru
Спасиб!
...
Рейтинг: 0 / 0
Ресурсы
    #32869739
MKV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ключевые слова
HICON; поиск и загрузка ресурсов; LoadResource; LockResource; LoadIcon; сомнение; гипотеза


Кажись должно быть осуществимо все-же, ведь в трей суют и вообще...
А точно ли что это существенно, что у этих двух процессов разная память? Я сам не попробовал, но мне кажется что это тут рояля не играет. Не а глобальной ли памяти виндовые хенделы сидят? - помоему так и есть. Не может ли вся фигня быть в том, что при использовании некоторых способов загрузки (к которым все привыкли) они автоматом выгружаются после окончания процесса? Уточните - какой функцией грузите иконку?

см. также
/topic/14640&hl=hicon
http://www.sql.ru/forum/actualsearch.aspx?search=HICON&a=&ma=0&bid=0&dt=-1&s=1&so=1
...
Рейтинг: 0 / 0
Ресурсы
    #32870395
kulpavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MKV
А точно ли что это существенно, что у этих двух процессов разная память?
по определению у двух процессов разное адресное пространство, каждому выделено по по 4 Гб вирт памяти, правда тока для Win2000 и выше соответственно, а в 98 и 95 все процессы включая системные разделяли одну область виртуальной памяти,поэтому все и падало... ((:
...
Рейтинг: 0 / 0
Ресурсы
    #32870540
MKV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адресное пространство разное, но биты иконки разве сидит в адресном пространстве процесса? Не располагаются ли ее биты в адресном пространстве ОС? То есть когда мы вызываем LoadIcon, то биты засасывает ОС, а наружу выдают хендел HICON - вроде так было бы логично.
Если все так, то сценарий описанный CEMb вполне должен работать. Мы сообщаем через BM_SETIMAGE хендел иконки, и вообще вся работа идет через хенделы, а память реальная в адресном пространстве ОС.

Меня смущает вот в этом утверждении

CEMb
BM_SETIMAGE из первого процесса во второй сказать нельзя, потому что второй процесс не имеет доступа к памяти первого:

SendMessage(hBut_in2, BM_SETIMAGE, IMAGE_ICON, (long)hIcon_in1);


такой момент - а чем hBut_in2 принципиально отличается от hIcon_in1 в плане памяти и процессов?
...
Рейтинг: 0 / 0
Ресурсы
    #32870552
kulpavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
но биты иконки разве сидит в адресном пространстве процесса? Не располагаются ли ее биты в адресном пространстве ОС?
нет они маппируются в адресное пространство процесса вызвавшего ресурс.а хендл-ссылка на область.
Код: plaintext
а чем hBut_in2 принципиально отличается от hIcon_in1 в плане памяти и процессов?
указатели на области памяти РАЗНЫХ процессов.
...
Рейтинг: 0 / 0
Ресурсы
    #32870662
MKV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, раз иконка в том, где ресурс загружали, то кисляк
...
Рейтинг: 0 / 0
Ресурсы
    #32870889
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем-то можно открыв процесс с помощью OpenProcess и получив доступ к памяти с помощью VirtualAllocEx (нужны привелегии), можно попытаться подсунуть свою иконку в память другого процесса...
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
Ресурсы
    #32870923
kulpavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbБлииин, не могу я обработать, не мой процесс, нету у меня к нему доступа, вот,блин, в чём, блин, проблема, блин!
Мне надо создать ресурс в памяти чужого процесса.
об этом уже упомяналось...
MasterZiv
Ага, а использовать этот ресурс этот процесс как будет ? Кто его заставит ?
Короче, либо просто редактором ресурсов положи этот ресурс в этот модуль ( статичное решение), либо надо внедряться в пространство того процесса (это сложно), но как заставить его использовать этот ресурс - не понятно.
Как внедряться - написано в книге Джефри Рихтера и есть на www.rsdn.ru
...
Рейтинг: 0 / 0
Ресурсы
    #32871349
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На счёт разделённости ресурсов по процессам.

Делался такой тест:
Создавался фонт.
Брался ДС окна, и туда селектился фонт, с сохранением старого.
Если всё это применять на родные окна, то фонт устанавливается, старый сохраняется, и потом восстанавливается.

Если тоже самое делать с чужим окном - старый фонт с селектобжект возвращается _ненулевой_, новый-свой не устанавливается - в окне стандартный системный(страшноквадратный). Старый фонт восстанавливается.

Стало быть, хэндлы указывают на разные куски памяти...
...
Рейтинг: 0 / 0
Ресурсы
    #32872126
MKV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivлибо надо внедряться в пространство того процесса (это сложно), но как заставить его использовать этот ресурс - не понятно
Внедрившись можно какое-нибудь окно отсабклассить, и при каком-то событии сделать дополнительные вещи (BM_SETIMAGE ).
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ресурсы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]