Конференция "WinAPI" » Найти окно по имени и классу из сервиса [D7, WinXP]
 
  • 9899100 (19.04.09 23:58) [0]
    Здравствуйте!
    сделал небольшую программу, которая управляет другим приложением.Она, при появлении определенного окна, находит на нем кнопку и нажимает на неё, все работает.
    Переделал свою программу в сервис.
    Но теперь я не могу функцией EnumWindows и EnumChildWindows
    найти требуемого окна. Скинул результат работы этих функций в файл и оказалось что они собирают всего несколько окон. т.е. все задачи которые запущены из эксплорера не попадают в эти пречисления.

    Подскажите, как можно получить список всех окон всех процессов из сервиса?
  • Eraser © (20.04.09 00:27) [1]
    > [0] 9899100   (19.04.09 23:58)

    сервис не годится для таких задач, если ддя xp это вполне решаемо, то в висте и выше - никак. без доп. процесса в каждой терм. сессии не обойтись.
  • 9899100 (20.04.09 00:31) [2]
    жаль, было бы красиво :)
  • 9899100 (20.04.09 00:34) [3]
    а функция CreateToolHelp32Snapshot ни как не поможет??
    ведь она позволяет получить список задач и нитей
    и выдет все что запущенно в данный момент
    только до окон добраться не получается :(
  • Германн © (20.04.09 01:28) [4]

    > 9899100   (19.04.09 23:58)
    >
    > Здравствуйте!
    > сделал небольшую программу, которая управляет другим приложением.
    > Она, при появлении определенного окна, находит на нем кнопку
    > и нажимает на неё, все работает.
    > Переделал свою программу в сервис.
    > Но теперь я не могу


    > жаль, было бы красиво :)

    Странный однако сервис должен был бы быть красивым :)
  • 9899100 (20.04.09 01:43) [5]

    > Странный однако сервис должен был бы быть красивым :)

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

    красивый, это когда нет ничего лишнего, как например иконка торчащая в трее, который и так замусорен
    а так работает себе сервис никому не мешает
  • Германн © (20.04.09 02:07) [6]

    > 9899100   (20.04.09 01:43) [5]
    >
    >
    > > Странный однако сервис должен был бы быть красивым :)
    >
    > ничего странного я в этом не вижу

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

    Может реальный пример представишь, в котором нет ничего "странного".
  • 9899100 (20.04.09 07:53) [7]
    реальный пример
    если ты работал когданибудь в банке, отправлял платежи в ЦБ
    то реальный пример видел не однократно, когда надо нажать на "100" кнопок в "20" программах причем на разных компах, а делать каждые 20 минут
    хотябы на 10 "телодвижений меньше" это очень удобно

    реальный на 100%
  • Anatoly Podgoretsky © (20.04.09 08:59) [8]
    Не хотел бы я держать деньги в этом банке.
  • ford (20.04.09 09:59) [9]

    > Не хотел бы я держать деньги в этом банке.

    Если бы ты видел программы которые делает ЦБ (центральный банк) ты бы ужаснулся так, что неделю не мог бы прийти в себя от шока
    типа "под каким градусом и какой ногой можно было писать такие программы"

    а вот автоматизация процессов производства, пусть это банк или еще что-то
    тут я полностью с тобой не согласен
    ну если поставленны такие условия работы
    1. выгрузить документы на машине №1
    2. подписать документы на машине №2
    3. отправить документы в ЦБ машина №3
    и пр этом они не могут быть в сети (правила ЦБ)
    чтобы например подписать и зашифровать файл, надо открыть три окна и в каждом тупо нажать на пару кнопок
    понимаешь?? "ТУПО" нажать на кнопку!!!
    и что тут криминального или плохого если я нажму на кнопку не сам а программа???!!!
    ведь компьютеры для того и создавались чтобы автоматизировать рутинные процессы
    но ЦБ этого не знает  ;)

    но это лирика :)
    вот лучше бы подсказал как все таки получить окошки из сервиса
  • Anatoly Podgoretsky © (20.04.09 11:14) [10]
    > ford  (20.04.2009 9:59:09)  [9]

    > вот лучше бы подсказал как

    Что бы меня прокляли другие пользователи вашего банка.
  • Игорь Шевченко © (20.04.09 15:45) [11]

    > Подскажите, как можно получить список всех окон всех процессов
    > из сервиса?


    1. настроить сервис на взаимодействие с рабочим столом.
    2. отказаться от сервиса
  • clickmaker © (20.04.09 15:57) [12]
    > как все таки получить окошки из сервиса

    EnumDesktopWindows ?
  • Игорь Шевченко © (20.04.09 17:38) [13]
    clickmaker ©   (20.04.09 15:57) [12]

    Фигу. У сервисов мало того, что свой Desktop, он еще и в своей WindowStation
  • clickmaker © (20.04.09 17:40) [14]
    > [13] Игорь Шевченко ©   (20.04.09 17:38)
    > clickmaker ©   (20.04.09 15:57) [12]
    >
    > Фигу. У сервисов мало того, что свой Desktop, он еще и в
    > своей WindowStation

    в курсе. Но чужой десктоп можно открыть.
    Правда, не в курсе, нужна ли для этого сервису интерактивность
  • Игорь Шевченко © (20.04.09 18:08) [15]

    > Но чужой десктоп можно открыть.


    предварительно присоединив к себе чужой WindowStation...
  • Eraser © (20.04.09 18:41) [16]
    > [13] Игорь Шевченко ©   (20.04.09 17:38)


    > У сервисов мало того, что свой Desktop, он еще и в своей
    > WindowStation

    у сервисов мало того, что своя WindowStation, еще и своя терм. сессия.
  • Игорь Шевченко © (20.04.09 19:02) [17]

    > еще и своя терм. сессия.


    Разве не консольная ?
  • Eraser © (20.04.09 19:08) [18]
    > [17] Игорь Шевченко ©   (20.04.09 19:02)


    > Разве не консольная ?

    нулевая. в xp - та же, что и у первого залогиневшегося юзера. в висте даже для первого залогиневшегося юзера создается отдельная терм. сессия.
  • Игорь Шевченко © (20.04.09 19:14) [19]

    > нулевая.


    в XP она же консольная, про Висту ничего не могу сказать - не видел, не знаю, не устанавливал, не испытываю желание устанавливать
  • Eraser © (20.04.09 19:16) [20]
    > [19] Игорь Шевченко ©   (20.04.09 19:14)


    > в XP она же консольная

    верно, только если выключен FUS.

    > про Висту ничего не могу сказать - не видел, не знаю, не
    > устанавливал, не испытываю желание устанавливать

    беда в том, что юзеры то устанавливают ) и win7 будут устанавливать еще больше :-)
  • Slym © (20.04.09 19:21) [21]
    ЦБшные программы все на файлообмене построены, с возможностью слежения за каталогом...
    Вы сударь просто не настроили ихний (и вправду дебильный) дотнетовский клиент-банк... его можно перевести в режим сканирования каталога с вптоподписанием и упаковкой в конверт...
    каталоги выхода с этапа указывать на вход другого этапа...
    остается только сформировать платежка согласно ихней xml схемы и положить во вход первого этапа, н выходе последнего готовый конверт для транспортной машины
 
Конференция "WinAPI" » Найти окно по имени и классу из сервиса [D7, WinXP]
Есть новые Нет новых   [134435   +38][b:0][p:0.001]