Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ WinAPI Как отличить запрет на чтение от запрета на исполнения файла https://www.cyberforum.ru/ win-api/ thread1335835.html
Есть два одинаковых файла, у первого установлена политика NX(no execute) с высоким уровнем целостности а у второго политика NR(no read) с таким же уровнем целостности, как это на программном уровне можно различить? Добавлено через 15 минут ну то есть какую можно написать программу чтобы стало понятно что у одного файла запрет на чтение а у другого на выполнение
Сдвиг по выделенной памяти С++ C++ WinAPI
Здравствуйте, я начинающий программист (студент) вот... учусь работе со списками После знакомства HLASM стал гораздо лучше понимать процессы на низком уровне, но вот в чем дело, не могу сориентироваться в C++ #include <conio.h> #include <iostream> using namespace std; struct element //Структура с инфополями и адресным полем { int x; //Инфополе. значения из x будут передаваться в список
C++ WinAPI Узнать значение переменной в другой программе https://www.cyberforum.ru/ win-api/ thread1335551.html
Здравствуйте Суть задачи такова: - есть некая программа_1(изменить её нельзя), в ней много разных переменных - узнать адрес нужной переменной с помощью ArtMoney и изменить её легко (в большинстве случаев находит с первого раза), адрес при каждом запуске новый - программа_2 должна определять значение этой переменной сразу при запуске, без дополнительных настроек Иными словами нужна...
C++ WinAPI Как надёжно отловить ошибку в SetFilePointer? If function succeeds and lpDistanceToMoveHigh is not NULL, the return value is the low-order DWORD of the new file pointer and lpDistanceToMoveHigh contains the high order DWORD of the new file pointer. If the function fails, the return value is INVALID_SET_FILE_POINTER. To get extended error information, call GetLastError.А если младшая часть новой позиции совпадёт с INVALID_SET_FILE_POINTER? https://www.cyberforum.ru/ win-api/ thread1335528.html
C++ WinAPI WriteFile не пишет
#include<windows.h> #include<iostream> #include<process.h> #include<string.h> #define THRCOUNT 2 HANDLE hOpen, hWrite; HANDLE gMutex; unsigned int __stdcall write(void*); unsigned int __stdcall write1(void*);
C++ WinAPI [Си] WinApi, отрисовка png файла Доброго времени суток! Пишу проект на чистом Си (принципиально) с использованием WinApi. Возникла необходимость вывода в окно картинки в формате .png. Гугл предложил реализацию на GDI+, а следовательно, придется использовать С++. Есть другой выход, С использованием чистого Си? Заранее спасибо. https://www.cyberforum.ru/ win-api/ thread1335242.html
C++ WinAPI Как получить разницу между текущем временем и временем создания файла? Пробую так #include <time.h> time_t timer; time(&timer); тут timer = 1418974297 милисекунд далее получаю время создани файла https://www.cyberforum.ru/ win-api/ thread1335064.html А есть ли 64-х битные версии функций WriteFile и ReadFie? C++ WinAPI
Ну то есть ReadFile( _In_ HANDLE hFile, _Out_ LPVOID lpBuffer, _In_ uint64_t nNumberOfBytesToRead, _Out_opt_ uint64_t* lpNumberOfBytesRead, _Inout_opt_ LPOVERLAPPED lpOverlapped ); и WriteFile( _In_ HANDLE hFile, _In_ LPCVOID lpBuffer, _In_ uint64_t nNumberOfBytesToWrite,
C++ WinAPI Напомните, как зовут функцию, которая меняет положение в файле Декларация файловой переменной HANDLE File;, открытие файла для чтения File=CreateFile(Buffer.FilePath.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);, надо прочитать из файла данные, находящиеся по смещению от начала файла, заданному в переменной uint64_t Offset;. https://www.cyberforum.ru/ win-api/ thread1334986.html C++ WinAPI Работа с Edit Помогитеее! Нужно что бы можно было с файла расширением .txt записать текст в Едит1 по нажатию на баттон в окне(пока что только с клавиатуры) И что бы кнопка находилась именно в этом диалоге INT_PTR CALLBACK Task(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: SetWindowTextA(GetDlgItem(hWnd, IDC_EDIT1), buffer_input); https://www.cyberforum.ru/ win-api/ thread1334876.html
CRITICAL_SECTION (необходимо исправить ошибки кода) C++ WinAPI
Имеется код. Помогите исправить ошибку. #include <windows.h> #include <iostream> using namespace std; CRITICAL_SECTION cs; DWORD WINAPI thread(LPVOID) { int i,j;
C++ WinAPI Работа с двумя "Клавиатура HID" https://www.cyberforum.ru/ win-api/ thread1334691.html
Привет всем Есть комп на котором стоит два USB сканера штрих кода. Они в системе как "Клавиатура HID". Обычная работа такого устройства ввод в поле, в котором стоит курсор, прочитанного номера. Т.е. эмуляция клавы. Но в данном случае нужен изврат. Основной программой на этом компе будет что-то типа 1С и с ней будет работать один из сканеров. Второй сканер будет работать с программой...
0 / 0 / 1
Регистрация: 27.10.2014
Сообщений: 15
0

Raw Input и Global Hook одновременно - C++ WinAPI - Ответ 7014499

20.12.2014, 19:43. Показов 2037. Ответов 0
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем

Не улавливаю логику работы, може быть кто-то растолкует.

Регистрируюсь приемником Raw Input.

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
bool bRet;
DWORD dwErr;
AnsiString asData;
 
RAWINPUTDEVICE strRawInputDevices;
 
strRawInputDevices.usUsagePage = 1;
strRawInputDevices.usUsage     = 6;
strRawInputDevices.dwFlags     = RIDEV_INPUTSINK;
strRawInputDevices.hwndTarget  = Form1->Handle;
 
bRet = RegisterRawInputDevices(&strRawInputDevices,1,sizeof(RAWINPUTDEVICE));


сам обработчик

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
void __fastcall TForm1::WMInput(TMessage &msg)
{
AnsiString asData;
AnsiString * pData;
HRESULT hResult;
int iRet;
WCHAR szTempOutput[100];
HANDLE hDevice;
INPUT INBuf;
 
if (msg.Msg == WM_INPUT)
  {
    UINT dwSize;
 
    GetRawInputData((HRAWINPUT)msg.LParam, RID_INPUT, NULL, &dwSize,
                    sizeof(RAWINPUTHEADER));
    LPBYTE lpb = new BYTE[dwSize];
    if (lpb == NULL)
    {
   asData = "lpb == NULL\n";
   ListBox1->Items->Add(asData);
    }
 
    if (GetRawInputData((HRAWINPUT)msg.LParam, RID_INPUT, lpb, &dwSize,
         sizeof(RAWINPUTHEADER)) != dwSize )
      {
     asData = "GetRawInputData does not return correct size !";
     ListBox1->Items->Add(asData);
      }
 
    RAWINPUT* raw = (RAWINPUT*)lpb;
 
    if (raw->header.dwType == RIM_TYPEKEYBOARD)
    {
        hResult = StringCchPrintf(szTempOutput, STRSAFE_MAX_CCH, TEXT(" Kbd: make=%04x Flags:%04x Reserved:%04x ExtraInformation:%08x, msg=%04x VK=%04x \n"),
            raw->data.keyboard.MakeCode,
            raw->data.keyboard.Flags,
            raw->data.keyboard.Reserved,
            raw->data.keyboard.ExtraInformation,
            raw->data.keyboard.Message,
            raw->data.keyboard.VKey);
        if (FAILED(hResult))
        {
       asData = "FAILED(hResult)";
       ListBox1->Items->Add(asData);
        }
      asData = szTempOutput;
      ListBox1->Items->Add(asData);
 
      hDevice = raw->header.hDevice;
 
      asData = IntToStr((__int64)hDevice);
      ListBox1->Items->Add(asData);
      Label2->Caption = asData;
 
             }//if (raw->header.dwType == RIM_TYPEKEYBOARD)
   delete[] lpb;
  }//if (msg.Msg == WM_INPUT)
}


Устанавливаю глобальный хук

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

C++
1
2
3
4
AnsiString asData;
DWORD dwErr;
 
hhRes = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc,NULL,0);


Обработчик его. Т.е. я все пропускаю дальше!

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
AnsiString asData;
KBDLLHOOKSTRUCT kbdBuf;
HHOOK m_hHook = NULL;
 
asData = IntToStr((__int64)nCode);
asData += " ";
asData += IntToStr((__int64)wParam);
asData += " ";
asData += IntToStr((__int64)lParam);
Form1->ListBox1->Items->Add(asData);
 
memcpy(&kbdBuf,(const void *)lParam,sizeof(KBDLLHOOKSTRUCT));
 
asData = IntToStr((__int64)kbdBuf.vkCode);
asData += " ";
asData += IntToStr((__int64)kbdBuf.scanCode);
asData += " ";
asData += IntToStr((__int64)kbdBuf.flags);
asData += " ";
asData += IntToStr((__int64)kbdBuf.time);
asData += " ";
asData += IntToStr((__int64)kbdBuf.dwExtraInfo);
Form1->ListBox1->Items->Add(asData);
 
 return  CallNextHookEx(m_hHook, nCode, wParam, lParam);
}


На ошибки, функции регистрации я проверяю.

Далее результаты эксперимента (на Win 7)

1. Если я в своем приложении устанавливаю глобальный хук, то при клавиатурном вводе(в своем же приложении) я вижу вывод из функции LowLevelKeyboardProc. Если я после этого регистрируюсь как
потребитель RawInput, то вывода из функции LowLevelKeyboardProc уже нет, но есть вывод из WMInput.
Это же странно, не?

2. Если в п.1 поменять местами регистрацию и установку хука, то результат не изменится.

