Форум программистов, компьютерный форум CyberForum.ru

Как добавить программу в автозагрузку? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ подправить http://www.cyberforum.ru/cpp-beginners/thread1016265.html
#include <iostream> #include <iomanip> using namespace std; int main() { setlocale(LC_ALL, "rus"); int array, n; cout << "Количсевтво элементов массива: "; cin >> n; cout << "Введите элементы массива через Enter\n"; for(int i=0; i<n; i++) {
C++ В чем ошибка? Компилирую в Visual Studio C++ #include <iostream> #include <windows.h> #include <math.h> #include <locale.h> using namespace std; int main() { setlocale(0,"Russian"); int n; http://www.cyberforum.ru/cpp-beginners/thread1016259.html
Исправить программу C++
Здравствуйте! У меня рабочая программа, которая удваивает каждый символ в строке, все работает) Препод сказал, что нужно сделать эту программу через указатели, но я не могу разобраться что и куда. Помогите решить этот вопрос, спасибо) #include <conio.h> #include <iostream> using namespace std; int length(char* str) {
Массив C++
Ребят, есть массив d, состоящий из 10 ячеек. В каждой из них имеет значение от 1 до 4. Мне нужно перебрать массив d и сделать например так, если, например, значение d = значению r, то к значению ячейки массива key(массив key, как и r, состоит из 4 ячеек) прибавить единицу. То есть если значение(3, например) второй ячейки массива d = значению(соответственно, 3) третий ячейки массива r, то к...
C++ Создание класса http://www.cyberforum.ru/cpp-beginners/thread1016222.html
Помогите, пожалуйста, с написанием класса. Нужно создать класс Triangle с полями-сторонами. Определить методы изменения сторон, вычисления углов, вычисления периметра. Создать производный класс Equilateral (равносторонний), имеющий поле площади. Определить метод вычисления площади. Спасибо, товарищи!
C++ Wi-Fi адаптер Вообщем хочу сделать программу для управления wi-fi адаптерами. Но незнаю с чего начать. На форуме не нашел упоминания об wi-fi . Посоветуйте книги или просто библиотеки. Надо под windows. Желательно универсальную под все адаптеры. (Может придется использовать разные библиотеки) Очень буду рад любой помощи. Хочу написать сам, так что прошу готовые решения не скидывать. Может надо... подробнее

Показать сообщение отдельно
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
23.11.2013, 16:16  [ТС]     Как добавить программу в автозагрузку?
Было бы еще интересно посмотреть, как это будет на С++. Какие вообще есть библиотеки для работы с реестром?

Добавлено через 3 минуты
Убежденный, огромное спасибо. Буду разбираться с реестром

Добавлено через 1 час 34 минуты
Убежденный, нашел я простенький класс для работы с реестром, но оно не хочет создавать переменную в реестре. Вот простой пример:
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <windows.h>
#include <tchar.h>
#include "w_registry.h"
 
using namespace std;
 
int main()
{
    HKEY hkey = HKEY_LOCAL_MACHINE;
    LPCTSTR SubKey = TEXT("SOFTWARE/Microsoft/Windows/CurrentVersion/Run");
    LPCTSTR ParName = TEXT("ProgramTest");
 
    win_reg::Registry autorun;
    autorun.OpenKey(&hkey, SubKey, false);
 
    TCHAR* WrStr = "d:/Programing/test.exe";
    autorun.SetValueString(ParName, WrStr);
    autorun.CloseKey(hkey);
    
    return 0;
}
w_registry.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#ifndef W_REGISTRY_H_INCLUDED
#define W_REGISTRY_H_INCLUDED
#include <iostream>
#include <string.h>
#include <windows.h>
#include <tchar.h>
 
namespace win_reg {
 
class Registry {
private:
    bool pr_is_error;
    HKEY pr_hkey;
    DWORD pr_reserved;
    REGSAM pr_desired;
    DWORD pr_options;
    DWORD pr_type;
    DWORD pr_buffer_size;
    std::string pr_buffer_str;
    void SysGetValue(LPCTSTR a_parname, BYTE* a_buffer, DWORD* a_buf_size);
    void SysSetValue(LPCTSTR a_parname, DWORD a_type, const BYTE* a_value, DWORD a_value_size);
 
public:
    Registry();
    ~Registry();
    void OpenKey(HKEY* a_hkey, LPCTSTR a_subkey, bool a_can_create);
 
    void SetValueString(LPCTSTR a_parname, const TCHAR* a_value);
    void SetValueExpandString(LPCTSTR a_parname, const TCHAR* a_value);
    void SetValueInt(LPCTSTR a_parname, const long* a_value);
    void SetValueFloat(LPCTSTR a_parname, const double* a_value);
 
    std::string GetValueString(LPCTSTR a_parname);
    std::string GetValueExpandString(LPCTSTR a_parname);
    long GetValueInt(LPCTSTR a_parname);
    double GetValueFloat(LPCTSTR a_parname);
 
    void CloseKey(HKEY a_hkey);
    void CloseKey();
};
 
}
 
 
#endif // W_REGISTRY_H_INCLUDED
w_registry.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#include "w_registry.h"
 
