Главная страница
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.01 c
2-1255601111
xyz
2009-10-15 14:05
2009.11.29
где ошибка в запросе?


15-1254576288
vrem
2009-10-03 17:24
2009.11.29
Windows: странные задержки


15-1253939360
vrem
2009-09-26 08:29
2009.11.29
Лишают гарантий по тихому!


15-1254375904
VladOfMonster
2009-10-01 09:45
2009.11.29
Где найти значки для панели инструментов


8-1201532748
гость
2008-01-28 18:05
2009.11.29
image refresh определенной области