|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.05.2009, 18:17 | #1 |
Delphi\C++
Форумчанин
Регистрация: 18.06.2008
Сообщений: 277
|
Загрузить процесс в память, но не допустить запуска
Я не знаю возможно ли такое, но например есть firefox.exe, возможно ли при нажатии на Button1 загрузить этот исполняемый файл, а при нажатии на Button2 показать(запустить) программу.
Мне приходила идея для решения этой задачи, например запустив с помощью WinExec, а потом узнав хэндл firefox скрыть его с помощью функции ShowWindow. Но как тогда этот хэндл узнать? Помогите пожалуйста найти другой способ решения этой задачи или как узнать хэндл чужого приложения. Заранее благодарен! |
27.05.2009, 18:48 | #2 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
Как вариант , найти его по названию окна , по идее функция может находить и окна с неточным указанием названия
function FindWindow(lpClassName, lpWindowName: PChar): HWND; stdcall; На счёт указания в названии окна - не смотрел , может можно найти по маске .. а маска для фаерфокса не сложна ( хоть я и не пользуюсь , но название окна начинается с Firefox ... ) Как 2рой вариант , в интернете не сложно найти примеры как по процессу найти все привязанные к нему окна. Точнее их хэндлы. |
27.05.2009, 18:50 | #3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
где то было про запуск процесса из памяти(то есть например из Мемори стрима чтоли), надо поискать...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
27.05.2009, 20:56 | #4 |
Delphi\C++
Форумчанин
Регистрация: 18.06.2008
Сообщений: 277
|
Lime, дело в том что firefox.exe я привёл для примера, мне нужно чтобы это работало для любой программы, то есть указал путь к исполняемому файлу и всё ок.
Вообще-то по моему можно зная имя процесса, узнать хэндл главного окна или всех окон, но как это делается я ума не приложу. |
27.05.2009, 21:23 | #5 | |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
Цитата:
а в общем там просто комбинация этих функций и доступ к ним на разных этапах .. Вот обратная процедура ( топ гугла ) ссылка 1 В этой теме есть ответ на Ваш вопрос , необходимо лиш немного переделать приведённый код. Добавить несколько проверок и Вуаля ) ссылка 2 |
|
27.05.2009, 21:35 | #6 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
ShellExecute возвращает хэндл запущенного процесса...
|
27.05.2009, 22:45 | #7 |
Delphi\C++
Форумчанин
Регистрация: 18.06.2008
Сообщений: 277
|
Lime, спасибо за ссылки, почитаю.
mihali4, я пробовал, но тот хэндл какой эта процедура возвращает не существует. На верно вы ошибайтесь. |
27.05.2009, 23:35 | #8 | |
Форумчанин
Регистрация: 13.01.2008
Сообщений: 140
|
Если функция ShellExecute успешна, то возвращается значение больше 32, то бишь хендл процесса, иначе возвращается код ошибки...
Совершенно верно. Цитата:
Последний раз редактировалось mihali4; 27.05.2009 в 23:38. |
|
28.05.2009, 11:17 | #9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А что CreateProcess с CREATE_SUSPENDED уже отменили?
I'm learning to live...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Контроль запуска | SONce | Общие вопросы Delphi | 7 | 17.04.2009 17:43 |
Как загрузить свою DLL в атакуемый процесс, который не знает о ее существовании - Создание хуков | KleoY | Win Api | 18 | 30.03.2009 14:31 |
проблема запуска приложения | Mazaxaka | Общие вопросы Delphi | 2 | 27.03.2009 14:51 |
параметры запуска | TaTT DoGG | Общие вопросы .NET | 5 | 19.03.2009 16:19 |