void win_reg::Registry::SysGetValue(LPCTSTR a_parname, BYTE* a_buffer, DWORD* a_buf_size)
{
    if (!pr_is_error)
    {
        if (RegQueryValueEx(
                pr_hkey,
                a_parname,
                NULL,
                &pr_type,
                NULL,
                &pr_buffer_size) == ERROR_SUCCESS)
            RegQueryValueEx(pr_hkey, a_parname, NULL, &pr_type, (LPBYTE)a_buffer, a_buf_size);
    }
}
 
void win_reg::Registry::SysSetValue(LPCTSTR a_parname, DWORD a_type, const BYTE* a_value, DWORD a_value_size)
{
    if (!pr_is_error)
        pr_is_error = (RegSetValueEx(
            pr_hkey,
            a_parname,
            NULL,
            a_type,
            (BYTE*)a_value,
            a_value_size) != ERROR_SUCCESS);
 
}
 
win_reg::Registry::Registry()
{
    pr_is_error = false;
    pr_reserved = 0;
    pr_desired = KEY_ALL_ACCESS;
    pr_options = REG_OPTION_NON_VOLATILE;
    pr_type = 0;
    pr_buffer_size = 0;
    pr_buffer_str = TEXT("");
}
 
win_reg::Registry::~Registry()
{
 
}
 
void win_reg::Registry::OpenKey(HKEY* a_hkey, LPCTSTR a_subkey, bool a_can_create)
{
    pr_hkey = *a_hkey;
    if (a_can_create)
    {
        pr_is_error = (RegCreateKeyEx(
            pr_hkey,
            a_subkey,
            pr_reserved,
            NULL,
            pr_options,
            pr_desired,
            NULL, &pr_hkey,
            NULL) != ERROR_SUCCESS);
    }
    else
    {
        pr_is_error = (RegOpenKeyEx(
            pr_hkey,
            a_subkey,
            pr_reserved,
            pr_desired,
            &pr_hkey));
    }
}
 
void win_reg::Registry::SetValueString(LPCTSTR a_parname, const TCHAR* a_value)
{
    if (!pr_is_error)
        pr_is_error = (RegSetValueEx(
            pr_hkey,
            a_parname,
            NULL,
            REG_SZ,
            (BYTE*)a_value,
            sizeof(TCHAR)*_tcslen(a_value)) != ERROR_SUCCESS);
}
 
void win_reg::Registry::SetValueExpandString(LPCTSTR a_parname, const TCHAR* a_value)
{
    SysSetValue(a_parname, REG_EXPAND_SZ, (BYTE*)a_value, sizeof(TCHAR)*_tcslen(a_value));
}
 
void win_reg::Registry::SetValueInt(LPCTSTR a_parname, const long* a_value)
{
    SysSetValue(a_parname, REG_DWORD, (BYTE*)a_value, sizeof(long));
}
 
void win_reg::Registry::SetValueFloat(LPCTSTR a_parname, const double* a_value)
{
    SysSetValue(a_parname, REG_BINARY, (BYTE*)a_value, sizeof(double));
}
 
std::string win_reg::Registry::GetValueString(LPCTSTR a_parname)
{
    if (!pr_is_error)
    {
        pr_buffer_str = TEXT("");
        if (RegQueryValueEx(
                pr_hkey,
                a_parname,
                NULL,
                &pr_type,
                NULL,
                &pr_buffer_size) == ERROR_SUCCESS)
            if (pr_type == REG_SZ)
            {
                TCHAR* buffer = new TCHAR[pr_buffer_size];
                RegQueryValueEx(pr_hkey, a_parname, NULL, &pr_type, (LPBYTE)buffer, &pr_buffer_size);
                pr_buffer_str = (const TCHAR*)buffer;
                delete[] buffer;
            }
    }
    return pr_buffer_str;
}
 
std::string win_reg::Registry::GetValueExpandString(LPCTSTR a_parname)
{
    if (!pr_is_error)
    {
        pr_buffer_str = TEXT("");
        if (RegQueryValueEx(
                pr_hkey,
                a_parname,
                NULL,
                &pr_type,
                NULL,
                &pr_buffer_size) == ERROR_SUCCESS)
            if (pr_type == REG_EXPAND_SZ)
            {
                TCHAR* buffer = new TCHAR[pr_buffer_size];
                RegQueryValueEx(pr_hkey, a_parname, NULL, &pr_type, (LPBYTE)buffer, &pr_buffer_size);
                pr_buffer_str = (const TCHAR*)buffer;
                delete[] buffer;
            }
    }
 
    return pr_buffer_str;
}
 
long win_reg::Registry::GetValueInt(LPCTSTR a_parname)
{
    long buffer = 0;
    SysGetValue(a_parname, (LPBYTE)&buffer, &pr_buffer_size);
    return buffer;
}
 
double win_reg::Registry::GetValueFloat(LPCTSTR a_parname)
{
    double buffer = 0;
    SysGetValue(a_parname, (LPBYTE)&buffer, &pr_buffer_size);
    return buffer;
}
 
void win_reg::Registry::CloseKey(HKEY a_hkey)
{
    if (!pr_is_error)
        pr_is_error = (RegCloseKey(a_hkey) != ERROR_SUCCESS);
}
 
void win_reg::Registry::CloseKey()
{
    CloseKey(pr_hkey);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru