Программирование на C++Builder

На главную


Имитация нажатия клавиш
Имитация нажатия кнопки мышки
Перемещение мышки на заданные координаты
Ассемблерные вставки
Прозрачное окно
Загрузка и сохранение текста, картинки
Тригонометрические функции
Вращение картинки
Вращение текста кнопки
Рисование на рабочем столе
Окно прграммы в форме многоугольника
Стекание рабочего стола
Перемещение пуска
Скрытие программы в диспечере задач
Отмена ALT+F4
Как узнать цвет пикселя и изменить его
Разложение цвета на RGB
Генератор случайных чисел
Сохранение в заранее заданный файл
Удаление определённой строки из Memo
Проигрывание звука без MediaPlayer
Удаление файла
Получение времени и даты
Как свернуть или развернуть форму
Закрытие программы
Перевод AnsiString в int
Ограничение перемещения мышки
Выключение и перезагрузка комьютера
Открытие заданного документа или сайта



Имитация нажатия клавиш

Чтобы имитировать нажатие клавиши, нужно вставить в программу следующий код:

keybd_event('P', 0,0,0);
keybd_event('P', 0,KEYEVENTF_KEYUP,0);

Где 'P' - нужная клавиша
Чтобы узнать, какая клавиша нажата:

if(GetKeyState(VK_F4)& 0x80){...}

Где VK_F4 - код нужной клавиши

Имитация нажатия кнопки мыши

Для имитации нажатия кнопки мышки вставьте в нужное место следующий код:

INPUT inp[2];
memset(inp,0,sizeof(inp));
inp[0].type=INPUT_MOUSE;
inp[0].mi.dwFlags=MOUSEEVENTF_LEFTDOWN;
inp[1].type=INPUT_MOUSE;
inp[1].mi.dwFlags=MOUSEEVENTF_LEFTUP;
SendInput(2,inp,sizeof(INPUT));



Перемещение мышки на заданные координаты

Для перемещения мышки в заданные координаты:

SetCursorPos(X,Y);

Где X и Y - координаты, куда надо переместить

Ассемблерные вставки

Для создания ассемблерной вставки напишите следующий код:

#pragma inline
asm {...}

Где ... - ваш ассемблерный код

Прозрачное окно

Если вы хотите, чтобы ваша форма была прозрачной или полупрозразной, то:
в окне "Object Inspector" вкладке "Properies"

AlphaBlend = true
AlphaBlendValue = прозрачность от 0 до 255

Если прозрачность надо менять в процессе работы программы, используйте:

Form1->AlphaBlend = true;
Form1->AlphaBlendValue = ваше значение;

Загрузка и сохранение текста, картинки

Для загрузки текста разместите на форме элемент из выбора диалога SaveDialog
и напишите следующий код:

if (SaveDialog1->Execute())
Memo1->Lines->LoadFromFile(SaveDialog1->FileName);

Для открытия текста разместите на форме элемент из выбора диалога OpenDialog
и напишите следующий код:

if (OpenDialog1->Execute())
Memo1->Lines->LoadFromFile(OpenDialog1->FileName);


Для загрузки картинки разместите на форме элемент из выбора диалога SavePictureDialog
и напишите следующий код:

if (SavePictureDialog1->Execute())
Memo1->Lines->LoadFromFile(SavePictureDialog1->FileName);

Для открытия картинки разместите на форме элемент из выбора диалога OpenPictureDialog
и напишите следующий код:

if (OpenPictureDialog1->Execute())
Memo1->Lines->LoadFromFile(OpenPictureDialog1->FileName);



Тригонометрические функции

Для использования таких функций, как sin, cos, sqrt, и т.д. надо загрузить файл Math.h:

#include "Math.h"

И вы можете спокойно работать с ними.

Поворот картинки

Для поворота картинки на заданный угол(m) :

#include "Math.h"
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define max(a, b) (((a) > (b)) ? (a) : (b))

AnsiString m2 = 45;
int m = m2.ToInt();
int angle=m;
Graphics::TBitmap *SrcBitmap=new Graphics::TBitmap;
Graphics::TBitmap *DestBitmap=new Graphics::TBitmap;
SrcBitmap->LoadFromFile("Эмблема.bmp");
float radians=(2*3.1416*angle)/360;

float cosine=(float)cos(radians);
float sine=(float)sin(radians);

float Point1x=(-SrcBitmap->Height*sine);
float Point1y=(SrcBitmap->Height*cosine);
float Point2x=(SrcBitmap->Width*cosine-SrcBitmap->Height*sine);
float Point2y=(SrcBitmap->Height*cosine+SrcBitmap->Width*sine);
float Point3x=(SrcBitmap->Width*cosine);
float Point3y=(SrcBitmap->Width*sine);

float minx=min(0,min(Point1x,min(Point2x,Point3x)));
float miny=min(0,min(Point1y,min(Point2y,Point3y)));
float maxx=max(Point1x,max(Point2x,Point3x));
float maxy=max(Point1y,max(Point2y,Point3y));

int DestBitmapWidth=(int)ceil(maxx-minx);
int DestBitmapHeight=(int)ceil(maxy-miny);

DestBitmap->Height=DestBitmapHeight;
DestBitmap->Width=DestBitmapWidth;

