Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/40: Рейтинг темы: голосов - 40, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 15.08.2015
Сообщений: 35

Функция для открытия папки

15.08.2015, 21:15. Показов 7458. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно сделать так, что бы после ввода пароля открывалась папка c:\\Program Files. Целый день играюсь с этим, но так и не понял куда втыкнуть "ShellExecute(NULL, "open", "c:\\Program Files", NULL, NULL, SW_RESTORE);". Много времени еще потратил на shellapi.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
#include <iostream>
#include <windows.h> 
#include <shellapi.h> 
#include <string>
 
using namespace std;
 
bool password_is_valid(string password)
{
    string valid_pass = "qwer";
    if (valid_pass == password)
        return true;
    else
        return false;
}
 
void get_pass()
{
    string user_pass;
    cout << "Введите пароль: ";
    getline(cin, user_pass);
    if (!password_is_valid(user_pass)) {
        cout << "Неверный пароль!" << endl;
        get_pass();
    }
    else {
        cout << "Доступ разрешен." << endl;
    }
}
        int main()
        {
            get_pass();
            return 0;
        
            //ShellExecute(NULL, "open", "c:\\Program Files", NULL, NULL, SW_RESTORE);
    
        }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.08.2015, 21:15
Ответы с готовыми решениями:

Пользовательская функция для создания/открытия файла
void CreatOpenFile(Name &amp;NameFile, int &amp;flag) // Создание,открытие файла базы данных { char YorN; flag = 0; cout &lt;&lt;...

Функция открытия файла
typedef char* Name; typedef FILE* File Name NameFile = new char File* file; Auto Pauto int flag = 0; void...

Батник для открытия сетевой папки
помогите решить проблему!! создаю батник для открытия сетевой папки, не работает. потом через &quot;меню выполнить&quot; прописываю путь к...

15
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
15.08.2015, 21:45
Что не работает? Закомментированное? Какие ошибки?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.08.2015, 03:21
Лучший ответ Сообщение было отмечено RaHoWa как решение

Решение

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
#include <iostream>
#include <windows.h> 
#include <shellapi.h> 
#include <string>
 
using namespace std;
 
bool password_is_valid(string password)
{
    string valid_pass = "qwer";
    if (valid_pass == password)
        return true;
    else
        return false;
}
 
bool get_pass(int cnt)
{
    string user_pass;
    for (int i = cnt; i > 0; --i)
    {
        cout << "Количество попыток для ввода пароля: " << i << endl;
        cout << "Введите пароль: ";
        getline(cin, user_pass);
        if (!password_is_valid(user_pass)) 
            cout << "Неверный пароль!" << endl;
        else 
        {
            cout << "Доступ разрешен." << endl;
            return true;
        }
    }
    cout << "Попытки исчерпаны!" << endl;
    return false;
}
 
