我的代码中无法解释的bug

时间:2016-05-02 19:01:21

标签: c++ winapi registry

所以我正在尝试编写一个小应用程序来更改注册表中的一行以启用某个东西..

这是我的代码。

#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)我也试过两个单独的if(一个用于on,另一个用于off)没有结果!也尝试等于NULL而不是transparentoff或使用else .. 什么都行不通。

这些c ++到底是什么 - 只是偶尔出现的错误。

1 个答案:

答案 0 :(得分:4)

您的代码存在一些问题(使用旧版API,使用错误的参数,缺少逻辑等)。

尝试更像这样的东西:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".search_cli"
android:id="@+id/search_cli_container"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true">
<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/searchname"
    android:layout_marginTop="10dp"
    android:hint="Pesquisar"/>

<ListView
    android:id="@+id/EnterPays_atomPaysList"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    tools:listitem="@layout/clientesearch"
    android:layout_below="@+id/layout_search_cli" >
</ListView>
</LinearLayout>