Форум Beholder
http://beholder.ru/bb/

Использование FindWindow в контексте службы
http://beholder.ru/bb/viewtopic.php?f=10&t=12089
Страница 1 из 1

Автор:  Dsob [ 17 мар 2011, 11:43 ]
Заголовок сообщения:  Использование FindWindow в контексте службы

Есть такой код:
Код:
protected void Button1_Click(object sender, EventArgs e)
        {
       
            const string WIN_CLASS = "TMain";
            const string APP_NAME = "BeholdTV";

            ctl01.Text = "";
            IntPtr hWnd = FindWindow(WIN_CLASS, APP_NAME);
            if (hWnd.Equals(IntPtr.Zero))
            {
                ctl01.Visible = true;
                ctl01.Text = "Не возможно найти проигрыватель: ";
                return ; }

            const int WM_USER = 0x0400; // Standard, from Windows.h
            const int WM_BHCMD = WM_USER + 200;

            SendMessageA(hWnd, WM_BHCMD, WM_USER + 201, DropDownList1.SelectedIndex + 1);
             
        }

Если данный код исполняется как обычное приложение, тогда FindWindow находит окно и им можно управлять.
Если этот код я использую в WEB приложении (ASP), опубликовав страницу в IIS, то функция FindWindow не находит окна.
(причем в режиме отладки в Visual Studio все ок)
Я так понимаю, что в данной ситуации процедура запускается под системной учетной записью в контексте службы, для которой запрещено взаимодействие с рабочим столом.
Я поставил для служб IIS Admin и Веб-публикации галочки Разрешить взаимодействие с рабочим столом. Однако это тоже не помогло.
Что можно в данной ситуации сделать ? Поможет ли использование процедуры GetProcessesByName ?

Автор:  hd44780 [ 22 мар 2011, 13:09 ]
Заголовок сообщения: 

Там этот IIS м.б. размазан по куче служб...
IIS Admin по идее вообще за обычную работу сервера не отвечает.
Винда какая?

Я, правда, не пытался, но попробуй засунуть FindWindow в свою Win-службу.
Если win-служба найдет окно, то сделай между Win-службой и Web-приложением обычный remoting и через него рули.

Кстати, ты что, будешь держать комп с тюнером за паролем? или нет?

Автор:  Dsob [ 23 мар 2011, 08:01 ]
Заголовок сообщения: 

Пришлось мне создать отдельное приложение, которое слушает порт и в зависимости от принятого сообщения передает команды окну Beholder.
В IIS реализовал посылку сообщений на этот порт.
Windows XP.

Страница 1 из 1 Часовой пояс: UTC + 3 часа