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

Вниз

Вопрос по 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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.013 c
3-6415
BubbleGum
2003-03-16 10:13
2003.04.03
Returns the ANSI value for the leftmost character in a character


1-6601
pet
2003-03-22 20:15
2003.04.03
проблема с созданием


1-6431
SZap
2003-03-23 15:55
2003.04.03
Перехват нажатий клавиши дополнительной клавиатуры


3-6292
Silver_
2003-03-05 10:18
2003.04.03
Посоветуйте решение


14-6748
Ihor Osov'yak
2003-03-16 23:44
2003.04.03
К тем бывшим землякам, которых в Стейтсы занесло..