В хвост к целевому приложению приаттачиваю свой экзешник, пропатчиваю приложение так, чтобы осуществлялся запуск моего экзешника из памяти. Настройка и запуск происходят в отдельном треде, паралельно работе самого приложения. Вот, только трабл весь в том, что если не поставить самый высокий приоритет этому треду, то он вообще не запускается :\ Как такое может быть? Если же поставить высокий приоритет, то сначала выполняется тред (при этом основное приложение заметно притормаживает в начале), а потом уже вся остальная программа. Хотелось бы добиться незаметности в работе, избавиться от тормозов в начале, чтобы код приаттаченого экзешника выполнялся паралельно работе основного приложения. Что посоветуете?
MSoft А вот и не выложу. Так-как вопрос поставлен и так конкретней некуда. Если приложению прописано выполнить тред, пусть даже с самым низким приоритетом, ведь, оно его должно выполнить прежде чем завершится?
Aspire извиняюсь за глупый вопрос, но что ты сейчас от нас хочешь? у меня создание треда всегда работало на отлично. А 36-ю строку ты все-таки проверь )) Вариантов куча: 1) тред жутко тормозит и поэтому ты просто не дожидаешься его работы 2) касперский проверяет треды вне образа файла 3) так совпали звезды 4) ошибка в драйвере hands.sys 5) ошибка в 36-й строке Что еще ты хочешь услышать - хз.
Приложение и запускает. Или вы имелли ввиду, что нужно после начала выполнения треда снизить его приоритет ниже основного приложения, чтобы оно начало выполняться? MSoft У меня такая хрень уже не первый раз. Начинаю разбираться, почему не работает та или иная "конструкция" и получается, что под отладчиком все прекрасно работает, а без отладчика - нет. Ага...причем настолько, что программа уже завершилась, а тред еще даже и не начинался ))) Во-первых у него такой сигнатуры еще нет. Во-вторых я его снес недавно )) Она пустая, я проверил ))
Но создание Вашего побочного потока происходит из оригинального потока? А если в оригинальном потоке поставить WaitForSingleObject с INFINITE с указанием возвращенного CreateThread хэндла, то Ваш побочный поток выполнится или все приложение полностью повиснет? AFAIK не должно, если параллельный поток выполнит ExitProcess.
Aspire Ну может поток suspended создался. У меня не раз получалось, что счетчик suspend'ов потока взлетал до небес неизвестным образом. Вот и решил переспросить на всякий случай. И еще... может целевое приложение своему потоку само слишком завышеный приоритет ставит?