Здравствуйте! Мне надо получить изображение рабочего стола с другой машины по сети (не просто одиночную картинку, а полноценную копию рабочего стола как например в программах NetMeeting или Remote Administrator т.е. нужно следить за рабочим столом на удаленной машине). Как это можно лучше всего сделать? Придется постоянно снимать копии экранов на другой машине, сжимать их и передавать по сети? Так же сеть накроется одним местом (она и так у нас довольно сильно загруженна). Или можно сделать как-то по другому? По моему должен быть другой способ. Т.к. я заметил, что NetMeeting неправильно отображает русские символы. Следовательно он не делает копии экрана, а как-то получает изображение подругому. Подскажите, что можно сделать и как это можно сделать.
Добрый день, Boss! ===== Pro bono publico, no bloody panico! ===== Ну раз ты заметил, то логично было бы предположить, что идет эмуляция. Т.е. фактически 1) подключается удаленный реестр, 2) из него считываются параметры рабочего стола (цвет, шрифты, бэкграунд и др.), 3) для тотального контроля над происходящим отлавливаюся все системные сообщения, плюс позиция курсора мыши. А делать скриншоты, этак действительно сеть рухнет, да и глючить будет. Ответ отправлен: 21.12.2002, 06:26 Отправитель: Idle Sign Отвечает Артём Шегеда
Приветствую Вас, Boss!
Я писАл такую программу: вешается в список сервисов (для Win9x) и через заданный период пересылает на сервер снимок рабочего стола. Полноцветный снимок (24 бита) занимает приблизительно 120КБайт при средней загруженности рабочего стола и без фотографий или 60КБайт при потере качества (масштаб 1:2). Сеть при передаче таких объёмов не умирает, однако, процессор при снятии образа и упаковке напрягается прилично (засекали в Win2000).
Что же касается работы NetMeeting, то он данные пересылает не в виде снимков экрана, а в виде EMF-последовательностей, которые в общем случае имеют меньший объём, чем снимки (подробнее почитай в MSDN Help), поэтому выводимые на экран строки символов выглядят по-разному, поскольку строка задаётся параметрами шрифта (именем, размером, стилем, цветом, поворотом и пр.) Ответ отправлен: 23.12.2002, 10:51 Отправитель: Артём Шегеда
Вопрос № 371
Есть файл с тесктом в виде: text1 text2 text3 text4 Эти слова соответствуют именам дочерних узлов. Если я нажал на одних из дочерних узлов, то определяю его имя, и ищу в файле это имя и удалаю его. И соответсвенно в дереве его тоже удаляю. Вот что получается после удаления: Я удалил например узел 2.Узлу 2 соответствует имя 'text2' text1 text3 text4 т.е. после удаления осталось пустое место. А мне это не нужно. Потому что при следующем удалени дочернего узла, программа виснет.
procedure TFName.N5Click(Sender: TObject); var Buf : array [1..100] of string [100]; i,BufLen : integer; begin AssignFile (F1,'rus.txt'); Reset (F1); Buflen :=0; While not eof (F1) do begin While not eoln (F1) do begin inc(BufLen); Readln (F1, Buf [Buflen] ); if Buf
[Buflen]=TreeView1.Selected.Text then begin Delete(Buf [Buflen],1,length(Buf [Buflen])); end; end; end; CloseFile(F1); ReWrite (F1); For i:=1 to BufLen do Writeln(F1, Buf [i] ); CloseFile(F1); TreeView1.Items.BeginUpdate; TreeView1.Items.Delete(TreeView1.Selected); TreeView1.Items.EndUpdate; end;
Добрый день, Tik! ===== Pro bono publico, no bloody panico! ===== 1) для кода используй "Приложение". 2) не обязательно проверять конец строки при использовании ReadLn 3) чтобы не висла нужно проверить на наличие строки в файле/узла (произвести поиск) перед удалением Ответ отправлен: 22.12.2002, 12:12 Отправитель: Idle Sign Отвечает Артём Шегеда
Приветствую Вас, Tik!
Так должно работать...
Приложение: Ответ отправлен: 23.12.2002, 13:23 Отправитель: Артём Шегеда
Вопрос № 372
Приветствую вас, эксперты. Подскажите в чем косяк? Выдрал где-то кусок кода, но до конца с ним не разобрался(см. приложение), дельфи изучаю самостоятельно поэтому спросить больше не у кого, короче говоря не откажите в помощи!!! Проблема в том, что когда запускаю какую-нибудь прогу вылетает ошибка, что не так? И еще, подскажите ссылку на какой-нибудь хелп по криэйт процессу, с дотошным описанием его параметров, что, как, где..... Заранее благодарю.
Добрый день, Ivan! ===== Pro bono publico, no bloody panico! ===== 1) Какую именно ошибку программа выдает? Код в порядке. Однако, path и dir могут быть и string, при этом передавать эти параметры можно как pchar(path) и т.д. 2) Win32 Programmer's Reference (в комплекте с Дэльфей), MSDN - на соответствующем сайте, либо на дисках Ответ отправлен: 22.12.2002, 21:55 Отправитель: Idle Sign Отвечает Melkor
Доброе время суток, Ivan! Посмотри MSDN Help или Windows SDK, который обычно прилагается в дистрибутиве Delphi. Ответ отправлен: 22.12.2002, 21:15 Отправитель: Melkor Отвечает Jadd
Здравствуйте, Ivan! Хорошо эта функция описана у Джеффри Рихтера в "Programming Applications for Microsoft Windows". Издательство Питер выпустило эту книгу под названием "Windows для профессионалов". Еще в MSDN полно примеров и инфы на этот счет. Теперь насчет приложения. Структуры STARTUPINFO и PROCESS_INFORMATION требуют того, чтобы им была выделена память явно(!). Т.е. код выделения памяти под эти структуры может быть таким: var si: STARTUPINFO; pi: PROCESS_INFORMATION; begin si.cb := sizeof(si); pi.nLength:= sizeof(pi); отсутствие такой явной инициализации часто и является причиной ошибки, с которой вы столкнулись. Если это не помогает, пришлите полный кусок кода, где вызывается эта функция и подумаем что можно сделать.
Ответ отправлен: 23.12.2002, 03:48 Отправитель: Jadd Отвечает Vadim
Доброе время суток, Ivan! 1. Боюсь, что с таким образом заданным вопросом, ты помощи никогда не дождешься. Что нужно от тебя: а) Напиши слово в слово сообщение об ошибке. б) На выполнение ЛЮБОЙ функции оказывает влияние состояние среды до ее выполнения. Поэтому присылай исходники не в виде: CreateProcess(....); а в виде: Function MyFunction(Parameters); Все, что входит в функцию или процедуру, составленную тобо лично, т.е. в MyFunction; End; 2. Загляни на сайт delphi.mastak.ru, там найдешь много интересного (статьи, ссылки, компоненты и т.д.).
Ответ отправлен: 24.12.2002, 10:07 Отправитель: Vadim
Вопрос № 373
Здравствуйте, ув. эксперты! 1)Тут такая проблемка. Для выключения компа пользую ExitWindowsEx(EWX_SHUTDOWN,0); Но возник такой облом - в XP это не пашет Может кто знает как вырубитьперезагрузить комп под XP? 2)Может и не в тему, но, так сказать, накипело... Вот вы тут бывает, отвечая на вопросы, шлете читать хелпы и др. мануалы. А ведь вы ето зря. Ведь многие пишут именно потому, что с 'Шпрехен зе Инглиш' у них не очень. Так что они хоть словарями обложись - не поможет...Вот человек и пишет, чтоб ему по-русски разжевали. А ему вместо этого - RTFM... PS Извините, если что не так... PPS А все-таки вы молодцы...Многие б без вас пропали...
Добрый день, Nick! ===== Pro bono publico, no bloody panico! ===== 1) см. Приложение - там компонент, который тебе пригодится. 2) вообще, в чем-то ты прав, однако если ты заметил, при постановке конкретной задачи/кода эксперты отвечают/разъясняют все, что нужно (а FM еще никому не вредил)
Приложение: Ответ отправлен: 22.12.2002, 21:56 Отправитель: Idle Sign Отвечает Jadd
Приветствую Вас, Nick! 1)Насчет обид и отсылок к мануалам. Как вы все не поймете, что программером нельзя стать только за чужой счет! Надо и самому что-то делать. Часто вопросы тут у людей возникают только от того, что им просто лень покопаться или они недочитали хелп. Люди для того и пишут мануалы, чтобы их читать. Или читайте умные книжки. 2)Смотри п.1!!!! В MSDN ясно описана ситуация с использованием функции ExitWindows в WinXP. Там все связано с правами пользователя, которые надо получать и проверять. Как? Вот тут уж RTFM. Ну, нету желания переписавыть и коментировать чей-то труд, когда он и сам хорошо прокоментирован и объяснен. Удачи. Ответ отправлен: 23.12.2002, 02:47 Отправитель: Jadd Отвечает Vadim
Доброе время суток, Nick! 1. В хелпе по функции ExitWindowsEx() ясно и недвусмысленно написано, что вызывающий процесс должен иметь привилегию типа SE_SHUTDOWN_NAME, иначе функция не будет выполнятся. 2. Это было бы смешно, если б небыло так грустно. Теперь ты на собственном примере убедился, что знать английский - это просто твоя святая обязанность. Ссылки на то, что у кого-то (тебя например :) нет способностей к языкам - вздор!!! Если ты взялся изучать программирование, то не мог не заметить, что Delphi - это тоже язык, следовательно способности к изучению языка есть. И еще, как бы в расширение темы, уж коли человек берется за изучение какого-либо дела, то изучает его не в каком-то отдельно выдраном аспекте, а целиком, т.е. учит все, что к этому делу относится. В данном случае, изучение английского напрямую относится к программированию. Без этого
никак и никуда. Представь, что два эксперта тебе дали два ответа, которые различаются в каких-то деталях, а то и вообще лежат друг от друга в диаметрально противоположных плоскостях. Как узнать, кто прав? Если эти ответы затрагивают какую-то жизненно важную область, то ты даже не сможешь проверить ответы на практике из-за боязни все окончательно испортить. Вот здесь-то хелп и всякие мсдн - твой третейский судья. Потому-что по ответам ты уже сможешь знать, в каком направлении копать дальше. Я, например, тоже не всегда могу воспользоваться хелпом просто в силу того, что не знаю, куда смотреть. Тогда я обращаюсь за помощью, мне подсказывают и далее, уже копаясь в хелпе по теме, которую мне подсказали, я довожу дело до ума. Только ты не думай, что когда тебе предлагают посмотреть хелп или другой источник, то эксперты это делают из всокомерия, типа "зелен еще, куда пошлем, туда
и пойдет...". Вовсе нет. Просто хелп к программе - это как Библия для священника или уголовный кодекс для адвоката, т.е. твоя правая и левая рука. Кстати, ты видел или хотябы слышал краем уха про адвоката по уголовным делам, который ни разу не заглядывал в Уголовный кодекс, ссылаясь на то, что не понимает юридические термины? Можешь не отвечать, ответ очевиден :)). И не вина экспертов, что хелп написан по английски, а кое-кто, обложившись словарями, поленился их открыть (надеюсь, не о тебе речь :))).
Ответ отправлен: 24.12.2002, 10:08 Отправитель: Vadim Отвечает Pinman
Приветствую Вас, Nick! 1) Попробуй вызвать функцию, указав в качестве первого параметра 1 2) У эзера может не быть прав на выключение компа. Ответ отправлен: 24.12.2002, 22:51 Отправитель: Pinman
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.