Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
ВнизПрограмное управление Найти похожие ветки
← →
Romm © (2007-04-04 17:59) [0]Здравствуйте Мастера!
Подскажите пожалуйста как из программы выключить/перезагрузить/поставить в спящий или ждущий режим компьютер.
И еще... не могли бы вы подсказать каким образом можно просмотреть рабочий стол на удаленном компьютере.
Заранее спасибо!
← →
Loginov Dmitry © (2007-04-04 20:25) [1]
- <item caption="Спящий режим">
<command>rundll32.exe</command>
<params>powrprof.dll,SetSuspendState</params>
</item>
- <item caption="Перезагрузка">
<command>shutdown</command>
<params>-r -t 0</params>
</item>
- <item caption="Залочить Windows">
<command>rundll32.exe</command>
<params>user32.dll,LockWorkStation</params>
</item>
Вот такие вот команды. Применяются вместе с ShellExecute().
← →
Romm © (2007-04-05 13:28) [2]Loginov Dmitry © (04.04.07 20:25) [1]
благодарю...
← →
Romm © (2007-04-07 07:15) [3]Не мог бы кто-нибудь ответить на второй вопрос?
Впринципе, я знаю, как сделать снимок рабочего стола,НО как его через сокет передать???
← →
Romm © (2007-04-10 16:12) [4]Мастера! Не ужели никто не может помоч?! :((
Проблема: не знаю как передать снимок рабочего стола через сокет. Помогите плииз!..
← →
tesseract © (2007-04-10 16:12) [5]
> Проблема: не знаю как передать снимок рабочего стола через
> сокет. Помогите плииз!..
SendBuf/WriteBuf.
← →
Рамиль © (2007-04-10 16:47) [6]Писал исключительно по хелпу, очень давно, не претендую на то, что все учтено и написано правильно
unit SrvMainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Sockets, ScktComp;
type
TForm1 = class(TForm)
ServerSocket: TServerSocket;
procedure ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
Cmd: string;
Size: int64;
Stream: TFileStream;
begin
Cmd := Socket.ReceiveText;
if Cmd = "GET" then
begin
Stream := TFileStream.Create("PICT0001.jpg", fmOpenRead);
Size := Stream.Size;
Socket.SendBuf(Size, SizeOf(Size));
Socket.SendStream(Stream);
//поток не дестроим, т. к. в хелпе сказано, что сокет сам с ним разберется.
end;
end;
end.unit MainFormCli;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Sockets, StdCtrls, ExtCtrls, Jpeg, ScktComp;
type
TForm2 = class(TForm)
Button3: TButton;
Image: TImage;
ClientSocket: TClientSocket;
Button1: TButton;
Button2: TButton;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
Reciveing: boolean;
Size: int64;
AllSize: int64;
Stream: TMemoryStream;
Jpeg: TJPEGImage;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button3Click(Sender: TObject);
begin
ClientSocket.Socket.SendText("GET");
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
ClientSocket.Active := true;
Reciveing := false;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
ClientSocket.Active := false;
end;
procedure TForm2.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
var
Buf: array[0..8191] of byte; //Вроде по умолчанию буфер у сокета 8 килобайт, но могу ошибаться.
//в принципе работать должно при любом. Но в хелдпе сказано, что OnRead не гарантирует
//что при возникновении него все данные уже будут в буфере
RecivedSize: integer;
begin
if not Reciveing then
begin
Socket.ReceiveBuf(Size, SizeOf(Size));
Reciveing := true;
Stream := TMemoryStream.Create;
AllSize := 0;
end else
begin
RecivedSize := Socket.ReceiveBuf(Buf, SizeOf(Buf));
Stream.Write(Buf, RecivedSize);
inc(AllSize, RecivedSize);
if AllSize = Size then
begin
Reciveing := false;
JPeg := TJPEGImage.Create;
Stream.Position := 0;
JPeg.LoadFromStream(Stream);
Stream.Free;
Image.Picture.Assign(Jpeg);
Jpeg.Free;
end;
end;
end;
end.
← →
Romm © (2007-04-11 19:04) [7]
> Рамиль © (10.04.07 16:47) [6]
Спасибо конечно, но ты немножко не понял!
Я делаю прогу-для удаленного управления компами.Та серверах(клиентских машинах) должен работать экран, который будет каждуй 0,5 секунду передавать снимок экрана на клиент(серверную машину). Весь фокус в том, что НЕ НУЖНО сохранять снимок десктопа, а прямиком передавать на клиент!!!
Вот смотри:public
{ Public declarations }
procedure GrabScreen;
...
implementation
{$R *.DFM}
procedure TForm1.GrabScreen;
var
DeskTopDC: HDc;
DeskTopCanvas: TCanvas;
DeskTopRect: TRect;
begin
DeskTopDC := GetWindowDC(GetDeskTopWindow);
DeskTopCanvas := TCanvas.Create;
DeskTopCanvas.Handle := DeskTopDC;
DeskTopRect := Rect(0, 0, Screen.Width, Screen.Height);
Form1.Canvas.CopyRect(DeskTopRect, DeskTopCanvas, DeskTopRect);//снимок отображается на форме!А мне нужно просто его передать по сокету, не сохраняя на этой машине!
ReleaseDC(GetDeskTopWindow, DeskTopDC);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GrabScreen;
end;
← →
MikePetrichenko © (2007-04-11 20:47) [8]
> Весь фокус в том, что НЕ НУЖНО сохранять снимок десктопа,
> а прямиком передавать на клиент!!!
Мдя.
Предложение номер 2. В первые классы (а еще лучше в нулевые) ввести обязательный предмет "Учимся думать сами".
С обязательным повтором всего курса данного предмена на первом курсе каждого института (училища, ПТУ, и т.д.)
← →
Romm © (2007-04-12 17:04) [9]
> MikePetrichenko © (11.04.07 20:47) [8]
ну не работал я с сокетами ни разу...(((
← →
Romm © (2007-04-17 18:02) [10]Мастера, пожалуйста, привидите пример, реально работающей функции выключения компьютера.
← →
Romm © (2007-04-17 18:36) [11]перезагрузку делаю следующим образом:
ShellExecute(Application.Handle,Pchar("Open"),Pchar("shutdown"),Pchar("-r -t 0"),"",0);
.
← →
Leonid Troyanovsky © (2007-04-17 18:53) [12]
> Romm © (17.04.07 18:02) [10]
> Мастера, пожалуйста, привидите пример, реально работающей
> функции выключения компьютера.
На сайте by Anatoly Podgoretsky есть факи.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.047 c