Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

проблема с запуском ShellExecute с протоколом mailto   Найти похожие ветки 

 
GreyWolf ©   (2009-11-18 21:26) [0]

Добрый день.
Пытаюсь инициировать отправку почты через
ShellExecute(0, "open", "mailto:test@test.com", nil, nil, SW_SHOW)
, но функция возвращает ошибку ERROR_FILE_NOT_FOUND (2).
Почтовый клиент The Bat установлен, протокол зарегистрирован в реестре:

REGEDIT4

[HKEY_CLASSES_ROOT\mailto]
@="URL:╧ЁюЄюъюы MailTo"
"EditFlags"=dword:00000002
"URL Protocol"=""

[HKEY_CLASSES_ROOT\mailto\DefaultIcon]
@="C:\\PROGRA~1\\THEBAT~1\\thebat.exe,0"

[HKEY_CLASSES_ROOT\mailto\shell]

[HKEY_CLASSES_ROOT\mailto\shell\open]

[HKEY_CLASSES_ROOT\mailto\shell\open\command]
@="\"C:\\PROGRA~1\\THEBAT~1\\thebat.exe\" %1"

[HKEY_CLASSES_ROOT\mailto\shell\open\DDEexec]
@="%1"

[HKEY_CLASSES_ROOT\mailto\shell\open\DDEexec\Application]
@="thebat"

[HKEY_CLASSES_ROOT\mailto\shell\open\DDEexec\Topic]
@="tbDDE"


Если я набираю mailto:test@test.com в командной строке far, (shift+Enter) то The Bat! запускается, окно с новым письмом на этот адрес появляется, ХОТЯ при этом выскакивает MessageBox c ICON_ERROR о том, что "Не удается найти файл "mailto:test@test.com" (или один из его компонентов)..."

Что я делаю не так?


 
GreyWolf ©   (2009-11-18 21:49) [1]

На другой машине (XP), где почтовый клиент по умолчанию - Outlook Express, код также не срабатывает.


 
clickmaker ©   (2009-11-19 11:55) [2]

ShellExecute(0, nil, "mailto:test@test.com", nil, nil, SW_SHOW)


 
GreyWolf ©   (2009-11-19 16:29) [3]

Попробовал
ShellExecute(0, nil, "mailto:test@test.com", nil, nil, SW_SHOW)
на машине с XP
Независимо от второго параметра (nil или "open"), возвращает 5 (ERROR_ACCESS_DENIED) и ничего не запускается.
Опять же при наборе mailto URL в командной строке far и Shift+Enter запускается Outlook Express c пустым письмом с данным адресом.


 
Smile   (2009-11-19 16:43) [4]

А что, если так попробовать:
ShellExecute(Form1.Handle, "open", PChar("mailto:test@test.com"), nil, nil, SW_SHOWNORMAL);
?


 
GreyWolf ©   (2009-11-19 19:07) [5]

> Smile   (19.11.09 16:43) [4]
Попробовал. То же самое (ErrorCode = 2 - ERROR_FILE_NOT_FOUND)
Я понимаю, что проблема выглядит странно, вроде бы на ровном месте, сам не ожидал, но тем не менее...


 
brother ©   (2009-11-20 04:43) [6]

загуглил:
http://www.rsdn.ru/forum/winapi/353485.1.aspx
ShellExecute(NULL,"open","mailto:email1;email2?subject=Subject%20text&body=
STRING1
STRING2
STRING3
STRING4
&cc=email
",NULL,NULL,SW_SHOWNORMAL);

имхо не хватает...


 
brother ©   (2009-11-20 04:48) [7]

хотя вот тут другое:
http://www.iks.ru/~spector/delphi.htm
ShellExecute(Application.Handle,"open","mailto:towho@mysite.com",nil,nil,0 );
данный код отлично запустил мою почтовую программу (The Bat) делфи - 6...
пробуй...


 
clickmaker ©   (2009-11-20 11:04) [8]

а он точно там живет - C:\\PROGRA~1\\THEBAT~1\\thebat.exe?


 
brother ©   (2009-11-20 11:13) [9]

кстати!:

> [HKEY_CLASSES_ROOT\mailto]

у меня нет, но все работает! убей это вообще!
нашел у себя поиском по реестру вот:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\The Bat!]
@="The Bat!"
"DLLPath"="C:\\Program Files\\The Bat!\\TBMapi.DLL"

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\The Bat!\Protocols]

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\The Bat!\Protocols\mailto]
@="URL:MailTo Protocol"
"EditFlags"=dword:00000002
"URL Protocol"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\The Bat!\Protocols\mailto\DefaultIcon]
@="C:\\Program Files\\The Bat!\\thebat.exe,0"

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\The Bat!\Protocols\mailto\shell]

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\The Bat!\Protocols\mailto\shell\open]

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\The Bat!\Protocols\mailto\shell\open\command]
@="\"C:\\Program Files\\The Bat!\\thebat.exe\" %1"

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\The Bat!\Shell]

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\The Bat!\Shell\open]

[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\The Bat!\Shell\open\command]
@="\"C:\\Program Files\\The Bat!\\thebat.exe\""

что у тебя?


 
GreyWolf ©   (2009-11-20 11:27) [10]

Проверил на пустом проекте. На пустом проекте тот же самый код с ShellExecute (все варианты не проверял, два последних из предложенных), работает. В рабочем проекте - выдает ошибку.


 
brother ©   (2009-11-20 11:29) [11]

> В рабочем проекте - выдает ошибку.

ну, значт в рабочем проекте - ошибка ;)


 
Anatoly Podgoretsky ©   (2009-11-20 12:56) [12]

Так в рабочем проекта ошибку выдает наверно другой код.


 
GreyWolf ©   (2009-11-20 14:19) [13]

>Так в рабочем проекта ошибку выдает наверно другой код.
Именно ТОТ ЖЕ.
Я догадываюсь, что в рабочем проекте ошибка. Там есть несколько компонент, может быть они меняют какие-то настройки Windows для моего приложения, которые потом сказываются на работе ShellExecute. Предположение такое.
Используются также модули из madExcept.


 
Eraser ©   (2009-11-21 15:25) [14]

> [13] GreyWolf ©   (20.11.09 14:19)

да конечно тот же!
адрес там тоже test@test.com???


 
GreyWolf ©   (2009-11-21 16:56) [15]

да конечно тот же!
адрес там тоже test@test.com???

ДА. ТОТ ЖЕ.
Например, прямо эти две строчки:

 ErrorCode := ShellExecute(Self.Handle, "open", PChar("mailto:test@test.com"), nil, nil, SW_SHOWNORMAL);
 ErrorCode := ShellExecute(0, nil, "mailto:test@test.com", nil, nil, SW_SHOW);

Отладчик показывает, что ShellExecute вызывается откуда надо в обоих случаях - на строчку из ShellApi.pas
function ShellExecute; external shell32 name "ShellExecuteA";


 
GreyWolf ©   (2009-11-23 19:51) [16]

Всем спасибо, проблему удалось обойти путем извлечения exe-имени почтового клиента из HKEY_CLASSES_ROOT\mailto\shell\open\command и запуска уже этой строки по ShellExecute с нужным адресом как четвертый параметр.


 
brother ©   (2009-11-24 11:11) [17]

я по поводу реестра тебе сказал в [9], так что, потенциальные грабли...



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.206 c
4-1260273994
Суслик_
2009-12-08 15:06
2013.03.22
Ошибка 1265 и именованные каналы - проблема


4-1258568816
GreyWolf
2009-11-18 21:26
2013.03.22
проблема с запуском ShellExecute с протоколом mailto


15-1328614653
istok20
2012-02-07 15:37
2013.03.22
миграция в mac os..


2-1328028334
alexdn
2012-01-31 20:45
2013.03.22
Canvas на Image


15-1339518297
Artem
2012-06-12 20:24
2013.03.22
Что лучше Android или Windows Mobile?