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

Вниз

Как отследить завершение запущенной мной досовской проги?   Найти похожие ветки 

 
Александр_ИСТ   (2003-07-22 19:21) [0]

пишу так:


if (CreateProcess(nil,PChar(tmpdir+"conv.exe ""+newPath+"" /U"),
nil,nil,FALSE,CREATE_NEW_CONSOLE,nil,nil,cif,pi)=TRUE)
then
begin
WaitForSingleObject(pi.hProcess, INFINITE);
Win32Check(CloseHandle(pi.hProcess));
end;


В XP работает, в Win98 не работает. Отследил, увидел, что у меня WinXP закрывает окно досоской программы сразу же, как она завершена, а Win98 оставляет это окно висеть, только в капшионе у него написано "Сеанс завершен".

Как узнать из моей программы, когда сеанс завершен, а не когда система окно закрывает?

Желательно, код.

Спасибо!


 
Александр_ИСТ   (2003-07-22 19:23) [1]

Извините за 2 раза, да еще с разными именами. Я отправлял намного больше, но что-то глючило. Подумал, что может это из-за логина.

Но на вопрос ответьте, пожалуйста!


 
Ader_007   (2003-07-22 20:26) [2]

Мне так кажется, что нужно самому закрывать окно.
Или в свойствах ярлыка указывать "закрывать окно после завершения сеанса"


 
Александр_ИСТ   (2003-07-22 21:51) [3]

>Или в свойствах ярлыка указывать "закрывать окно после завершения сеанса"

Попытался создать ярлык, но нигде не нашел у него свойства "закрывать окно после завершения сеанса".

Подскажите, как до него добраться?

Или, как мне программно узнать, что сеанс завершен и окно надо закрыть?


 
Skif   (2003-07-23 06:13) [4]

При запуске досевой создается пифовский файл, т.е. "программа.pif". Вот там и ищи. Это самый простой способ.


 
Александр_ИСТ   (2003-07-23 09:33) [5]


> При запуске досевой создается пифовский файл, т.е. "программа.pif".
> Вот там и ищи. Это самый простой способ.

Ну автоматически он не создается, только когда свойства поменяешь этой досовской проги. А как создать его автоматически? Подскажите название функции, если она есть, хотя бы...


 
Ученик   (2003-07-23 21:46) [6]

>Александр_ИСТ (22.07.03 19:21)

function WindowProcessID(Window : HWnd) : THandle;
begin
GetWindowThreadProcessId(Window, @Result);
end;

function DosWindowState(Wnd : HWnd; lParam : DWORD) : Bool; stdcall;
var
szName : array[0..255] of Char;
sTitle : string;
begin
Result := True;
if (WindowProcessID(Wnd) = lParam) and (GetWindowText(Wnd, szName, 255) > 0) then begin
sTitle := StrPas(szName);
if (Pos("Inactive", sTitle) > 0) or (Pos("Finished", sTitle) > 0) or
(Pos("Сеанс завершен", sTitle) > 0) then begin
PostMessage(Wnd, WM_CLOSE, 0, 0);
Result := False;
end
end
end;

function DosProgramRunning(ProcessID : DWORD) : Boolean;
begin
Result := EnumWindows(@DosWindowState, ProcessID)
end;

WaitForSingleObject(pi.hProcess, INFINITE);
необходимо заменить на

while (WaitForSingleObject(pi.hProcess, 1000) = WAIT_TIMEOUT) and DosProgramRunning(pi.dwProcessID)) do Sleep(0);

или что-то похожее




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

Форум: "Основная";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
3-20380
AkaSaint
2003-07-14 18:15
2003.08.07
Как в ADOTable обновить из БД только одну запись?


14-20779
BROTHER-3
2003-07-21 20:46
2003.08.07
Где найти Delphi 7


1-20598
mmss
2003-07-24 14:25
2003.08.07
Как правильно прекратить поток?


14-20801
Jumbo
2003-07-21 22:36
2003.08.07
ReadFile


1-20536
The X
2003-07-26 17:41
2003.08.07
Как узнать количество символов (с пробелами) в TMemo или TDBMemo?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский