Ksanatos Опубликовано 7 мая, 2008 Жалоба Share Опубликовано 7 мая, 2008 Не надо спрашивать меня зачем Но необходимо реализовать Службу (Windows Service) в MS VS.NET 2008, которая просто по таймеру, кажые n секунд очищает системный буфер обмена Написал скелет по рекомендации отсюда. в событие ClbTimer_Elapsed вставляю код записи счетчика попыток очистки в лог и вызов Clipboard.Clear(); namespace с функциями для буфера обмена подключен. Лог пишется нормально (что говорит о том, что таймер в службе запускается, обработчик тоже работает), а вот буфер не очищается.При всем при этом, в отдельном приложении та же функция очистки клипборда работает отлично (определяю по вечно затененному пункту меню "вставить" в блокноте и пейнте сразу после копирования текста или куска изображения). Вот код программы private void buttonStart_Click(object sender, EventArgs e) { Cleartimer.Interval = 1000; Cleartimer.Start(); } private void buttonStop_Click(object sender, EventArgs e) { Cleartimer.Stop(); } private void Cleartimer_Tick(object sender, EventArgs e) { Clipboard.Clear(); } Почему тот же самый вызов Clipboard.Clear() не работает в коде службы Windows? Есть подозрение, что не работает потому, что служба запускается от имени LocalSystem\NetworkService\LocalService, а буфер обмена доступен только текущему пользователю. Потому его и видит приложение, запущенное от имени пользователя, и не видит служба Вывод - нужно запускать службу от имени пользователя? но как? Ставлю в свойстве ProcessInstaller.Account значение User, при установке службы выдается окно с просьбой ввести Имя пользователя или пароль. Ввожу данные реально существующих в моей системе учеток - выдает ерроры - пишет, что "имя учетной записи не существует" - для первой, ограниченной, учетки, либо что-то совсем страшное - "Именам пользователей не сопоставлены коды защиты данных" - для второй, админской. Учетка пользователя пароля не имеет, админская - имеет. Подскажите - как мне решить мою проблему с пользователями!! Ссылка на комментарий Поделиться на другие сайты More sharing options...
WishMaster Опубликовано 11 мая, 2008 Жалоба Share Опубликовано 11 мая, 2008 Пробуйте с помощью средств WinAPI чистить буфер, MSDN вам в помощь Ссылка на комментарий Поделиться на другие сайты More sharing options...
Ksanatos Опубликовано 11 мая, 2008 Автор Жалоба Share Опубликовано 11 мая, 2008 Пробуйте с помощью средств WinAPI чистить буфер, MSDN вам в помощь Проблема не в очистке буфера, а в доступе к буферу обмена конкретного пользователя. Приложение запущенное от лица пользователя той же функцией вполне нормально чистит буфер по таймеру. А служба, запущенная от LocalSystem\LocalService не видит буфер обмена текущего пользователя. Впрочем я уже почти решил проблему альтернативным путем - без использования служб Ссылка на комментарий Поделиться на другие сайты More sharing options...
MpakV Опубликовано 11 мая, 2008 Жалоба Share Опубликовано 11 мая, 2008 А я думал вся соль как раз в службах Ссылка на комментарий Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Заархивировано
Эта тема находится в архиве и закрыта для дальнейших ответов.