Программирование на 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&&SrcBitmapx
Width&&SrcBitmapy>=0&&
SrcBitmapy
Height)
{
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);
Аналогично про открытии документа замените ссылку путём к файлу