Можно ли создать диалог. окно чтоб по GetWindowThreadProcessId...

Тема в разделе "WASM.WIN32", создана пользователем Asterix, 13 мар 2005.

  1. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Можно ли создать диалоговое окно чтоб по GetWindowThreadProcessId

    нельзя было получить PID процесса
     
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Нет нельзя

    Окну надо передавать сообщения

    а как вы представляете передачу сообщений когда PID неизвестен *?
     
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Известен хэндл окна, помоему достаточно..
     
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    :) хм все элементрарно

    он (хендл) выдается только по PID

    все хендлы должны иметь хозяина (с)
     
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Ладно, сформулирую по другому, винда пусть все знает, но никому не выдает, по крайней мере функции GetWindowThreadProcessId :derisive:
     
  6. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Хм не совсем понял - но попробуй перехватить тогда эту функцию (пусть винда знает то функция выдает калл)
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Короче имеется приложение, которое нормально относится к загрузке в своё адресное пространство DLL, но не переносит если в этой DLL создаётся диалоговое окно, т.е. в DLLMain создается thread в нем окно.. появилось предположение что приложение перебирает все окна и если окно принадлежит процессу и не является его родным окном все прибивается..

    нужно как-то обойти сложившееся недоразумение, будут предложения?
     
  8. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    не понимаю

    если окно открывается из DLL то оно открывается на PID того, кто открыл DLL и все должно быть нормально (1000 раз делал все работало)

    Или вы там не прально окно создаете или я не понял, что вы хотите ..
     
  9. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    > не понимаю



    Я вроде понятно написал %)

    В любом другом приложении всё будет работать, т.к. окно создаётся как положено. Не работает только в данном конкретном приложении, т.к. оно явно этого не хочет.
     
  10. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    > то оно открывается на PID того, кто открыл DLL и все должно быть нормально (1000 раз делал все работало)



    Уточняю.

    Например, приложение знает что у него может быть только одно окно с конкретным названием и классом, и если, вдруг, появляется другое окно принадлежащее этому процессу, то процесс прибивается.
     
  11. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    а пропатчить само приложение на предмет поиска им окон?
     
  12. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    > а пропатчить само приложение на предмет поиска им окон?



    Неприемлемо, т.к. я во первых не знаю каким образом оно ищет окно, тем более это протектор, да ещё глючный, который я даже ставить сейчас уже не хочу, да и хотелось универсальности.
     
  13. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Про класс :я бы назвал класс своего окна так как и у родного, это же ведь только имя, и совпадения проверяет компиллер

    НО

    еслибы делал такую прогу, на проверку окна, то я бы не стал проверять окна это же поток нужно создать и все такое. Думаю те кто делал просто поставили хук на API создания окна и просто запретили открытия новых окон

    вот и все. В этом случаи нужно самому узнать реальный адрес API открытия окна и вызвать именно его

    а не подставу (напримет так как для виря вычисляли адрес функции)

    а вообще, для этого дела есть специально готовая библиотека в си =)) (detours.h) (это мне посоветавали сам незнал)
     
  14. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    пока что созрела такая мысля, перехватываем сообщения от клавы, и по определенным последовательностям выполняем необходимые действия, т.е. без создания окна, но все-таки хотелось какого-нибудь визуального интерфейса
     
  15. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    TermoSINteZ

    Вообще-то моё окно создается до старта целевого процесса, т.е. процесс стопорится на EP, загружается DLL, потом пускается дальше, причем окно нормально создается и успевает показаться на экране.