Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на Delphi

Выпуск № 118
от 25.12.2002, 19:30

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 378
Отправлено ответов: 730
Активность: 193.1 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Idle Sign
Статус: Опытный
Общий рейтинг: 151.23
URL: Blind Team
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.59
URL: Пристанище неодинокого программиста
[Подробней >>]
Melkor
Статус: Доверительный
Общий рейтинг: 132.09
[Подробней >>]
 
Jadd
Статус: Профессиональный
Общий рейтинг: 144.92
[Подробней >>]
Vadim
Статус: Доверительный
Общий рейтинг: 147.52
[Подробней >>]
Pinman
Статус: Опытный
Общий рейтинг: 127.84
URL: Программирование и заработок
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 369. Здравствуйте! Мне надо получить изображение рабочего стола с другой машины по сети (не просто одиноч... (ответов: 2)
Вопрос № 371. Есть файл с тесктом в виде: text1 text2 text3 text4 Эти слова соответствуют именам дочерних узлов. Е... (ответов: 2)
Вопрос № 372. Приветствую вас, эксперты. Подскажите в чем косяк? Выдрал где-то кусок кода, но до конца с ним не ра... (ответов: 4)
Вопрос № 373. Здравствуйте, ув. эксперты! 1)Тут такая проблемка. Для выключения компа пользую ExitWindowsEx(EWX_SH... (ответов: 4)

Вопросов: 4, ответов: 12


 Вопрос № 369

Здравствуйте!
Мне надо получить изображение рабочего стола с другой машины по сети (не просто одиночную картинку, а полноценную копию рабочего стола как например в программах NetMeeting или Remote Administrator т.е. нужно следить за рабочим столом на удаленной машине). Как это можно лучше всего сделать? Придется постоянно снимать копии экранов на другой машине, сжимать их и передавать по сети? Так же сеть накроется одним местом (она и так у нас довольно сильно загруженна). Или можно сделать как-то по другому? По моему должен быть другой способ. Т.к. я заметил, что NetMeeting неправильно отображает русские символы. Следовательно он не делает копии экрана, а как-то получает изображение подругому. Подскажите, что можно сделать и как это можно сделать.



Вопрос отправлен: 20.12.2002, 21:14
Отправитель: Boss (kondratev@mail.kz)

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Добрый день, 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;



Вопрос отправлен: 22.12.2002, 08:06
Отправитель: Tik (shal@gorodok.net)

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Добрый день, 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

Приветствую вас, эксперты.
Подскажите в чем косяк? Выдрал где-то кусок кода, но до конца с ним не разобрался(см. приложение),
дельфи изучаю самостоятельно поэтому спросить больше не у кого, короче говоря не откажите в помощи!!!
Проблема в том, что когда запускаю какую-нибудь прогу вылетает ошибка, что не так?
И еще, подскажите ссылку на какой-нибудь хелп по криэйт процессу, с дотошным описанием его параметров, что, как, где.....
Заранее благодарю.


Приложение:


Вопрос отправлен: 22.12.2002, 12:46
Отправитель: Ivan

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Добрый день, 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 А все-таки вы молодцы...Многие б без вас пропали...



Вопрос отправлен: 22.12.2002, 17:16
Отправитель: Nick

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Добрый день, 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.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (39)
C / C++ (29)
Perl (5)
Delphi (21)
Pascal (23)
Basic / VBA (11)
Java / JavaScript (6)
PHP (4)
MySQL / MSSQL (4)
Пользователю
Windows 95/98/Me (32)
Windows NT/2000/XP (27)
"Железо" (31)
Поиск информации (13)
Администратору
Windows NT/2000/XP (10)
Linux / Unix (13)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (4)
КоАП (2)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное