Так что я пытаюсь написать небольшое приложение, которое изменяет строку в реестре, чтобы включить определенную вещь ..Необъяснимой ошибка в моем коде
Вот мой код.
#include <iostream>
#include <Windows.h>
DWORD transparenton = 0x00000001;
DWORD transparentoff = 0x00000000;
using namespace std;
void pause();
void act(PHKEY key);
void enableTransparency();
void disableTransparency();
int main()
{
cout << "\tStart Menu Blurrier\n";
cout << "Make your Windows 10 start menu background blurry like in Windows 7\nAutomatic On/Off\n";
pause();
PHKEY result;
RegOpenKeyA(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\EnableBlurBehind", result);
act(result);
//enableTransparency();
RegCloseKey(HKEY_CURRENT_USER);
pause();
}
void pause()
{
cout << "Press [ENTER] to continue...";
cin.get();
system("cls");
}
void act(PHKEY key)
{
DWORD l = (DWORD)key;
if(l==transparenton){
disableTransparency();
}
else{
enableTransparency();
}
}
void disableTransparency()
{
RegSetKeyValueA(HKEY_CURRENT_USER,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\",
"EnableBlurBehind",
REG_DWORD,
&transparentoff,
sizeof(transparentoff));
}
void enableTransparency()
{
RegSetKeyValueA(HKEY_CURRENT_USER,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\\",
"EnableBlurBehind",
REG_DWORD,
&transparenton,
sizeof(transparenton));
}
Хорошо, ошибка в недействительном акте
void act(PHKEY key)
{
DWORD l = (DWORD)key;
if(l==transparenton){
disableTransparency();
}
else{
enableTransparency();
}
}
Он может обнаружить, когда он на и выключить его, но он не может определить, когда он выключен и включите его.
1) Функция enableTransparency работает нормально, потому что, если я вызываю ее напрямую, она работает. 2) Я также попробовал два отдельных варианта (один для включения и другой для офф) без каких-либо результатов! также попытался равным NULL вместо прозрачности или использования else. Ничего не работает.
Что, черт возьми, эти C++ - только ошибки, которые кажутся мне время от времени.
Почему вы думаете, литье 'PHKEY' для типа DWORD и сравнивая его с константой имеет смысл? И почему вы передаете неинициализированный указатель на 'RegOpenKeyA'? – CodesInChaos
Передача унифицированного указателя была единственным способом, так как для этого требовался LPCVOID, который является указателем на что-то? Поправьте меня, если я ошибаюсь ... Если тогда, как я должен это делать? – MW2TopTenWORLD
Я думаю, вам нужна локальная переменная типа 'HKEY', и вы передаете указатель на нее в' RegOpenKeyA'. Это даст вам ручку. Но, конечно, сравнение дескриптора с константой все еще бессмысленно. – CodesInChaos