Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
1-1173790777
dreamse
2007-03-13 15:59
2007.05.06
Подскажите как получить PID процеса по заголовку окна ?


15-1175826761
Slider007
2007-04-06 06:32
2007.05.06
С днем рождения ! 6 апреля


15-1175946783
Vudu
2007-04-07 15:53
2007.05.06
Поддержка разных форматов дат


9-1149069214
Trojian
2006-05-31 13:53
2007.05.06
Игра


11-1158224957
Gens
2006-09-14 13:09
2007.05.06
Равноценная замена





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский