Главная страница
Навигация по странице:

  • Запуск почтового клиента // Напишите следующий код:void __ fastcall

  • Как добавить код на ассемблере // Ассемблеровские вставки делаются так:asm

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

  • Блокировка клавиатуры и мыши // Для блокировки клавиатуры и мыши напишите следующий код:void __fastcall

  • Sleep

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

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

  • Разное (C Builder) 2-я часть. Разное (C++ Builder) 2-я часть. Разное (C Builder) 2я часть


    Скачать 19.3 Kb.
    НазваниеРазное (C Builder) 2я часть
    АнкорРазное (C Builder) 2-я часть
    Дата14.09.2022
    Размер19.3 Kb.
    Формат файлаdocx
    Имя файлаРазное (C++ Builder) 2-я часть.docx
    ТипПрограмма
    #676492

    Разное (C++ Builder) 2-я часть

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

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

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

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

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

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

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

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

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

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

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

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

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

      // напишите следующий код:



    4. HANDLE hToken;

    5. TOKEN_PRIVILEGES tkp;

    6. // Get a token for this process.

    7. if (!OpenProcessToken(GetCurrentProcess(),

    8. TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))

    9. ShowMessage("OpenProcessToken");

    10. // Get the LUID for the shutdown privilege.

    11. LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,

    12. &tkp.Privileges[0].Luid);

    13. tkp.PrivilegeCount = 1; // one privilege to set

    14. tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    15. // Get the shutdown privilege for this process.

    16. AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,

    17. (PTOKEN_PRIVILEGES)NULL, 0);

    18. // Cannot test the return value of AdjustTokenPrivileges.

    19. if (GetLastError() != ERROR_SUCCESS)

    20. ShowMessage("AdjustTokenPrivileges");

    21. // Shut down the system and force all applications to close.

    22. if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE , 0))

    ShowMessage("ExitWindowsEx");

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

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

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

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

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

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

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

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

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

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

    Наверх


    написать администратору сайта