Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2013, 12:08   #1
marusua
Пользователь
 
Регистрация: 22.10.2011
Сообщений: 32
Восклицание Функция ShellExecute

здравствуйте! У меня следующая ситуация: использую функцию ShellExecute для того, чтобы открывался *.pdf файл при нажатии на label, но первое время, когда открываешь первых два файла все нормально, на третий раз виснет программа, а на данный момент при первом нажатии на такую ссылку висяк!!

Вот то, что я использую или использовала:
Код:
ShellExecute(Handle,nil,PChar('d:\Технологическая практика\Проект\Дополнительно\001_2- Всемирная история Учебник для вузов_Поляк Маркова_2000.pdf'),nil,nil,SW_RESTORE);

ShellExecute(h, 'open', 'd:\Технологическая практика\Проект\Дополнительно\001_1- Всемирная история Учебник для вузов_Поляк Маркова_2000.pdf', nil, nil, SW_SHOW);
Так же использовала CreateProcess. Вот пример:
Код:
CreateProcess(nil, 'cmd.exe /c net session >d:\Технологическая практика\Проект\Дополнительно\001_1- Всемирная история Учебник для вузов_Поляк Маркова_2000.pdf', nil, nil, False, 0, nil, nil, startupinfo, processinformation);
Помогите, пожалуйста!!!

Последний раз редактировалось Stilet; 27.04.2013 в 12:31.
marusua вне форума Ответить с цитированием
Старый 27.04.2013, 12:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
if ShellExecute(form1.handle,'open','d:\Технологическая практика\Проект\Дополнительно\001_1- Всемирная история Учебник для вузов_Поляк Маркова_2000.pdf','d:\Технологическая практика\Проект\Дополнительно\','',SW_SHOW)<=32
then RaiseLastOSError();
Выполняй это и приводи сюда ошибку, что может выскочить на, как ты утверждаешь, третий раз.

Еще такой момент: Ты это где прописываешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.04.2013, 13:17   #3
marusua
Пользователь
 
Регистрация: 22.10.2011
Сообщений: 32
По умолчанию

вот изображение ошибки!!!
и уже на первый раз висяк!!!

в последующем вот эта ошибка:

прописываю на Label, точнее вот такая процедура:

procedure TLitForm.sLabelFX1Click(Sender: TObject);

затем еще одна:
Изображения
Тип файла: jpg Снимок.JPG (14.2 Кб, 150 просмотров)
Тип файла: jpg Снимок.JPG (16.7 Кб, 147 просмотров)
Тип файла: jpg Снимок.JPG (25.8 Кб, 156 просмотров)

Последний раз редактировалось Stilet; 27.04.2013 в 14:09.
marusua вне форума Ответить с цитированием
Старый 27.04.2013, 13:27   #4
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Может все дело в SW_RESTORE и SW_SHOW??
Попробуй
Код:
ShellExecute(application.handle, 'open', 'd:\Технологическая практика\Проект\Дополнительно\001_1- Всемирная история Учебник для вузов_Поляк Маркова_2000.pdf', nil, nil, SW_SHOWNORMAL);
И путь, я надеюсь, правильно указан?
ShellExecute на самом то деле должен передавать что хочет сделать системе, а затем можно хоть саму программу закрыть, действие выполнится.
alextrof94$gmail.com

Последний раз редактировалось alextrof94; 27.04.2013 в 13:30.
alextrof94 вне форума Ответить с цитированием
Старый 27.04.2013, 13:29   #5
marusua
Пользователь
 
Регистрация: 22.10.2011
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
if ShellExecute(form1.handle,'open','d:\Технологическая практика\Проект\Дополнительно\001_1- Всемирная история Учебник для вузов_Поляк Маркова_2000.pdf','d:\Технологическая практика\Проект\Дополнительно\','',SW_SHOW)<=32
then RaiseLastOSError();
Выполняй это и приводи сюда ошибку, что может выскочить на, как ты утверждаешь, третий раз.

Еще такой момент: Ты это где прописываешь?
прописываю на Label, точнее вот такая процедура:

procedure TLitForm.sLabelFX1Click(Sender: TObject);

ошибки следующие (уже на первый раз):
Изображения
Тип файла: jpg Снимок (1).JPG (14.2 Кб, 154 просмотров)
Тип файла: jpg Снимок (2).JPG (16.7 Кб, 151 просмотров)
Тип файла: jpg Снимок.JPG (25.8 Кб, 151 просмотров)
marusua вне форума Ответить с цитированием
Старый 27.04.2013, 13:33   #6
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Вторая ошибка - закончилось время ожидания завершения процесса. 3я ошибка - ошибка дельфей - сохрани и перезапусти дельфи.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 27.04.2013, 13:37   #7
marusua
Пользователь
 
Регистрация: 22.10.2011
Сообщений: 32
По умолчанию

Цитата:
Сообщение от alextrof94 Посмотреть сообщение
Может все дело в SW_RESTORE и SW_SHOW??
Попробуй
Код:
ShellExecute(application.handle, 'open', 'd:\Технологическая практика\Проект\Дополнительно\001_1- Всемирная история Учебник для вузов_Поляк Маркова_2000.pdf', nil, nil, SW_SHOWNORMAL);
И путь, я надеюсь, правильно указан?
ShellExecute на самом то деле должен передавать что хочет сделать системе, а затем можно хоть саму программу закрыть, действие выполнится.
не знаю что тут вообще происходит... то нормально открывал, а то опять виснет!!!

когда еще не вис была ошибка формата:
Изображения
Тип файла: jpg Снимок.JPG (14.9 Кб, 150 просмотров)

Последний раз редактировалось marusua; 27.04.2013 в 13:44.
marusua вне форума Ответить с цитированием
Старый 27.04.2013, 13:43   #8
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от marusua Посмотреть сообщение
теперь нет висяка!! открывает нормально)) но почему-то не нравится Foxit Reader формат rtf ... точнее другие два файла (разные rtf файлы) открывает .. а этот не хочет
хммм. это я уже хз. Я обычно rtf через wordpad открываю, так и быстрее и правильнее, но это должно быть по умолчанию в системе настроено, так что от программиста тут мало что зависит. Может файл битый.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 27.04.2013, 13:46   #9
marusua
Пользователь
 
Регистрация: 22.10.2011
Сообщений: 32
По умолчанию

Цитата:
Сообщение от alextrof94 Посмотреть сообщение
Вторая ошибка - закончилось время ожидания завершения процесса. 3я ошибка - ошибка дельфей - сохрани и перезапусти дельфи.
попробуй тут сохранить, когда виснет и делфи, и программа .. приходится лезть в Диспетчер и отключать делфи.. больше никак

Цитата:
Сообщение от alextrof94 Посмотреть сообщение
хммм. это я уже хз. Я обычно rtf через wordpad открываю, так и быстрее и правильнее, но это должно быть по умолчанию в системе настроено, так что от программиста тут мало что зависит. Может файл битый.
как выше изложено , уже опять та же история, что и ранее!!

файл нормальный!!!

Последний раз редактировалось Stilet; 27.04.2013 в 14:11.
marusua вне форума Ответить с цитированием
Старый 27.04.2013, 13:59   #10
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от marusua Посмотреть сообщение
как выше изложено , уже опять та же история, что и ранее!!

файл нормальный!!!
открой его ручками в вордпаде и пересохрани.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция ShellExecute не работает :( zzzetka Помощь студентам 7 25.05.2011 08:26
ShellExecute frodo-94 Win Api 3 26.08.2010 13:36
Функция ShellExecute, работа с CMD Droid Общие вопросы Delphi 6 18.07.2009 00:21
ShellExecute Zeraim Общие вопросы Delphi 1 07.05.2008 17:02
ShellExecute SNUPY Общие вопросы Delphi 4 19.02.2008 22:59