for(int x=0;x {
for(int y=0;y {
int SrcBitmapx=(int)((x+minx)*cosine+(y+miny)*sine);
int SrcBitmapy=(int)((y+miny)*cosine-(x+minx)*sine);
if(SrcBitmapx>=0&&SrcBitmapxWidth&&SrcBitmapy>=0&&
SrcBitmapyHeight)
{
DestBitmap->Canvas->Pixels[x][y]=
SrcBitmap->Canvas->Pixels[SrcBitmapx][SrcBitmapy];
}
}
}

Image1->Picture->Bitmap=DestBitmap;
delete DestBitmap;
delete SrcBitmap;


Вращение текста на кнопке

Если вам вдруг потребовалось повернуть текст на кнопке на 60 градусов, то вам потребуется следующий код:

LOGFONT lf;
ZeroMemory(&lf, sizeof(LOGFONT));
lf.lfHeight = 18;
lf.lfEscapement = 10*60;
lf.lfOrientation = 10*60;
lf.lfCharSet = DEFAULT_CHARSET;
strcpy(lf.lfFaceName, "Tahoma");
Button1->Font->Handle = CreateFontIndirect (&lf);

Рисование на рабочем столе

Для этого вам потребуется:

HDC dc;
dc = GetDC(0);
MoveToEx(dc, q, 0, NULL);
LineTo(dc, 100, 100);
ReleaseDC(0, dc);
Программа нарисует точку с координатами 100x100

Окно прграммы в форме многоугольника

Если вы хотите предать вашей форме нестандартные очертания, этот код для вас:

ShowWindow(Application->Handle, SW_HIDE);
HRGN Reg1, Reg2;
HRGN Region;
POINT p[8];
p[0] = Point(0, 0);
p[1] = Point(10, 10);
p[2] = Point(100, 30);
p[3] = Point(100, 70);
p[4] = Point(50, 100);
p[5] = Point(10, 40);
p[6] = Point(0, 100);
p[7] = Point(0, 0);
Region = CreatePolygonRgn(p, 8, ALTERNATE);
SetWindowRgn(Handle, Region, true);


Стекание рабочего стола

Если вы хотите, чтобы ваш рабочий стол начал таять, используйте:

EnableWindow(GetDesktopWindow(),true);
int s=100,x,y;
x=random(Screen->Width-s);
y=random(Screen->Height-s);
BitBlt(hDC,x,y+1,100,100,hDC,x,y,SRCCOPY);

Перемещение пуска

Для этого напишите:

HWND hWnd = FindWindow("Shell_TrayWnd", NULL);
HWND hWndBt = FindWindowEx(hWnd, NULL, "Button", NULL);
MoveWindow(hWndBt, 50, 2, 98, 32, TRUE);

При закрытии программы он не вернётся сам на своё место

Скрытие программы в диспечере задач

Если вы хотите, чтобы о работе программы можно было узнать только через процессы, наберите:

ShowWindow(Application->Handle, SW_HIDE);


Отмена ALT+F4

Чтобы программа не закрывалась данной комбинацией клавиш:
в окне "Object Inspector" обработчике FormKeyDown:

if (Shift.Contains(ssAlt)&&Key==VK_F4) Tag=1;

в FormCloseQuery:

if(Tag){CanClose=false;Tag=0;}


Как узнать цвет пикселя и изменить его

Узнать цвет пикселя на ФОРМЕ:

Form1->Caption=From1->Canvas->Pixels[по х][по у];

Изменить цвет пикселя:

From1->Canvas->Pixels[по х][по у]=clWhite;


Как узнать цвет пикселя и изменить его

Создайте 4 элемента Shape и код:

Shape2->Brush->Color = RGB(GetRValue(Shape1->Brush->Color),0,0);
Shape3->Brush->Color = RGB(0,GetGValue(Shape1->Brush->Color),0);
Shape4->Brush->Color = RGB(0,0,(GetBValue(Shape1->Brush->Color)));

Генератор случайных чисел

для этого используйте функцию

random(до какого числа)



Сохранение в заранее заданный файл

для этого в коде сохранения например картинки после FileName напишите:

+ "имя файла"


Удаление определённой строки из Memo

Для этого используйте:

Memo1->Lines->Delete(4);



Проигрывание звука без MediaPlayer

Для проигрывания без MediaPlayer:

#include
mciSendString("open anny.mid type sequencer alias MUSIC", NULL, 0, 0);
mciSendString("play MUSIC from 0", NULL, 0, 0);

Удаление файла

Для удаления заданного файла исрользуйте:

AnsiString FileName="d:\\readme.txt";
if (DeleteFile(FileName));

Получение времени и даты

Напишите:

Form1->Caption = DateTimeToStr(Now());



Как свернуть или развернуть форму

Чтобы развернуть или минимизировать форму:

Form1->WindowState = wsMaximized;
Form1->WindowState = wsMinimized;

Закрытие программы

Просто напишите:

Close();

Перевод AnsiString в int

Для этого надо:

AnsiString a = "My Label";
int i = a.ToInt();

Ограничение перемещения мышки

Напишите следующий код

RECT LR;
LR.left=100;
LR.top=100;
LR.right=500;
LR.bottom=500;
ClipCursor(&LR);


Выключение и перезагрузка комьютера

Для этого напишите:

ExitWindowsEx(EWX_SHUTDOWN, 0);
ExitWindowsEx(EWX_REBOOT, 0);

Открытие заданного документа или сайта

Запуск сайта Яндекс:

ShellExecute(Handle, "open", "http://www.yandex.com/",0, 0, SW_SHOWNORMAL);

Аналогично про открытии документа замените ссылку путём к файлу

Hosted by uCoz