Разное
// Регистрация редактора свойства типа AnsiString производится следующим образом. Напишите вспомогательную функцию:
TTypeInfo *AnsiStringTypeInfo(void)
{
TTypeInfo *typeinfo = new TTypeInfo;
typeinfo->Kind = tkLString;
typeinfo->Name = "AnsiString";
return typeinfo;
}
// ... и используйте ее в вызове RegisterPropertyEditor
// (где TMyComponent - имя класса компонента,
// MyStringProperty - имя свойства типа AnsiString,
// TMyStringPropertyEditor - имя класса редактора свойства
// типа AnsiString).
RegisterPropertyEditor(AnsiStringTypeInfo(),
__classid(TMyComponent), "MyStringProperty",
__classid(TMyStringPropertyEditor));
// Чтобы помигать иконкой приложения в панели задач, разместите на форме компонент TTimer (Timer1) и напишите следующий обработчик события OnTimer (предварительно выставив интервал таймера и сделав его активным):
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
FlashWindow(Application->Handle, false);
FlashWindow(Application->Handle, true);
}
// Следующий код запустит скринсейвер Handle - дескриптор окна вашей программы (программисты на C++Builder могут использовать Application->Handle):
SendMessage(Handle, WM_SYSCOMMAND, SC_SCREENSAVE, 0);
// Напишите следующий код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HWND H;
H=FindWindow("Shell_TrayWnd",NULL); //находим хандл окна таскбара
ShowWindow(H, SW_HIDE);//делаем его невидимым
Sleep(2000);
ShowWindow(H, SW_SHOW);//делаем его видимым
}
// Напишите следующий код:
LoadKeyboardLayout("00000409", KLF_ACTIVATE);// Английская
LoadKeyboardLayout("00000419", KLF_ACTIVATE);// Русская
// Напишите следующий код:
ActivateKeyboardLayout(0, 0);
// Напишите следующий код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
/* Очистка корзины
Есть флаги - NULL - как обычно, т.е. по умолчанию
SHERB_NOCONFIRMATION 0x00000001 - без запроса на удаление
SHERB_NOPROGRESSUI 0x00000002 - без показа удаления
SHERB_NOSOUND 0x00000004 - без звука
при желании флаги можно сочетать через | */
char sh[500];
SHEmptyRecycleBin(Handle, sh, SHERB_NOSOUND|SHERB_NOCONFIRMATION);
}
// Напишите следующий код:
void __fastcall TForm1::Label1Click(TObject *Sender)
{
ShellExecute(Handle, "open", "http://google.com/",
0, 0, SW_SHOWNORMAL);
}
// Напишите следующий код:
void __fastcall TForm1::Label1Click(TObject *Sender)
{
ShellExecute(Handle,NULL,"mailto:newcb@narod.ru?subject=Tema",
NULL,NULL,SW_SHOWNORMAL);
}
// Ассемблеровские вставки делаются так:
asm {
// код ассемблера
}
// напишите следующий код:
HANDLE hToken; TOKEN_PRIVILEGES tkp; // Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) ShowMessage("OpenProcessToken"); // Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; // Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); // Cannot test the return value of AdjustTokenPrivileges.
if (GetLastError() != ERROR_SUCCESS) ShowMessage("AdjustTokenPrivileges"); // Shut down the system and force all applications to close.
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE , 0)) ShowMessage("ExitWindowsEx");
// Для того что бы узнать какая программа активна кинте на форму таймер Timer1 и метку Label1 напишите следующий код:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
HANDLE hWnd;
hWnd = GetForegroundWindow();
char szTitle[41] = {0};
GetWindowText(hWnd,szTitle,40);
Label1->Caption = AnsiString(szTitle);
}
// Для блокировки клавиатуры и мыши напишите следующий код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HINSTANCE hDll;
//ниже прототип будущей функции
DWORD __stdcall (*BlockInput)(bool Status);
DWORD Result;
Memo1->Lines->Add("");
Memo1->Lines->Add("Загрузка функции BlockInput()...");
hDll = LoadLibrary("User32.dll");
Memo1->Lines->Add("hDll = " + IntToHex(int(hDll), 8));
BlockInput = (DWORD __stdcall (*)(bool Status))GetProcAddress(hDll,
"BlockInput");
Memo1->Lines->Add("BlockInput = " + IntToHex(int(BlockInput), 8));
if(!BlockInput)
{
Memo1->Lines->Add("Ошибка!!!");
FreeLibrary(hDll);
return;
}
Memo1->Lines->Add("Выполняем BlockInput(true)...");
Result = BlockInput(true);
Memo1->Lines->Add("Result = " + IntToStr(Result));
if(Result)
{
Memo1->Lines->Add("Теперь клиатура и мышь доступны только, если нажать CTRL+ALT+DEL");
Memo1->Lines->Add("Ждем 15 сек...");
Sleep(15000);
}
else Memo1->Lines->Add("Ошибка!!!");
Memo1->Lines->Add("Восстанавливаем все как было...");
BlockInput(false);
FreeLibrary(hDll);
Memo1->Lines->Add("Готово.");
}
// напишите следующий код в нужном месте:
{
...
Form1->Button1Click(Form1);
...
}
Чтобы в Run Time определить количество элементов в массиве, можно воспользоваться макросом ARRAYSIZE, определённым в файле sysopen.h следующим образом:
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
Автор: Srpj Сайт:
// Напищите слеующий код в нужном месте:
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));
Автор: