:: Архив конференции по VFP до 2005 года
(ON ERROR) Ошибка № 1705
Grumax

Сообщений: 104
Откуда: г. Кинешма
Дата регистрации: 30.01.2005
Слепил тут на днях прогу для себя табличка, форма. Вариант многопользовательского режима не рассматривал и собственно ничего такого и не делал. Все сделал, всё работает...прикрепил свой обработчик ошибок и тут стало интересно рассмотреть другой вариант ошибки под номером № 1705 "File access denied", т.е. когда 2 раз пытаюсь запустить *.ехе вылетает ошибка и я ее обрабатываю как:
IF lnEr_number=1705
MESSAGEBOX("Приложение уже открыто. Воспользуйтесь клавишами Alt+TAB, чтобы сделать его активным."+CHR(13)+SPACE(20)+;
"Либо шелкните левой кнопкой мыши(для правшей) в панели задач",0+64,cgMessageTitle)
QUIT
ENDIF
[sm128] А мне, если честно в настоящий момент хочется посмотреть в сторону API (может ошибаюсь).
Ну так вот...при возникновении этой ошибки хочется сделать активным уже запущенный *.ехе (приложение, далее "оно")
Если оно свернуто -> развернуть, если оно за каким-то окном -> вывести его поверх. Вот чего хочу я ;) Помогите советом...(лучше примером)




------------------
Я во все дела суюсь - всесторонне разовьюсь                                                                 Visual FoxPro 8.0
Ratings: 0 negative/0 positive
Re: (ON ERROR) Ошибка № 1705
ra3dct

Сообщений: 468
Откуда: nr. Moscow
Дата регистрации: 06.10.2003
Все, что ниже нужно использовать в главном prg, в том
который запускается самым первым

*-- Объявление DLL
DECLARE INTEGER FindWindow IN Win32API Integer nClassName,
String cWindowName
DECLARE INTEGER ShowWindow IN Win32API AS ShowVfpWindow
Integer hWnd, Integer nCmdShow
DECLARE INTEGER SetForegroundWindow IN Win32API Integer hWnd
DECLARE INTEGER SetFocus IN Win32API AS SetVfpFocus Integer hWnd
*-- Программа уже загружена?
LOCAL hWnd
hWnd = FindWindow(0, MYPROGRAM_LOC)
IF hWnd > 0
*-- поднять запущенную копию программы
=ShowVfpWindow(hWnd, SW_RESTORE)
=SetForegroundWindow(hWnd)
=SetVfpFocus(hWnd)
*-- Выгрузить переменные и DLL, очистить память
CLEAR ALL
CLOSE ALL
RELEASE ALL EXTENDED
CLEAR DLLS
RETURN && выход, т.к. программа уже загружена
ENDIF
*-- дальнейший код программы




------------------
Не в сети. VFP6 + SP5
Ratings: 0 negative/0 positive
Re: (ON ERROR) Ошибка № 1705
ra3dct

Сообщений: 468
Откуда: nr. Moscow
Дата регистрации: 06.10.2003
P.S.
#DEFINE MYPROGRAM_LOC "Caption главного окна программы"
#DEFINE SW_RESTORE 9




------------------
Не в сети. VFP6 + SP5
Ratings: 0 negative/0 positive
Re: (ON ERROR) Ошибка № 1705
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Grumax!

ПОИСК по "повторный запуск"




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: (ON ERROR) Ошибка № 1705
Grumax

Сообщений: 104
Откуда: г. Кинешма
Дата регистрации: 30.01.2005
Можно справочку по SetForegroundWindow(у меня справка по Win32API видимо старая), по типу ShowWindow
*!* function ShowWindow(Wnd: HWnd; CmdShow: Integer);
*!* Отобpажает или пpячет окно обpазом, указанным паpаметpом CmdShow.
*!* Паpаметpы:
*!* Wnd: Идентификатоp окна.
*!* CmdShow: Одна из констант sw_.
*!* Возвpащаемое значение:
*!* Не нуль, если окно было pанее видимым; нуль - если оно было pанее спpятанным.
DECLARE INTEGER ShowWindow IN Win32API AS ShowVfpWindow Integer hWnd, Integer nCmdShow
А по ShowWindow если можно параметры CmdShow, а то не понятно зачем #DEFINE SW_RESTORE 9
Спасибо.




------------------
Я во все дела суюсь - всесторонне разовьюсь                                                                 Visual FoxPro 8.0
Ratings: 0 negative/0 positive
Re: (ON ERROR) Ошибка № 1705
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Grumax!

Русского хелпа я не видел, да и не нуждался в принципе никогда.
Английский есть в MSDN - если у тебя нету MSDN локально, смотри на сайте msdn.microsoft.com - вводишь называние функции, поиск и читай.
Значения констант SW_ есть в winuser.h - если ставил когда-нить C++ (не уверен насчёт Delphi) то должен знать про этот файлик На всякий случай вот SW_ константы из него:
#define SW_HIDE 0
#define SW_SHOWNORMAL 1
#define SW_NORMAL 1
#define SW_SHOWMINIMIZED 2
#define SW_SHOWMAXIMIZED 3
#define SW_MAXIMIZE 3
#define SW_SHOWNOACTIVATE 4
#define SW_SHOW 5
#define SW_MINIMIZE 6
#define SW_SHOWMINNOACTIVE 7
#define SW_SHOWNA 8
#define SW_RESTORE 9
#define SW_SHOWDEFAULT 10
#define SW_FORCEMINIMIZE 11
#define SW_MAX 11
Их описание (но БЕЗ числовых значений) есть всё в том-же MSDN - в статье по ShowWindow. В общем читай первоисточники (от MS), а не всякие урезанные версии
P.S. Если есть трудности адаптации под фокс (хотя для данных команд я не могу даже вообразить какие могут быть трудности - тут ни структур, ни указателей) - попробуй на www.news2news.com посмотреть (там часть примеров за деньгу, но синтаксис вызова и константы вроде как задарма были).




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: (ON ERROR) Ошибка № 1705
ra3dct

Сообщений: 468
Откуда: nr. Moscow
Дата регистрации: 06.10.2003
Посмотрите кое, что здесь:

Справочник по WinAPI: www.bcbdev.ru
Справочник по WinAPI (zip-версия): www.bcbdev.ru
Ratings: 0 negative/0 positive
Re: (ON ERROR) Ошибка № 1705
Петров Андрей
Автор

Сообщений: 2506
Откуда: Химки (М.О.)
Дата регистрации: 17.04.2002
Igor Korolyov
Значения констант SW_ есть в winuser.h - если ставил когда-нить C++ (не уверен насчёт Delphi) то должен знать про этот файлик

В Delphi windows.pas




------------------
PS Недочитал тему до конца...
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 1 (Гостей: 1)

© 2000-2024 Fox Club 
Яндекс.Метрика