Главная страница
    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.008 c
1-20519
MalkoLinge
2003-07-23 14:08
2003.08.07
Как заставить контрол показать свой хинт ?


14-20786
Vana_sibe_viribus_ira_est
2003-07-22 06:54
2003.08.07
DOS2WIn


14-20717
VEG
2003-07-20 02:30
2003.08.07
Кто-нибудь знает, как установить TimeOut


14-20684
Nemra
2003-07-19 17:21
2003.08.07
OutLook


14-20667
Dmitriy O.
2003-07-22 15:34
2003.08.07
Как можно вставить изображение в сылку на HTML страницу.





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