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);
}
}
//таймер//
