Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.06;
Скачать: CL | DM;

Вниз

Програмное управление   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
2-1176896692
deras
2007-04-18 15:44
2007.05.06
Как найти файлы?


3-1171476660
.koT
2007-02-14 21:11
2007.05.06
Paradox 7


15-1175782636
PRed
2007-04-05 18:17
2007.05.06
Посоветуйте у какого производителя взять ноутбук!


15-1176037084
palva
2007-04-08 16:58
2007.05.06
Вьюга в Москве


2-1176786168
s.k
2007-04-17 09:02
2007.05.06
положение чужого окна