Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по ShellExecute   Найти похожие ветки 

 
wen   (2003-02-03 17:01) [0]

Всем добрый день! Подскажите, пожалуйста, что у меня не правильно,в приведенном коде ShellExecute не открывает вордовские файлы и выдает ошибку 8 ????
procedure TForm1.Button1Click(Sender: TObject);
var
h: hwnd;
e:string;
f: pChar;
begin
if OpenDialog1.Execute then
begin
f:= pchar(OpenDialog1.FileName);

if ShellExecute(h, "open", f, nil, nil, SW_SHOWNORMAL) < 32 then
begin
e:=inttostr(shellExecute(h, "open", f, nil, nil, SW_SHOWNORMAL)) ;
ShowMessage(e)
end;
end;
end;


 
БИС   (2003-02-03 17:15) [1]

я не знаю причины, но могу сказать, что
какое-то подозрительное действие
f:= pchar(OpenDialog1.FileName);
лучше скопируй в строку обычную и при вызове
делай преобразование phar


 
wen   (2003-02-03 17:34) [2]

Попробывал, но дело в том, что не работает даже такая команда:
shellExecute(h, "open", "d:\1.doc", nil, nil, SW_SHOWNORMAL)


 
Clickmaker   (2003-02-03 17:48) [3]

Ошибка 8 расшифровывается как "Not enough storage is available to process this command", а если проще, то памяти ей не хватает...


 
Sasha9   (2003-02-03 17:50) [4]

8 - out of memory
иногда ребут помогает
может у тебя тип .doc не зарегестрирован


 
Sasha9   (2003-02-03 17:51) [5]

2Clickmaker
не storage, а memory (см. хелп по ShellExecute в WinAPI)


 
Clickmaker   (2003-02-03 17:56) [6]

> Sasha9
Это цитата из файла winerror.h что в Visual Studio. Так что твое замечание я переадресую Билу :)


 
Sasha9   (2003-02-03 18:13) [7]

а вот цитата из Win32 Programmer"s Reference:
SE_ERR_OOM There was not enough memory to complete the operation.
в модуле shellapi(откуда сама ShellExecute) константа SE_ERR_OOM=8


 
Wen   (2003-02-03 18:16) [8]

Бил, может и не прав, но .doc у меня зарегистрирован, reboot не помог, может у кого-то есть другой пример открытия файла из Opendialog????


 
Wen   (2003-02-03 18:24) [9]

Самое смешное что файлы MSAccess открываются :)


 
Clickmaker   (2003-02-03 19:15) [10]

FindExecutable + CreateProcess


 
mukha   (2003-02-03 21:42) [11]

Странно, всё это...

uses ShellAPI;
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Title:="Открытие документа";
OpenDialog1.Filter:="Текстовые файлы|*.txt;*.doc";
OpenDialog1.InitialDir:=ExtractFilePath(Application.ExeName); // Указать нужную директорию
if OpenDialog1.Execute then
if ShellExecute(Application.MainForm.Handle,nil,PChar(OpenDialog1.FileName),nil,nil,SW_ShowNormal)<32 then
ShowMessage("Ошибка при открытиии файла "+OpenDialog1.FileName);
end;


 
wen   (2003-02-03 23:03) [12]

Как ни странно :) но последней пример работает, спасибо всем кто отвечал на мой вопрос, отдельное спасибо mukha, я уже не знал че делать



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

Форум: "WinAPI";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
6-6641
Jel
2003-02-10 11:24
2003.04.03
Нужно создать виртуальную сетевую карту.


3-6296
Sergei
2003-03-16 15:42
2003.04.03
ADOQery.ExeSQL ----- > EXception ????


1-6472
BGV
2003-03-24 13:40
2003.04.03
Как сделать задержку по таймеру?


3-6381
galexis
2003-03-14 15:44
2003.04.03
Создание БД кодом


1-6537
Vint45
2003-03-20 19:10
2003.04.03
Расход памяти





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский