Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2008, 10:48   #11
Ins
Форумчанин
 
Регистрация: 29.12.2007
Сообщений: 137
По умолчанию

Цитата:
И такой вариант:
Кажется, этот способ Гарри Неббетт изобрел, но на XP и выше работать не будет. Волшебный хэндл со значением 4 более не указывает на секцию-образ исполняемого файла...
Ins вне форума Ответить с цитированием
Старый 18.01.2008, 00:50   #12
eks-s
Пользователь
 
Регистрация: 15.01.2008
Сообщений: 64
По умолчанию

Извините, а как с русскими путями извратиться можно?
eks-s вне форума Ответить с цитированием
Старый 23.01.2008, 03:35   #13
eks-s
Пользователь
 
Регистрация: 15.01.2008
Сообщений: 64
По умолчанию

Кстати чтоб решить проблему с русскими буквами в пути

В пакетнике можно вместо пути прописать %MyPath%, где %MyPath% - это переменная пользователя, хранящаяся в реестре, в HKEY_CURRENT_USER\Environment. Добавить её перед созданием bat-файла не сложно
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Environment',False);
reg.WriteString('MyPathTemp',ParamS tr(0));

только одна проблемка. Если создать её вручную через Система - Дополнительно - Переменные среды - Переменные среды пользователя. То всё сразу работает. Если создать моим способом, то значение переменной обновляется только после перезагрузки. Кто знает как решить?
eks-s вне форума Ответить с цитированием
Старый 23.01.2008, 10:28   #14
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Вообще, это делается не так.
1. Из процесса А создается файл В в режиме FILE_SHARE_DELETE|FILE_SHARE_WRITE с флагом FILE_FLAG_DELETE_ON_CLOSE
2. В этот новый файл записывается выполняемый образ.
3. Процесс А создает процесс В на базе файла В и ждет сигнала Sb
4. Процесс В инициализируется и выставляет сигнал Sb и ждет завершения процесса А
5. Процесс A дожидается сигнала Sb, закрывает хэндл файла В и завершается.
6. Процесс В получает сигнал о завершении процесса А и удаляет файл, "которым был" процесс А.
7. Процесс В делает всю необходимую работу и завершается.
8. После его завершения ОС закрывает хэндл файла В и, поскольку других открытых хэндлов на этот файл не осталось (п.5) и при создании файла были указаны флаги из п.1, удаляет файл.
Т.о. вся работа состоит в синхронизации двух процессов и передаче параметров от А к В.

А касаемо варианта с переменными среды - они передаются при создании нового процесса через параметр lpEnvironment функции CreateProcess.
B_N вне форума Ответить с цитированием
Старый 11.06.2008, 02:13   #15
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию

Ребята, ниодин код не срабатывает. Программа не удаляется, bat фаил создается, но не удаляется. Это не может быть связанно с системой или антивирусом?
Черничный вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как зделать авто выполнение Editor Общие вопросы Delphi 5 27.04.2008 21:01
Авто-Прокрутка в Memo eks-s Общие вопросы Delphi 2 18.04.2008 01:52
НДФЛ+продажа авто Elm0 Свободное общение 0 05.04.2008 17:07
Авто-фильтр, Нужна помощь jungo Microsoft Office Excel 2 23.03.2008 11:17
Создание авто- загрузочной проги Gaist Общие вопросы Delphi 3 13.06.2007 13:09