Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июня!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

Разное

  1. Регистрация редактора свойства типа AnsiString
  2. Мигание иконкой в панели задач
  3. Запуск скринсейвера из программы
  4. Скрытие таскбара
  5. Переключение раскладки клавиатуры (конкретный язык)
  6. Переключение раскладки клавиатуры
  7. Программная очистка корзины (для Windows 98)
  8. Запуск браузера
  9. Запуск почтового клиента
  10. Как добавить код на ассемблере
  11. Как сделать Shutdown (закрыть все запущенные приложения)
  12. Какая программа активна
  13. Блокировка клавиатуры и мыши
  14. Как из тела программы запустить обработчик события (как функцию)
  15. Определение количества элементов в массиве
  16. Имитации нажатия левой кнопки мыши
  1. Регистрация редактора свойства типа AnsiString

    // Регистрация редактора свойства типа 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));

  2. Мигание иконкой в панели задач

    // Чтобы помигать иконкой приложения в панели задач, разместите на форме компонент TTimer (Timer1) и напишите следующий обработчик события OnTimer (предварительно выставив интервал таймера и сделав его активным):
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    FlashWindow(Application->Handle, false);
    FlashWindow(Application->Handle, true);
    }

  3. Запуск скринсейвера из программы

    // Следующий код запустит скринсейвер Handle - дескриптор окна вашей программы (программисты на C++Builder могут использовать Application->Handle):
    SendMessage(Handle, WM_SYSCOMMAND, SC_SCREENSAVE, 0);

  4. Скрытие таскбара

    // Напишите следующий код:
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    HWND H;
    H=FindWindow("Shell_TrayWnd",NULL); //находим хандл окна таскбара
    ShowWindow(H, SW_HIDE);//делаем его невидимым
    Sleep(2000);
    ShowWindow(H, SW_SHOW);//делаем его видимым
    }

  5. Переключение раскладки клавиатуры (конкретный язык)

    // Напишите следующий код:
    LoadKeyboardLayout("00000409", KLF_ACTIVATE);// Английская
    LoadKeyboardLayout("00000419", KLF_ACTIVATE);// Русская

  6. Переключение раскладки клавиатуры

    // Напишите следующий код:
    ActivateKeyboardLayout(0, 0);

  7. Программная очистка корзины (для Windows 98)

    // Напишите следующий код:
    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);
    }

  8. Запуск браузера

    // Напишите следующий код:
    void __fastcall TForm1::Label1Click(TObject *Sender)
    {
    ShellExecute(Handle, "open", "http://google.com/",
    0, 0, SW_SHOWNORMAL);
    }

  9. Запуск почтового клиента

    // Напишите следующий код:
    void __fastcall TForm1::Label1Click(TObject *Sender)
    {
    ShellExecute(Handle,NULL,"mailto:newcb@narod.ru?subject=Tema",
    NULL,NULL,SW_SHOWNORMAL);
    }

  10. Как добавить код на ассемблере

    // Ассемблеровские вставки делаются так:
    asm {
    // код ассемблера
    }

  11. Как сделать Shutdown (закрыть все запущенные приложения)

    // напишите следующий код:
    
     
     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");


  12. Какая на программа активна

    // Для того что бы узнать какая программа активна кинте на форму таймер Timer1 и метку Label1 напишите следующий код:
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    HANDLE hWnd;
    hWnd = GetForegroundWindow();
    char szTitle[41] = {0};
    GetWindowText(hWnd,szTitle,40);
    Label1->Caption = AnsiString(szTitle);
    }

  13. Блокировка клавиатуры и мыши

    // Для блокировки клавиатуры и мыши напишите следующий код:
    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("Готово.");
    }

  14. Как из тела программы запустить обработчик события (как функцию)

    // напишите следующий код в нужном месте:
    {
    ...
    Form1->Button1Click(Form1);
    ...
    }

  15. Определение количества элементов в массиве

    Чтобы в Run Time определить количество элементов в массиве, можно воспользоваться макросом ARRAYSIZE, определённым в файле sysopen.h следующим образом:
    #define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
    Автор: Srpj Сайт: http://srpj.narod.ru/

  16. Имитации нажатия левой кнопки мыши

    // Напищите слеующий код в нужном месте:
    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));
    Автор: ant47




<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS