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

Вниз

WaitForSingleObject   Найти похожие ветки 

 
zldo   (2008-04-16 03:03) [0]

Задача - открыть файл в ассоциированной в системе программе и дождатся завершения этой программы. Решаю таким образом:


function TImgEditor.OpenPictureThread(Sender: PThread): Integer;
var
 SI: TShellExecuteInfo;
begin
 FillChar(SI, SizeOf(SI), 0);
 with SI do
 begin
   cbSize := SizeOf(SI);
   fMask := SEE_MASK_NOCLOSEPROCESS;
   Wnd := Form.Handle;
   lpFile := Sender.Data;
   nShow := SW_SHOW;
 end;
 if ShellExecuteEx(@SI) then WaitForSingleObject(SI.hProcess, INFINITE);
 DeleteFile(Sender.Data);
 FreeMem(Sender.Data);
end;


в принципе все работает верно, толко в приложении происходит затык после выполениния WaitForSingleObject по идеи "замирать" должен только поток в котором был вызов этой функции или я что-то путаю?

поток создает следующий код:

procedure TImgEditor.OpenPicture;
var
 FileName: string;
 s: pointer;
begin
 with NewThread^ do
 begin
   AutoFree := true;
   OnExecute := OpenPictureThread;
   case Id3Tag.Pictures[ImageIndex].PictureFormat of
     pfJpeg: FileName := TempNameValid(".jpg");
     pfPNG:  FileName := TempNameValid(".png");
     else    FileName := TempNameValid(".jpg");
   end;
   if FileName <> "" then
   begin
     SaveImage(FileName);
     GetMem(s, length(FileName) + 10);
     StrCopy(s, PChar(FileName));
     Data := s;
     Resume;
     MsgOK("dfsada"); // проверка есть ли жизнь после смерти
   end;
 end;
end;


 
zldo   (2008-04-17 20:47) [1]

Если кому интересно, то прикол был в строке Wnd := Form.Handle;
Этого делать не стоило :)



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

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

Наверх




Память: 0.47 MB
Время: 0.014 c
15-1254238851
Суслик_
2009-09-29 19:40
2009.11.29
Идея борьбы со спамом


2-1255347243
Alex4555
2009-10-12 15:34
2009.11.29
Как работает assignfile


15-1253862387
Ирг
2009-09-25 11:06
2009.11.29
запрос SQL


2-1253455939
antonn
2009-09-20 18:12
2009.11.29
процедура возвращающая параметр заполняемые в потоке


4-1223552958
тимохов
2008-10-09 15:49
2009.11.29
Как снять метрики (размеры) элементов Radio button а,