Articles of winapi

Написание основ Windows Port Monitor

Я пытаюсь найти базовый пример, учебник или сообщение в блоге о том, как писать монитор порта принтера. Я загрузил Windows DDK и выкопал через localmon, но похоже, что этот пример намного сложнее, чем просто основы для орехов и болтов, и, насколько я понимаю, он немного отличается от монитора порта OEM из-за того, как он обрабатывает […]

Можно ли полностью исключить мерцание при изменении размера windows?

Обычно даже при использовании двойной буферизации при изменении размера windows кажется, что неизбежно произойдет мерцание. Шаг 1, исходное окно. Шаг 2, размер windows изменяется, но дополнительная область не была окрашена. Шаг 3, окно будет изменено, а дополнительная область будет окрашена. Можно ли как-то скрыть setp 2? Могу ли я приостановить процесс изменения размера до тех […]

Как запустить приложение под управлением SYSTEM?

Без использования службы Windows? Является ли это возможным?

Как отключить кнопку «Пуск» (но не панель задач) в Windows 7?

В Windows XP можно было отключить кнопку «Пуск» со следующим кодом: hTray = FindWindow (TEXT(“Shell_TrayWnd”), NULL); if (hTray) { hStartButton = FindWindowEx(hTray, NULL, TEXT(“Button”), NULL); if (hStartButton) ShowWindow(hStartButton, FALSE); } Для конфигурации компьютера с открытым доступом мне нужно сделать это в Windows 7. Кнопка «Пуск» должна быть отключена (а не просто скрыта), а остальная часть […]

Проверьте, содержит ли строка другой C

Теперь у меня есть этот код, но он всегда устанавливает значение null UNICODE_STRING str; char *cmp = “Hello”; RtlInitUnicodeString (&str, L”Hello world!”); if( ( strstr((char * )str.Buffer, cmp) ) != NULL) { // cmp founded in str. } else { // cmp not founded in str. Always here, but why?? } Можете ли вы объяснить […]

x86 Вставка кода в x86-процесс из процесса x64

Я понимаю, что название немного запутанно, поэтому позвольте мне объяснить, что я пытаюсь сделать: Я только что закончил писать простой DLL-инжектор для доказательства концепции, которую я пытаюсь написать. Программа принимает моментальный снимок текущих процессов, перечисляет дерево процессов и вставляет DLL в свой прямой родительский процесс. Теперь в идеальных условиях это прекрасно работает: 32-битная версия инжектора […]

Ошибка преобразования в CreateThread

У меня есть странная ошибка, когда я пытаюсь использовать функцию CreateThread . Вот мой код: HANDLE threads[3]; //threads[0] is printer, threads[1] is receiver, [2] is serverconn DWORD printer_id, receiver_id, serverconn_id; if( ((threads [0] = CreateThread(NULL, 0, printer_thread, (LPVOID) thread_args, 0, &printer_id)) == NULL) || ((recv_thread = threads [1] = CreateThread(NULL, 0, receiver_thread, (LPVOID) thread_args, 0, […]

использование мыши с sendInput в C

Я хотел бы программным образом переместить и щелкнуть мышью, используя API окон в C. Я искал google высоко и низко и не могу найти никаких учебных курсов sendInput для простого C. Все, что я могу найти, это C # / C ++. У меня мало опыта работы с API окон, и мне бы понравилось отличное […]

ошибка C2275: незаконное использование этого типа в качестве выражения

Со вчерашнего дня я столкнулся с компиляционной ошибкой для моего проекта C. Сам проект состоит в создании службы, которая будет выполнять некоторые задачи. Я не то, что изменилось со вчерашнего дня, но сегодня утром мой код больше не компилируется. Вот ошибки, которые у меня есть: c:\path\main.c(56): error C2275: ‘SERVICE_TABLE_ENTRY’ : illegal use of this type […]

Как написать приложение Windows без использования WinMain?

Приложения Windows GUI, написанные на C / C ++, имеют «WinMain» в качестве точки входа (а не «основной»). Мое понимание этого заключается в том, что компилятор генерирует «главную» функцию, которая будет вызываться C Runtime. Эта «основная» функция устанавливает необходимую среду для графического интерфейса пользователя и вызывает «WinMain» (указание дескрипторов экземпляра и т. Д.). Короче говоря, […]