int main()
{
    setlocale(0, "");
    
    int cnt = 3; // количество попыток ввода пароля
    if (get_pass(cnt))
        ShellExecute(NULL, "open", "c:\\Program Files", NULL, NULL, SW_RESTORE);
    else
        cout << "Не удалось ввести правильный пароль! Попробуйте позже." << endl;
    
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 15.08.2015
Сообщений: 35
16.08.2015, 08:15  [ТС]
Теперь ошибка:
In function 'int main()':
43 79[Error] 'ShellExecute' was not declared in this scope
[Error] parpapka.o: No such file or directory

и когда навожу курсор на строку "ShellExecute(NULL, "open", "c:\\Program Files", NULL, NULL, SW_RESTORE);" подсвечивает красным "INT nShowCmd"
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.08.2015, 08:22
Какая среда?
0
0 / 0 / 0
Регистрация: 15.08.2015
Сообщений: 35
16.08.2015, 08:24  [ТС]
dev-c++
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.08.2015, 08:28
Цитата Сообщение от RaHoWa Посмотреть сообщение
dev-c++
Студия и mingw компилируют этот код без ошибок. Попробуй ещё так:
C++
1
ShellExecuteA(NULL, "open", "c:\\Program Files", NULL, NULL, SW_RESTORE);
Миниатюры
Функция для открытия папки  
1
0 / 0 / 0
Регистрация: 15.08.2015
Сообщений: 35
16.08.2015, 08:47  [ТС]
в студии все работает, спасибо огромное за помощь

но тогда еще вопрос, почему приходиться бегать от одной среды к другой, раз devc++ подвел?

Добавлено через 9 минут
и можно ли поставить таймер, по истечении которого можно будет снова ввести пароль, если до этого исчерпал все три попытки? Или при каждом запуске программы она будет работать как "с чистого листа"?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.08.2015, 09:10
Цитата Сообщение от RaHoWa Посмотреть сообщение
но тогда еще вопрос, почему приходиться бегать от одной среды к другой, раз devc++ подвел?
Какой там (в devC++) компилятор (версия mingw) подключен?

Добавлено через 2 минуты
Цитата Сообщение от RaHoWa Посмотреть сообщение
и можно ли поставить таймер, по истечении которого можно будет снова ввести пароль, если до этого исчерпал все три попытки?
Можно, но это - другая тема.
0
Заблокирован
16.08.2015, 09:10
Там после маин нужно ставить этот код, плюс не забудьте подключить библиотеки, иначе будут ошибки.
0
0 / 0 / 0
Регистрация: 15.08.2015
Сообщений: 35
16.08.2015, 09:20  [ТС]
Цитата Сообщение от lss Посмотреть сообщение
Какой там (в devC++) компилятор (версия mingw) подключен?
mingw 4.7.1
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.08.2015, 10:08
Цитата Сообщение от RaHoWa Посмотреть сообщение
mingw 4.7.1
В Code Blocks, такой компилятор, компилирует этот код (скрин в 7 посте).
0
0 / 0 / 0
Регистрация: 15.08.2015
Сообщений: 35
16.08.2015, 10:29  [ТС]
Цитата Сообщение от lss Посмотреть сообщение
В Code Blocks, такой компилятор, компилирует этот код (скрин в 7 посте).
А может быть такое, что я что то нарушил в devc?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.08.2015, 11:04
Цитата Сообщение от RaHoWa Посмотреть сообщение
А может быть такое, что я что то нарушил в devc?
Может быть всё, что угодно, гадать смысла нет. Посмотри в папке компилятора, в папке include, есть ли файл shellapi.h? А в нём такие строки (у меня это 311, 312 строка):
HINSTANCE WINAPI ShellExecuteA(HWND,LPCSTR,LPCSTR,LPCSTR, LPCSTR,INT);
HINSTANCE WINAPI ShellExecuteW(HWND,LPCWSTR,LPCWSTR,LPCWS TR,LPCWSTR,INT);
0
0 / 0 / 0
Регистрация: 15.08.2015
Сообщений: 35
16.08.2015, 11:23  [ТС]
Цитата Сообщение от lss Посмотреть сообщение
есть ли файл shellapi.h?
Он вообще пустой. Где я могу найти начинку?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
16.08.2015, 11:38
Скачай отсюда новую Dev-C++ 5.11, там компилятор с поддержкой С++11:
http://orwelldevcpp.blogspot.ru/
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.08.2015, 11:38
Помогаю со студенческими работами здесь

список доступных для открытия файлов из заданной папки
Как создать приложение, при открытии которого в comboBox добавляется список доступных файлов для открытия (например txt) в заданной раннее...

Как поставить пароль для открытия файла или папки?
Всем знатокам доброго времени суток! Вопрос, собственно, в заголовке. Сторонние программы существуют, но код на NET найти не...

не работает функция для открытия скрытого элемента
Всем приветы. Пишу работку на Asp.NET MVC. Есть такое представление: @model...

Встроенная функция для открытия файла (*.txt)
Подскажите плз функцию на С# для открытия файла (аналог функции fopen() на С++)? Заранее спс

не работает функция для открытия скрытого элемента
Всем приветы. Пишу работку на Asp.NET MVC. Есть такое представление: @model...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru