Показать сообщение отдельно
  #1  
Старый 26.11.2011, 22:16
RED RED вне форума
Прохожий
 
Регистрация: 06.07.2010
Сообщения: 5
Репутация: 10
По умолчанию получить окна

Привет. У меня сетевое приложение: отслеживет окна на компах и скидывает их на сервак. На клиенте работает служба, которая запускает программу. Программа собственно перечисляет окна и отправляет по сети. Если программу запустить самому то она найдет все окна. Но когда ее запускает служба, она находит всего 4 окна. Подскажите пожалуйста почему когда она запускается из службы, она не определяет все окна.

код запуска из службы:
Код:
ShellExecute(0,'open',pchar('c:\windows\system32\admin_client.exe'),nil,nil,sw_show);

функции которыми перечислял окна - getwindow или enumwindow.
Остановился на enumwindow - EnumWindows (@EnumProc, 0);
Код:
function EnumProc (Wd: HWnd; Param: LongInt): Boolean; stdcall; // Обязательно stdcall !!!
var
    buff: array [0 .. 127] of char;
Begin
        IF GetWindowText(wd, buff, SizeOf(buff))<>0 then
        begin
            wndhandle := inttostr(wd);
            GetWindowText(wd, buff, SizeOf(buff));
            wndcaption := copy(buff, 1, 127);
            sended:= sended+wndcaption + separ + wndhandle + endsepar;
        end;
    EnumProc := TRUE;
end;
Ответить с цитированием