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

Не работает ShellExecute

13.11.2012, 16:14. Показов 7749. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На компе не срабатывает кнопка с кодом

C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString s1;
 
s1 = "1.pdf";
 
ShellExecute(Handle, "open", s1.c_str(), NULL, "\\\\192.168.53.43\\Folder1\\", SW_SHOW);
}
Делал GetLastError. Показал код ошибки 1155. Это вроде означает, что типу файлов в системе не сопоставлена программа. Но там pdf открывается в Adobe Reader, если руками всё делать и всё нормально.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.11.2012, 16:14
Ответы с готовыми решениями:

ShellExecute не работает
Доброго времени суток. Вот такая задачка хочу открыть программу через OpenDialog вот пример : if (OpenDialog1->Execute()) { ...

Почему не работает ShellExecute
В чем прикол с ShellExecute? Есть код: void __fastcall TMainForm::GeneticalgorithmGA1Click(TObject *Sender){ UnicodeString...

ShellExecute не всегда работает
Здравствуйте. Не подскажите, почему после выполнения кода: if (OpenDialog3->Execute()) { AnsiString MyFN=""; ...

33
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
13.11.2012, 16:33
На первый взгляд всё правильно.
Как вариант предложу тем же ShEx запускать AcroReader или что там установлено с передачей в параметре имени файла, может так сработает
0
0 / 0 / 0
Регистрация: 17.08.2009
Сообщений: 161
13.11.2012, 16:40  [ТС]
Пробовал, тоже не получается.
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
13.11.2012, 16:43
Цитата Сообщение от 4aynik Посмотреть сообщение
Но там pdf открывается в Adobe Reader
Там, это на той машине в сети, где лежит pdf, или на той, на которой работает программа?
0
0 / 0 / 0
Регистрация: 17.08.2009
Сообщений: 161
13.11.2012, 16:51  [ТС]
Там, где работает программа.
0
 Аватар для lordik55
4 / 4 / 3
Регистрация: 28.07.2012
Сообщений: 185
13.11.2012, 22:56
На днях так же парился, нужно было ещё один модуль подключить. Решил проблему так:
C++
1
WinExec("C:\\Users\\ИМЯ_ПОЛЬЗОВАТЕЛЯ\\Desktop\\DLL\\Course++\\Debug\\Win32\\Project2.exe",SW_SHOWNORMAL);
P.S при условии, что нужная программа в папке с оригинальным *.exe'шником.
0
0 / 0 / 0
Регистрация: 17.08.2009
Сообщений: 161
14.11.2012, 11:24  [ТС]
Цитата Сообщение от lordik55 Посмотреть сообщение
На днях так же парился, нужно было ещё один модуль подключить. Решил проблему так:
C++
1
WinExec("C:\\Users\\ИМЯ_ПОЛЬЗОВАТЕЛЯ\\Desktop\\DLL\\Course++\\Debug\\Win32\\Project2.exe",SW_SHOWNORMAL);
P.S при условии, что нужная программа в папке с оригинальным *.exe'шником.
Имеешь ввиду, что нужно ещё один экзешник скомпилить и записать в него этот WinExec?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.11.2012, 11:49
А такой костыль отработает?
C++
1
2
3
4
5
TStringList sl = new TStringList();
sl->Add("start 1.pdf");
sl->SaveToFile("\\\\192.168.53.43\\Folder1\\runit.bat");
ShellExecute(Handle, "open", "runit.bat", NULL, "\\\\192.168.53.43\\Folder1\\", SW_SHOW);
delete sl;
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
14.11.2012, 13:37
C++
1
ShellExecute(Handle, "open", s1.c_str(), NULL, "\\\\192.168.53.43\\Folder1\\", SW_SHOW);
Handle - куда указывает у вас ? может NULL нужно указать ?

Добавлено через 1 минуту
Как запустить одну программу из другой
0
0 / 0 / 0
Регистрация: 17.08.2009
Сообщений: 161
14.11.2012, 14:22  [ТС]
Цитата Сообщение от Kabak Посмотреть сообщение
C++
1
ShellExecute(Handle, "open", s1.c_str(), NULL, "\\\\192.168.53.43\\Folder1\\", SW_SHOW);
Handle - куда указывает у вас ? может NULL нужно указать ?

Добавлено через 1 минуту
Как запустить одну программу из другой
Handle это я из Архангельского взял, там по стандарту так указано.

"Параметр Wnd является дескриптором родительского окна, в котором отображаются сообщения запускаемого приложения. Обычно в качестве него можно просто указать Handle."
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
14.11.2012, 14:36
C++
1
2
3
4
5
String s1;
 
s1 = "1.pdf";
 
ShellExecute(Handle, L"open", s1.w_str(), NULL, L"C:\\", SW_SHOW);
Вышеуказанный код у меня всё открывает. RAD STUDIO XE2 Windows XP

С NULL вместо Handle - тоже открывает

Добавлено через 3 минуты
Может у вас в Winodws слетела ассоциация с pdf файлами ?
0
0 / 0 / 0
Регистрация: 17.08.2009
Сообщений: 161
14.11.2012, 14:47  [ТС]
Ещё забыл - там, где не пашет ShellExecute это моноблок Apple, там у них Мак и Винда 7. ВОт на Винде и не работает.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.11.2012, 16:28
один комп на всю деревню? на нормальном проверить нельзя? беда...
0
0 / 0 / 0
Регистрация: 17.08.2009
Сообщений: 161
14.11.2012, 17:24  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
один комп на всю деревню? на нормальном проверить нельзя? беда...
На 100 компах работает прога с этой кнопкой, на 5 не работает...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.11.2012, 17:52
4aynik, вполне приемлемый прОцент...
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
14.11.2012, 18:35
Цитата Сообщение от LK Посмотреть сообщение
4aynik, вполне приемлемый прОцент...

точно. Особенно если на этих пяти никто не удосужился Adobe Reader проинсталлировать (pdf для оси изначально - пустой звук. Ну или почти).
0
 Аватар для lordik55
4 / 4 / 3
Регистрация: 28.07.2012
Сообщений: 185
14.11.2012, 23:21
Цитата Сообщение от 4aynik Посмотреть сообщение
Имеешь ввиду, что нужно ещё один экзешник скомпилить и записать в него этот WinExec?
Я так сделал просто
0
0 / 0 / 0
Регистрация: 17.08.2009
Сообщений: 161
15.11.2012, 10:16  [ТС]
На всех машинах, где не работает кнопка - установлен Adobe Reader.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
15.11.2012, 10:58
Установлен? Есть ньюансы... - продукты Adobe, насколько мне известно, достаточно независимы, то-есть портабельны. Можно скопировать папку "Adobe" к себе в программный каталог, и запустить оттуда программы; и они будут работать. Но в реестре Винды должна быть строчка об ассоциативной привязке расширения pdf к конкретной программе (еще и с опциями). Если ридер на машину устанавливался, такая запись в реестре появится (именно с этим работает ShellExecute-"open"). А если нет... . Открыть файл .pdf ридером вы сможете, а ShellExecute может не справиться.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
15.11.2012, 12:43
nick42, можно проверить ассоциации и дописать свою, если нужной нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.11.2012, 12:43
Помогаю со студенческими работами здесь

ShellExecute не работает без OpenDialog, хотя последний там никаким боком
Всем доброго времени суток. Пишу простейшую программу, которая открывает файл. ...

Альтернатива ShellExecute
Использую код char s; strcpy( s, Edit1->Text.c_str( ) ); ShellExecute( Handle, "open", s, NULL, NULL, SW_RESTORE ); ...

ShellExecute не канает
void __fastcall TForm1::Button1Click(TObject *Sender) { ShellExecute(NULL,"open","test.bat",NULL,NULL,SW_SHOWNORMAL); } Не...

ShellExecute и WinExec
использовал функцию ShellExecute, для открытия файла из программы. ShellExecute(Handle, "open", "help.chm", 0, 0,...

Вопросы по ShellExecute
Доброго времени суток, у меня есть пару вопросов. Допустим открыл я консольное приложение такой командой: ShellExecuteA(Handle,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru