Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ShellExecute не открывает ссылку 
:(
    Опции темы
CodeMonkey
Дата 28.9.2010, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(Snowy @  27.9.2010,  18:09 Найти цитируемый пост)
Там как раз возникают проблемы, при попытке открыть урл, где есть национальные символы.


Где тут национальные символы?

http://ru.wikipedia.org/wiki/%D0%97%D0%B0%...%B8%D1%86%D0%B0


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Xenag
Дата 28.9.2010, 00:25 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 51
Регистрация: 6.3.2010

Репутация: нет
Всего: нет



Какбы вот: Заглавная_страница

Добавлено через 3 минуты и 20 секунд
Не все браузеры урлэнкодят. Большинство современных браузеров глотают урлы в естественном виде.

Добавлено через 4 минуты и 7 секунд
ЗЫ. президент.рф
PM   Вверх
Keeper89
Дата 28.9.2010, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Цитата(CodeMonkey @  27.9.2010,  15:54 Найти цитируемый пост)
Не ври ;)

Я уже давно исправился smile


--------------------
PM MAIL WWW   Вверх
Akella
Дата 29.9.2010, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Код

ShellExecute(0, nil, pChar(Edit1.Text), nil, nil, SW_SHOWNORMAL);

В Edit1.text находится значение http://президент.рф/
Откомпилировал в D2010.
Запускал в Windows 7 и в Windows XP. На обоих ОС код срабатывает и браузер отображает сайт.
Что я делаю не так?
PM MAIL   Вверх
Snowy
Дата 29.9.2010, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Я же написал, что может работать не так, а не будет.
На одной машине всё так, на другой всё не так.
От чего зависит - я так и не разобрался.
В своих исследованиях расковырял всю ShellExecute.
Она мне не понравилась, решил заюзать ShellExecuteEx напрямую.
Проблема пропала.
Я просто делюсь граблями, на которые наступал...
PM MAIL   Вверх
klyaksa
Дата 29.9.2010, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 15.9.2005

Репутация: нет
Всего: нет



В sLink ничего криминального национального, там 'http://mytest.klyaksa.net' + номер версии ПО.

Сегодня проверил там где не работает: ShellExecute возвращает код ошибки 
  { The system cannot write to the specified device. }
  ERROR_WRITE_FAULT = 29;
  {$EXTERNALSYM ERROR_WRITE_FAULT}

PM MAIL   Вверх
Akella
Дата 29.9.2010, 14:41 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(klyaksa @  29.9.2010,  14:16 Найти цитируемый пост)
The system cannot write to the specified device

http://www.microsoft.com/communities/newsg...amp;m=1&p=1

Добавлено через 3 минуты и 13 секунд
Цитата(klyaksa @  29.9.2010,  14:16 Найти цитируемый пост)
 { The system cannot write to the specified device. }
  ERROR_WRITE_FAULT = 29;

нашёл ещё ссылки на такую ошибку, но там вообще идёт речь о принтере

Добавлено через 5 минут и 44 секунды
klyaksa, попробуй так

Код

SetLastError(0);
ShellExecute(0, nil, pChar(sLink), nil, nil, SW_SHOWNORMAL);
ShowMessage(SysErrorMessage(GetLastError));

PM MAIL   Вверх
CodeMonkey
Дата 29.9.2010, 18:26 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(Akella @  29.9.2010,  15:41 Найти цитируемый пост)
klyaksa, попробуй так


Слушай, Akella, настоятельно рекомендую сюда больше не писать. Ты постоянно какой-то бред несёшь. Никакой GetLastError/RaiseLastOSError для ShellExecute не работает.

Цитата(http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx)
If the function succeeds, it returns a value greater than 32. If the function fails, it returns an error value that indicates the cause of the failure:

Return code    Description
0 - The operating system is out of memory or resources.

ERROR_FILE_NOT_FOUND - The specified file was not found.
ERROR_PATH_NOT_FOUND - The specified path was not found.
ERROR_BAD_FORMAT - The .exe file is invalid (non-Win32 .exe or error in .exe image).
SE_ERR_ACCESSDENIED - The operating system denied access to the specified file.
SE_ERR_ASSOCINCOMPLETE - The file name association is incomplete or invalid.
SE_ERR_DDEBUSY - The DDE transaction could not be completed because other DDE transactions were being processed.
SE_ERR_DDEFAIL - The DDE transaction failed.
SE_ERR_DDETIMEOUT - The DDE transaction could not be completed because the request timed out.
SE_ERR_DLLNOTFOUND - The specified DLL was not found.
SE_ERR_FNF - The specified file was not found.
SE_ERR_NOASSOC - There is no application associated with the given file name extension. This error will also be returned if you attempt to print a file that is not printable.
SE_ERR_OOM - There was not enough memory to complete the operation.
SE_ERR_PNF - The specified path was not found.
SE_ERR_SHARE - A sharing violation occurred.


Хотите GetLastError - используйте ShellExecuteEx.

Цитата(klyaksa @  29.9.2010,  15:16 Найти цитируемый пост)
Сегодня проверил там где не работает: ShellExecute возвращает код ошибки 
  { The system cannot write to the specified device. }
  ERROR_WRITE_FAULT = 29;
  {$EXTERNALSYM ERROR_WRITE_FAULT}


И где же вы умудрились найти ERROR_WRITE_FAULT среди кодов ошибок из таблички выше?

Ещё раз: Пуск/Выполнить, ввести URL, нажать Enter - работать будет?

Ты меня слушай, я тут самые умные вещи говорю  smile 

Это сообщение отредактировал(а) CodeMonkey - 29.9.2010, 18:29


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
klyaksa
Дата 29.9.2010, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 15.9.2005

Репутация: нет
Всего: нет



Цитата(CodeMonkey @  29.9.2010,  18:26 Найти цитируемый пост)
И где же вы умудрились найти ERROR_WRITE_FAULT среди кодов ошибок из таблички выше?

Сейчас затрудняюсь с ответом. smile 
Но код ошибке был 29, значит по идее это 
  {$EXTERNALSYM SE_ERR_DDEFAIL}
  SE_ERR_DDEFAIL                  = 29;
Транзакция динамического обмена данными провалилась.
Только что это значит?

Ввести урл попробую завтра.

Это сообщение отредактировал(а) klyaksa - 29.9.2010, 20:34
PM MAIL   Вверх
Xenag
Дата 29.9.2010, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 51
Регистрация: 6.3.2010

Репутация: нет
Всего: нет



SE_ERR_DDEFAIL означает, что программа для передачи параметров использует DDE.
И ваш вариант не прокатил, ибо что-то было неправильно сделано и параметр не был передан.
Вот уж раздули на 3 страницы.
Проблемы-то нет. Просто передается кривой параметр, который 7-ка по мудрости преобразовывает в нормальный, а ХР не умеет.
Дело не в коде, а в неправильной строке.
PM   Вверх
CodeMonkey
Дата 29.9.2010, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(klyaksa @  29.9.2010,  21:33 Найти цитируемый пост)
Но код ошибке был 29, значит по идее это 
  {$EXTERNALSYM SE_ERR_DDEFAIL}
  SE_ERR_DDEFAIL                  = 29;


Ничего это не значит. GetLastError не равно возвращаемому ShellExecute значению.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
klyaksa
Дата 30.9.2010, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 15.9.2005

Репутация: нет
Всего: нет



Цитата(CodeMonkey @  29.9.2010,  22:35 Найти цитируемый пост)
Ничего это не значит. GetLastError не равно возвращаемому ShellExecute значению.

29 возвращает ShellExecute.

Дальше проблема не в дельфи. Ввел в строку запуска урл и получил окошко Ошибка при направлении команды приложению.

п.с. а в чем дело с компом? 
PM MAIL   Вверх
CodeMonkey
Дата 1.10.2010, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(klyaksa @  30.9.2010,  21:12 Найти цитируемый пост)
Дальше проблема не в дельфи. Ввел в строку запуска урл и получил окошко Ошибка при направлении команды приложению.


Обратите внимание, как вы могли бы получить этот результат пять дней назад:

Цитата(CodeMonkey @  25.9.2010,  23:46 Найти цитируемый пост)
Пуск/выполнить, ввести ссылку - будет работать? Возможно, проблема просто в нарушенных ассоциациях. 


 smile 

Цитата(klyaksa @  30.9.2010,  21:12 Найти цитируемый пост)
п.с. а в чем дело с компом?  


Ну если

Цитата(klyaksa @  30.9.2010,  21:12 Найти цитируемый пост)
29 возвращает ShellExecute.


то проблема - SE_ERR_DDEFAIL.

Означает это проблемы с файловыми ассоциациями. На той машине ссылка открывается с помощью DDE. И по какой-то причине это становится неудачным.

Можно попробовать ShellExecuteEx для получения более детализированного кода ошибки (через GetLastError) или же можно залезть в реестр и поискать проблему руками. А можно просто переустановить браузер, чтобы он починил свои ассоциации.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0713 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.