Главная страница
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
1-1226584393
CodeMaster
2008-11-13 16:53
2009.11.29
ListBox


15-1254345618
Германн
2009-10-01 01:20
2009.11.29
Интересные системные требования.


2-1255329098
yantux
2009-10-12 10:31
2009.11.29
Сработало исключение EOutOfMemory: как оптимизировать память?


4-1205738499
kuzulis
2008-03-17 10:21
2009.11.29
SetWaitableTimer не срабатывает


8-1201199790
Степан
2008-01-24 21:36
2009.11.29
Доступ к звуку при записи