КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Then begin. Form1.TrivClient.Get('Screen.dat', 'Screen.bmp');Try Form1.TrivClient.Get('Screen.dat', 'Screen.bmp');
if fileexists('Screen.bmp') thenFrame71.Image1.Picture.LoadFromFile('Screen.bmp'); Except end; end;
<…>
end; Копируем у Сервера файл Screen.dat и переименовываем в Screen.bmp - Form1.TrivClient.Get('Screen.dat', 'Screen.bmp'); После чего, убедившись, что он существует отображаем его:
if fileexists('Screen.bmp') then Frame71.Image1.Picture.LoadFromFile('Screen.bmp'); Except end; «Управление дисководом»
Для того, чтобы помочь человеку, сидящему за удалённым компьютером, в выборе последующего действия необходимого Вам для объяснения ему чего - либо, в проект была добавлена функция выдвигания и задвигания лотка CD-ROM – a. При выборе данной функции в Клиенте, появляется диалог управления лотком. На котором располагаются кнопки «Выдвинуть» и «Задвинуть». Процедура OnClick кнопки «Выдвинуть»:
Form1.Send('$F003'); Серверу посылается команда на выдвижение лотка, и он её обрабатывает:
if copy(n, 1,5) = '$F003' then CDROMControl(true);
Процедура OnClick кнопки «Задвинуть»: Form1.Send('$F004'); Обработка Сервером:
ifcopy(n, 1,5) = '$F004' thenCDROMControl(false);
Процедура CDROMControl() является импортированной из библиотекиcdrom.dll:
procedure CDROMControl(Show : Boolean); external 'cdrom.dll';
Использование DLLв проекте связанно с тем, что чтобы не загружать проектом виртуальную память. Cdrom.dll, текст библиотеки:
library cdrom;
Uses MMSystem, Forms;
procedure CDROMControl(Show : Boolean); Begin if Show then mciSendString('Set cdaudio door open wait', nil, 0, Application.handle) else mciSendString('Set cdaudio door closed wait', nil, 0, Application.handle) end;
exports CDROMControl;
Begin End. Если в параметре Show указано значение true, то с помощью процедуры mciSendString() выдвинуть лоток, в противном случае, т.е. false, задвинуть лоток.
exports CDROMControl; - экспортируем процедуру CDROMControl(), делая её общедоступной.
«Работа с процессами» Мой проект включает в себя работу с запущенными процессами и программами на удалённом компьютере через локальную сеть. При запуске этой функции отображается фрейм на котором расположена панель с компонентом TListView. В колонке «Приложения» отображаются все запущенные процессы и программы на У.К. (Удалённый Компьютер), а в колонке «Процесс ID» их ID. Принцип работы: Клиент посылает команду на получения списка процессов, Сервер её обрабатывает, сохраняет в List(TStringList) список всех процессов а в List2 список их ID. Затем их поочерёдно отсылает.
Функция GetProcesses()(получение сервером списка процессов и их ID):
procedure GetProcesses; Var Snap: Integer; Pe32: TProcessEntry32; St : string; Begin List.Clear; List2.Clear; Snap := CreateToolhelp32Snapshot(SE_PRIVILEGE_ENABLED, 0); Pe32.dwSize := SizeOf(TProcessEntry32); Process32First(Snap, Pe32); Repeat Str(pe32.th32ProcessID, St);
List.Add(Trim(pe32.szExeFile)); List2.Add(St) until not Process32Next(Snap, Pe32); List.Add('@Pcss'); DM.Send; Sleep(500); List2.Add('@PcssID'); Sleep(500); DM.Send2; end;
Функция Kill() позволяет завершать любой процесс:
procedure Kill(PID: Cardinal); Var Token, Process: LongWord; SeDebugNameValue: Int64; TPriv: TOKEN_PRIVILEGES; ReturnLength: Cardinal; Begin OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token); LookupPrivilegeValue(nil, 'SeDebugPrivilege', SeDebugNameValue); TPriv.PrivilegeCount := 1; TPriv.Privileges[0].Luid := SeDebugNameValue; TPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(Token, False, TPriv, SizeOf(TPriv), TPriv, ReturnLength); Process := OpenProcess(TOKEN_ASSIGN_PRIMARY, False, PID); TerminateProcess(Process, INVALID_HANDLE_VALUE); CloseHandle(Process); TPriv.Privileges[0].Attributes := 0; AdjustTokenPrivileges(Token, False, TPriv, SizeOf(TPriv), TPriv, ReturnLength); end;
Обработка отчёта: if n = '@Pcss'
|