MessageBox не пашед

Тема в разделе "WASM.WIN32", создана пользователем qwqwqwqw, 10 апр 2009.

  1. qwqwqwqw

    qwqwqwqw New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2009
    Сообщения:
    54
    всем привет!

    недавно обнаружил что в контексте процесса svchost вызов месаджбокс работает не так как ожидается

    кроме щелчка характерного больше ничего нет ,никакого окна не вылазиет ......

    более того ... многие функи мне нужные отказались корректно работать ...
    с чем это может быть связано , и какие есть пути решения ?
     
  2. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    qwqwqwqw
    Сервисы обычно не предназначены для взаимодействия с пользователем и создания окон. Если это нужно включают опцию SERVICE_INTERACTIVE_PROCESS при CreateService. Но если процесс сервиса имеет привилегии LocalSystem все равно ничего не получиться, т.к. создав окно сервисом на дефолтном рабочем столе, все другие приложения должны будут взаимодействовать с этим окном изнутри. Из-за этих причин если хочешь что-то выводить или получать ввод от пользователя, создавай отдельный процесс и применяй IPC между ним и твоим сервисом svchost. Чтобы создать такой процесс юзай CreateProcessAsUser.
     
  3. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    Если хочешь вывести MessageBox без создания лишнего процесса и действий юзай WTSSendMessage, либо сделай инжект в explorer к примеру.
     
  4. qwqwqwqw

    qwqwqwqw New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2009
    Сообщения:
    54
    а если просто код инжектю в scvhost то пловина фунок перестает норм работать, создавать новые сервисы не нужно ... как это обойти ?
     
  5. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    qwqwqwqw, обойдите вы ето стороной!
     
  6. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    работа с окнами там не проходит, да и зачем. Вместо MessageBox, (я так понимаю нужен для отладки), используй вывод в файл или Beep или вызывай исключение (DebugPrint если уж на то пошло).
     
  7. BaGiE

    BaGiE New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2005
    Сообщения:
    84
    Адрес:
    Mordor
    Попробуй это выполнить вначале запуска твоего кода в процессе сервиса

    Код (Text):
    1. SetProcessWindowStation(OpenWindowStation('WinSta0',FALSE,WINSTA_ALL_ACCESS))
    2. SetThreadDesktop(OpenDesktop('Default',0,FALSE,DESKTOP_ALL_ACCESS))
    а еще у MessageBox есть флаг такой MB_SERVICE_NOTIFICATION, вроде должно помочь, но я не проверял