ччбчлчлчъ ччччшчьпьппзвжв
Потрачен
- 556
- 271
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
???как можно хукнуть функцию loadlibrary из kernel драйвера, как лучше?
???как можно хукнуть функцию loadlibrary из kernel драйвера, как лучше?
Если правильно понял
не, это хук локальный для программы онли, а мне нужно в драйвере реализовать глобальный хук для loadlibraryЕсли правильно понял
MoonDownLoadHook/src/main.cpp at main · whyega/MoonDownLoadHook
Contribute to whyega/MoonDownLoadHook development by creating an account on GitHub.github.com
Как в imgui на с++ сделать кнопку start, и кнопку stop, если нажать на кнопку start - бесконечно будет в консоль выводится какой либо текст, но если нажать кнопку stop - вывод текста в консоль прекратится, нажму опять на start - опять начнется вывод текста, нажму опять на stop - вывод текста в консоль прекратится. Заранее спасибо!
bool running = false;
void RenderUI()
{
if (!running && ImGui::Button("Start"))
{
running = true;
printf("Вывод текста.\n");
}
if (running && ImGui::Button("Stop"))
{
running = false;
printf("Конец вывода текста.\n");
}
}
ImGui::NewFrame();
RenderUI();
ImGui::Render();
спасибо за ответ! но у меня не выходит, я буду рад если ты попробуешь это добавить в исходник имгуи, и поделится конечным результатом, сам исходник меню одного из ютуберов - https://github.com/cazzwastaken/borderless-imgui-windowи в твое окно, после ImGui::NewFrame();C++:bool running = false; void RenderUI() { if (!running && ImGui::Button("Start")) { running = true; printf("Вывод текста.\n"); } if (running && ImGui::Button("Stop")) { running = false; printf("Конец вывода текста.\n"); } }
C++:ImGui::NewFrame(); RenderUI(); ImGui::Render();
остальной код без измененийспасибо за ответ! но у меня не выходит, я буду рад если ты попробуешь это добавить в исходник имгуи, и поделится конечным результатом, сам исходник меню одного из ютуберов - https://github.com/cazzwastaken/borderless-imgui-window
bool running = false;
void gui::Render() noexcept
{
ImGui::SetNextWindowPos({ 0, 0 });
ImGui::SetNextWindowSize({ WIDTH, HEIGHT });
ImGui::Begin(
" ",
&isRunning,
ImGuiWindowFlagsNoResize |
ImGuiWindowFlagsNoSavedSettings |
ImGuiWindowFlagsNoCollapse |
ImGuiWindowFlagsNoMove
);
if (!running && ImGui::Button("Start"))
{
running = true;
printf("Вывод текста.\n");
}
if (running && ImGui::Button("Stop"))
{
running = false;
printf("Конец вывода текста.\n");
}
if (running) // будет выводится вечно, пока running не станет false, так как меню отрисовывается каждый кадр, отсюда и проверка будет происходить каждый кадр
{
printf("Текст в цикле.\n");
}
ImGui::End();
ImGui::NewFrame();
ImGui::Render();
}
после запуска кода - меню без всего, это просто черный прямоугольник, но если я уберу строчки " ImGui::NewFrame();остальной код без изменений
C++:bool running = false; void gui::Render() noexcept { ImGui::SetNextWindowPos({ 0, 0 }); ImGui::SetNextWindowSize({ WIDTH, HEIGHT }); ImGui::Begin( " ", &isRunning, ImGuiWindowFlagsNoResize | ImGuiWindowFlagsNoSavedSettings | ImGuiWindowFlagsNoCollapse | ImGuiWindowFlagsNoMove ); if (!running && ImGui::Button("Start")) { running = true; printf("Вывод текста.\n"); } if (running && ImGui::Button("Stop")) { running = false; printf("Конец вывода текста.\n"); } if (running) // будет выводится вечно, пока running не станет false, так как меню отрисовывается каждый кадр, отсюда и проверка будет происходить каждый кадр { printf("Текст в цикле.\n"); } ImGui::End(); ImGui::NewFrame(); ImGui::Render(); }
bool running = false;
void gui::Render() noexcept
{
ImGui::SetNextWindowPos({ 0, 0 });
ImGui::SetNextWindowSize({ WIDTH, HEIGHT });
ImGui::Begin(
"test",
&isRunning,
ImGuiWindowFlags_NoResize |
ImGuiWindowFlags_NoSavedSettings |
ImGuiWindowFlags_NoCollapse |
ImGuiWindowFlags_NoMove
);
if (!running && ImGui::Button("Start"))
{
running = true;
printf("Начало вывода текста.\n");
}
if (running && ImGui::Button("Stop"))
{
running = false;
printf("Конец вывода текста.\n");
}
if (running) // будет выводится вечно, пока running не станет false, так как меню отрисовывается каждый кадр, отсюда и проверка будет происходить каждый кадр
{
printf("Тут и происходит тот самый цикл после кнопки start");
Sleep(5000);
}
ImGui::End();
ImGui::Render();
}
Всем привет! я хочу спросить о моей проблеме в imgui на c++. Суть проблемы такова - У меня имеется две кнопки - start, stop. Start отвечает за начало цикла, а stop заканчивает его. Код в цикле который выполняется при кнопке Stop вызывает у меня проблему, если мне надо в коде того цикла заморозить функцию через Sleep - замораживается все imgui, и соответственно я не могу нажать на кнопку stop. Если что-либо не понятно - могу рассказать более подробно. Кусок кода ниже.
Пока 5 секунд в цикле не пройдут, я не могу нажать на stop, но и тут проблема, у меня есть доля секунды пока опять начнется цикл, и мне надо ожидать 5 секунд.с++:bool running = false; void gui::Render() noexcept { ImGui::SetNextWindowPos({ 0, 0 }); ImGui::SetNextWindowSize({ WIDTH, HEIGHT }); ImGui::Begin( "test", &isRunning, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove ); if (!running && ImGui::Button("Start")) { running = true; printf("Начало вывода текста.\n"); } if (running && ImGui::Button("Stop")) { running = false; printf("Конец вывода текста.\n"); } if (running) // будет выводится вечно, пока running не станет false, так как меню отрисовывается каждый кадр, отсюда и проверка будет происходить каждый кадр { printf("Тут и происходит тот самый цикл после кнопки start"); Sleep(5000); } ImGui::End(); ImGui::Render(); }
bool running = false;
std::thread additionalThread;
void StartAdditionalThread()
{
additionalThread = std::thread(()
{
while (running)
{
printf("Start\n");
std::thisthread::sleepfor(std::chrono::milliseconds(5000));
}
});
}
void StopAdditionalThread()
{
if (additionalThread.joinable())
{
running = false;
additionalThread.join();
}
}
void gui::Render() noexcept
{
ImGui::SetNextWindowPos({ 0, 0 });
ImGui::SetNextWindowSize({ WIDTH, HEIGHT });
ImGui::Begin(
"test",
&isRunning,
ImGuiWindowFlagsNoResize |
ImGuiWindowFlagsNoSavedSettings |
ImGuiWindowFlagsNoCollapse |
ImGuiWindowFlagsNoMove
);
if (!running && ImGui::Button("Start"))
{
running = true;
printf("Начало вывода текста.\n");
StartAdditionalThread();
}
if (running && ImGui::Button("Stop"))
{
running = false;
printf("Конец вывода текста.\n");
StopAdditionalThread();
}
ImGui::End();
ImGui::Render();
}
В этом имгуи я писал https://drive.google.com/file/d/14YBCAqpSlPzmXeAnPSWe4E6Hlhu4fsIl/viewC++:bool running = false; std::thread additionalThread; void StartAdditionalThread() { additionalThread = std::thread(() { while (running) { printf("Start\n"); std::thisthread::sleepfor(std::chrono::milliseconds(5000)); } }); } void StopAdditionalThread() { if (additionalThread.joinable()) { running = false; additionalThread.join(); } } void gui::Render() noexcept { ImGui::SetNextWindowPos({ 0, 0 }); ImGui::SetNextWindowSize({ WIDTH, HEIGHT }); ImGui::Begin( "test", &isRunning, ImGuiWindowFlagsNoResize | ImGuiWindowFlagsNoSavedSettings | ImGuiWindowFlagsNoCollapse | ImGuiWindowFlagsNoMove ); if (!running && ImGui::Button("Start")) { running = true; printf("Начало вывода текста.\n"); StartAdditionalThread(); } if (running && ImGui::Button("Stop")) { running = false; printf("Конец вывода текста.\n"); StopAdditionalThread(); } ImGui::End(); ImGui::Render(); }
#include <thread> не забудь
std::thread additionalThread;
void StartAdditionalThread()
{
additionalThread = std::thread([]()
{
while (running)
{
printf("Start\n");
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
}
});
}