3. Если я работаю с клавой в другой программе(в блокноте), то вижу работу и LowLevelKeyboardProc и
RawInput одновременно(в своем приложении), как и положено в общем. Причем LowLevelKeyboardProc вызывается первой, потом приходит RawInput. Это противоречит предположению тут http://forum.ixbt.com/topic.cgi?id=26:40684:27#27 но логично, т.к. хук все таки глобальный.

Вернуться к обсуждению:
Raw Input и Global Hook одновременно C++ WinAPI
0
Заказать работу у эксперта
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2014, 19:43
Готовые ответы и решения:

Global Hook for Window Creation and Destruction
Кто нибудь использовал данный класс для создания глобального хука на открытие и закрытие окон?...

Global Hook и вызов в другом классе
public class Nimaf { UserActivityHook actHook; void LOL1(object sender,...

Mouse Global Hook (Глобальный захват мыши)
Есть программка которая работает в свернутом режиме, она должна отслеживать нажатие левой кнопки...

Get Global keyboard input
Здраствуите. Помогите пожалуеста разобратся. Есть консольное приложения, нужна получать...

0
20.12.2014, 19:43
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.12.2014, 19:43
Помогаю со студенческими работами здесь

С++ WM события и raw input
Здравствуйте, я пишу простой игровой движок на c++ / directx 9. Сегодня я решил, что мне нужна...

Регистрация нескольких мышек через raw input device
Здравствуйте, почему при регистрации мышки: int RawInput::initDevices() { RAWINPUTDEVICE...

Как определить разные устройства через Raw Input?
Есть пульт ду для презентаций модель Hama &quot;Piccino&quot; Wireless Laser Presenter, на нем есть две...

В чем преимущество trampoline hook над обычным hook?
Объясните пожалуйста в чем преимущество trampoline hook и hook? Никак не могу понять

0
Новые блоги и статьи
Что такое хорошо и что такое плохо, вид сбоку. Индивид и общество - грань не нарушения.
Hrethgir 18.01.2025
В моей личной жизни и времени, я рассуждаю категорией "хуже-лучше", в том плане, когда меня спросили например - "а зачем ты делаешь свой процессор?", то я ответил - "чтобы сделать свою жизнь лучше". . .
Передача по ссылке или по значению в Java?
InfoMaster 18.01.2025
В мире программирования на Java одним из ключевых аспектов, требующих глубокого понимания, является механизм передачи параметров в методы. Этот фундаментальный концепт часто становится источником. . .
Тернарный условный оператор в Python
InfoMaster 18.01.2025
В мире программирования существует множество инструментов и конструкций, позволяющих создавать эффективный и лаконичный код. Одним из таких инструментов является тернарный условный оператор, который. . .
Как удалить неотслеживаемые файлы из рабочего дерева Git
InfoMaster 18.01.2025
В процессе разработки программного обеспечения с использованием системы контроля версий Git часто возникает необходимость в управлении неотслеживаемыми файлами. Неотслеживаемые файлы (untracked. . .
Что делает код if __name__ == "__main__": в Python
InfoMaster 18.01.2025
В мире программирования на Python существует множество важных концепций, и одной из наиболее интересных является конструкция if __name__ == "__main__". Эта специальная конструкция играет ключевую. . .
Как заставить Git забыть об отслеживаемом файле, добавленном в .gitignore
InfoMaster 18.01.2025
В мире разработки программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса, позволяя эффективно отслеживать изменения в коде и управлять ими. Однако. . .
Что означает use strict в JavaScript и для чего используется
InfoMaster 18.01.2025
В мире современной веб-разработки JavaScript играет ключевую роль как один из основных языков программирования. По мере его эволюции возникла необходимость в механизмах, которые помогли бы. . .
Как работать со скрытыми (hidden) элементами в jQuery
InfoMaster 18.01.2025
В современной веб-разработке управление видимостью элементов на странице является одним из ключевых аспектов создания интерактивных пользовательских интерфейсов. jQuery предоставляет мощный набор. . .
Как переключаться между ветками (Branch) с помощью checkout в Git
InfoMaster 18.01.2025
Ветки в Git являются одной из ключевых концепций для управления версионностью кода, позволяя разработчикам эффективно работать в команде и параллельно развивать программные проекты. Каждый новый. . .
Что такое стек и куча, чем они отличаются и где находятся
InfoMaster 18.01.2025
Понимание основных концепций памяти в программировании В мире современного программирования эффективное управление памятью играет ключевую роль в создании производительных и надежных приложений. . . .
Как использовать комментарии в JSON
InfoMaster 18.01.2025
JSON (JavaScript Object Notation) представляет собой легкий и широко используемый формат обмена данными, который стал стандартом де-факто для веб-приложений и программных интерфейсов. При работе с. . .
Как заставить git pull перезаписать локальные файлы в Git
InfoMaster 18.01.2025
Проблема перезаписи локальных файлов в Git При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо синхронизировать локальный репозиторий с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru