Есть такой код:
Код:
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 ?