Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба 6 Сп.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
85 Кб
Скачать
☆

Void OnTimer(hwnd,uint)

{

SYSTEMTIME SystemTime;

GetLocalTime(&SystemTime);

hmsg=FindWindow(NULL,sec);

sprintf(sec,"%d. %d. %d %d: %d: %d",SystemTime.wDay,SystemTime.wMonth,SystemTime.wYear, SystemTime.wHour,SystemTime.wMinute,SystemTime.wSecond);

if(i==0){

DWORD realWrite=0;

DWORD realWrite1=0;

char t[20]="Начало работы: " ;

char t3[4]="\r\n ";

CreateDirectory("D:\\Zbikovskyy",NULL);

hFile1 = CreateFile("D:\\Zbikovskyy\\server.txt",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,0,NULL);

WriteFile(hFile1,t,sizeof(t),&realWrite1,NULL);

WriteFile(hFile1,sec,strlen(sec),&realWrite,NULL);

WriteFile(hFile1,t3,sizeof(t3),&realWrite1,NULL);

}

SendMessage(label,WM_SETTEXT,NULL,(LPARAM)sec);

i = 1;

}

////Диалог////

BOOL CALLBACK DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

switch(msg){

case WM_COMMAND:

switch(LOWORD(wParam)){

case IDOK: EndDialog(hwnd, IDOK); return TRUE;

case IDCANCEL: EndDialog(hwnd, IDCANCEL); return TRUE;

}

}

return FALSE;

}

////Поток/////

DWORD WINAPI Thread(LPVOID lpData)

{

HANDLE hp;

BOOL A;

char z[512];

DWORD tra;

while(1)

{

hp=CreateNamedPipe("\\\\.\\Pipe\\ipctest",PIPE_ACCESS_DUPLEX,PIPE_TYPE_MESSAGE|PIPE_READMODE_MESSAGE|PIPE_WAIT,PIPE_UNLIMITED_INSTANCES,512,512,100,NULL);

if (hp!=INVALID_HANDLE_VALUE)

{

A=ConnectNamedPipe(hp,NULL);

if(!A)

{

MessageBox(NULL, "Ошибка", "Test", MB_OK|MB_ICONEXCLAMATION);

}

else

{

if(ReadFile(hp,z,512,&tra,NULL))

{

if(z[0]=='L')

{

POINT p;

GetCursorPos(&p);

SetCursorPos(p.x-20,p.y);

}

if(z[0]=='R')

{

POINT p;

GetCursorPos(&p);

SetCursorPos(p.x+20,p.y);

}

if(z[0]=='U')

{

POINT p;

GetCursorPos(&p);

SetCursorPos(p.x,p.y-20);

}

if(z[0]=='D')

{

POINT p;

GetCursorPos(&p);

SetCursorPos(p.x,p.y+20);

}

}

else

MessageBox(NULL, "Ошибка ", "Test", MB_OK|MB_ICONEXCLAMATION);

}

}

else

{

MessageBox(NULL, "Ошибка подключения", "Test", MB_OK|MB_ICONEXCLAMATION);

}

}

return 0;

}

Клиент:

#include <windows.h>

#include <windowsx.h>

#include <commdlg.h>

#include <stdio.h>

#include "resource.h"

#define ID_BUTTON 8000

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);

HINSTANCE hIns;

HWND hDlg = NULL;

BOOL Ka;

DWORD f;

HANDLE hp;

Void OnTimer(hwnd,uint);

char sec1[20]="1";

HWND hmsg;

HWND label1;

int i=0;

HANDLE hFile1;

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)

{

WNDCLASS wc;

MSG msg;

char ClassName[]="First Window";

char Title[]="Window";

memset (&wc,0,sizeof(wc));

hIns = hInst;

wc.lpfnWndProc=(WNDPROC)WndProc;

wc.hInstance=hInst;

wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);

wc.hCursor=LoadCursor(NULL,IDC_HAND);

wc.hbrBackground = CreateSolidBrush(RGB(255,255,0));

wc.lpszClassName=ClassName;

wc.hbrBackground=GetStockBrush(LTGRAY_BRUSH);

wc.lpszMenuName = "MENU1";

RegisterClass(&wc);

HWND hwnd=CreateWindow(ClassName,Title, WS_OVERLAPPEDWINDOW,150,150,500,500,HWND_DESKTOP,NULL,hInst,NULL);

HWND button=CreateWindow("button","Выход",WS_VISIBLE|WS_CHILD,300,20,200,25,hwnd,(HMENU)ID_BUTTON,hInst,NULL);

label1=CreateWindow("static","",WS_CHILD | WS_VISIBLE | WS_TABSTOP,600, 20, 230, 20,hwnd, (HMENU)(501),(HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE), NULL);

ShowWindow(hwnd, SW_SHOWMAXIMIZED);

SetTimer(hwnd,1,1000,NULL);

while(GetMessage(&msg,NULL,0,0))

DispatchMessage(&msg);

return 0;

}

LRESULT CALLBACK WndProc(HWND hwnd,UINT msg, WPARAM wParam, LPARAM lParam)

{

switch(msg)

{

HANDLE_MSG(hwnd,WM_TIMER,OnTimer);

case WM_COMMAND:

////Диалог//

if(wParam==ID_40001)

{

DialogBox(hIns, MAKEINTRESOURCE(IDD_DIALOG1), hwnd, DlgProc);

break;

}

//выход//

if(wParam==ID_40002)

{

PostQuitMessage(0);

}

//процес//

if(wParam==ID_40004)

{

STARTUPINFO si;

PROCESS_INFORMATION pi;

//обнуляем память//

ZeroMemory( &si, sizeof(si) );

si.cb = sizeof(si);

//обнуляем память//

ZeroMemory( &pi, sizeof(pi) );

if( !CreateProcess( NULL, "notepad.exe D:\\Zbikovskyy\\klient.txt", NULL, NULL, FALSE,0, NULL, NULL, &si, &pi));

//закрытие потока и процеса///

CloseHandle( pi.hProcess );

CloseHandle( pi.hThread );

}

//выход//

if(wParam==ID_BUTTON)

{

PostQuitMessage(0);

}

return 0;

case WM_KEYDOWN:

switch (wParam)

{

//передача в канал по нажатию стрелки влево

case VK_LEFT:

DWORD f;

HANDLE hp;

hp=CreateFile("\\\\.\\pipe\\ipctest", GENERIC_READ|GENERIC_WRITE, NULL,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hp!=INVALID_HANDLE_VALUE)

{

char l[2] = "L";

WriteFile(hp,l,strlen(l)+1,&f,NULL);

}

else

{

MessageBox(NULL, "Ошибка подключения", "Test", MB_OK|MB_ICONEXCLAMATION);

}

break;

//передача в канал по нажатию стрелки вправо

case VK_RIGHT:

hp=CreateFile("\\\\.\\pipe\\ipctest", GENERIC_READ|GENERIC_WRITE, NULL,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hp!=INVALID_HANDLE_VALUE)

{

char r[2] = "R";

WriteFile(hp,r,strlen(r)+1,&f,NULL);

}

else

{

MessageBox(NULL, "Ошибка подключения", "Test", MB_OK|MB_ICONEXCLAMATION);

}

break;

//передача в канал по нажатию стрелки вверх

case VK_UP:

hp=CreateFile("\\\\.\\pipe\\ipctest", GENERIC_READ|GENERIC_WRITE, NULL,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hp!=INVALID_HANDLE_VALUE)

{

char u[2] = "U";

WriteFile(hp,u,strlen(u)+1,&f,NULL);

}

else

{

MessageBox(NULL, "Ошибка подключения", "Test", MB_OK|MB_ICONEXCLAMATION);

}

break;

//передача в канал по нажатию стрелки вниз

case VK_DOWN:

hp=CreateFile("\\\\.\\pipe\\ipctest", GENERIC_READ|GENERIC_WRITE, NULL,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hp!=INVALID_HANDLE_VALUE)

{

char d[2] = "D";

WriteFile(hp,d,strlen(d)+1,&f,NULL);

}

else

{

MessageBox(NULL, "Ошибка подключения", "Test", MB_OK|MB_ICONEXCLAMATION);

}

break;

}

return 0;

case WM_DESTROY:

PostQuitMessage(0);

return 0;

default:

return DefWindowProcW(hwnd,msg,wParam,lParam);

}

}

//таймер//