Shell.Open(path) abfangen und abbrechenC++

Programme in C++. Entwicklerforum
Guest
 Shell.Open(path) abfangen und abbrechen

Post by Guest »

Ich möchte jeden Versuch eines Programms, ein Windows-Explorer-Fenster zu öffnen, abbrechen und stattdessen etwas anderes tun.
Bisher habe ich viel Zeit mit SetWindowsHookEx, VirtualProtect, ShellExecuteW und allen möglichen globalen Hooks verbracht , aber nichts funktioniert. Es ist mir gelungen, einen Hook zu installieren, der benachrichtigt wird, wenn einige Fenster aktiviert sind, aber nicht irgendein Fenster und vor allem nicht der Windows Explorer. Ich würde denken, dass VirtualProtect der beste Weg ist, wenn das Ziel darin besteht, den Vorgang vollständig abzubrechen, aber ich würde alles begrüßen, was funktioniert und verhindert, dass das Fenster auch nur im Geringsten sichtbar ist.

Code: Select all

extern "C" __declspec(dllexport) void SetGlobalHook()
{
_hmod = GetModuleHandle(L"DllPlusPlus"); // Get the handle of the current DLL
if (_hmod != NULL)
{
OriginalShellExecuteW = (ShellExecuteW_t)GetProcAddress(GetModuleHandle(L"shell32.dll"), "ShellExecuteW");
if (OriginalShellExecuteW != NULL)
{
DWORD oldProtect;
VirtualProtect((LPVOID)OriginalShellExecuteW, sizeof(LPVOID), PAGE_EXECUTE_READWRITE, &oldProtect);

// Replace the function pointer with the address of the hook
*(LPVOID*)&OriginalShellExecuteW = (LPVOID)HookedShellExecuteW;

VirtualProtect((LPVOID)OriginalShellExecuteW, sizeof(LPVOID), oldProtect, &oldProtect);

hShellHook = SetWindowsHookEx(WH_SHELL, ShellProc, _hmod, 0);
if (hShellHook == NULL)
{
DWORD error = GetLastError();
std::wofstream logFile("C:\\hook_error_log.txt", std::ios::app);
if (logFile.is_open())
{
logFile

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post