Вопрос
Пользователи работают с программой написанной в FoxPro (Dos версия). На машинах стоит Windows 98 (другую ОС ставить не желательно, двойная загрузка ОС также не желательна). Для работы они сначала запускают Norton Commander 5.0 и затем из меню свою программу.
Часто из-за длительного отсутствия активности окно их программы сбрасывается на панель задач. И они снова открывают Norton Commander и запускают программу второй раз. Часто это приводит к сбою в работе программы. Можно ли как-то программно предупредить второй запуск программы?
Ответ
Я понимаю, что переписать прогу на ФоксПРО не предоставляется возможным. Для решения вашей проблемы нужно написать программку на делфи из которой будет запускаться программа на Фоксе. При этом будет производится проверка, работает ли предыдущий экземпляр, или нет. Если работает мы должны его активировать, а если нет то запустить. Вот пример для блокнота, со своим приложением разберешься:
program Pro;
uses Windows, Forms;
var Handle1 : LongInt; Handle2 : LongInt;
{$R *.RES} begin Application.Initialize;
Handle1 := FindWindow('Notepad',nil);
// Указать заголовок окна Или его часть if handle1 = 0 then begin WinExec('Notepad.exe', SW_SHOWNORMAL)
// Запускаем программу end else begin Handle2 := GetWindow(Handle1,GW_OWNER);
file:
//Чтоб заметили :) ShowWindow(Handle2,SW_HIDE);
ShowWindow(Handle2,SW_RESTORE);
SetForegroundWindow(Handle1);
// Активизируем предыдущую копию ShowWindow(Handle1, SW_SHOWNORMAL) end;
end.
Из конференции Expert_FAQ
Copyright 2000-2004 Сообщество Чайников
Контактная информация