powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
15 сообщений из 15, страница 1 из 1
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38778175
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть откомпилированное в VFP exe приложение (пустая невидимая форма ), можно ли при запуске этого приложения, чтоб его вообще не было видно, кроме как процесса в диспетчере задач?
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38778191
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй
Код: sql
1.
_screen.visible = .F.


или в config.fpw добавить
Код: sql
1.
screen=off
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38778817
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, точно не видно...:-), а не подскажите может можно как-нибудь перехватить, событие, что пользователь выбрал в меню Пуск завершение работы
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38778823
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. какой-то таймер в эту форму и перехватить это событие "Завершение работы"
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38778829
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
on shutdown do my_shutdown


При нажатии крестика будет вызвана my_shutdown.prg
Добейся чтобы твоя прога по нажатию крестика закрывалась без лишних вопросов.
Видовс при завершении посылает программе "нажатие крестика", немного ждет, если не дождался убивает процесс (равносильно снять задачу из диспетчера)

в простейшем случае my_shutdown.prg будет такой так
Код: sql
1.
2.
on shutdown
quit
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38778830
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1т.е. какой-то таймер в эту форму и перехватить это событие "Завершение работы"Не надо изобретать велосипед, тем более не с круглыми колесами. Откройте для себя On shutdown. При этом и простое закрытие программы "крестиком" отловится.
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38780426
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, поигрался с on shutdown, но проблему не решил...
программа простая тестовая
ON SHUTDOWN do shtd
_screen.visible = .F.
DO FORM form1
READ EVENTS
RETURN

PROCEDURE shtd
CLEAR WINDOW
messagebox("11111111111")
quit
Форма пустая, там ничего нет(visible = .T. или .F.), в общем если visible = .T., то форма видна, и на мониторе, и диспетчере задач при любом выходе из VFP, Win(Пуск->Завершение работы), выполняется код из процедуры, но если visible = .F., формы нигде не видно, виден только процесс VFP в диспетчере задач и нажимая Пуск->Завершение работы, код из процедуры не выполняется и выполняется сессия завершение работы .... Есть еще варианты?
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38780445
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1Спасибо, поигрался с on shutdown, но проблему не решил...
программа простая тестовая
ON SHUTDOWN do shtd
_screen.visible = .F.
DO FORM form1
READ EVENTS
RETURN

PROCEDURE shtd
CLEAR WINDOW
messagebox("11111111111")
quit
Форма пустая, там ничего нет(visible = .T. или .F.), в общем если visible = .T., то форма видна, и на мониторе, и диспетчере задач при любом выходе из VFP, Win(Пуск->Завершение работы), выполняется код из процедуры, но если visible = .F., формы нигде не видно, виден только процесс VFP в диспетчере задач и нажимая Пуск->Завершение работы, код из процедуры не выполняется и выполняется сессия завершение работы .... Есть еще варианты?Есть. Подумать и сделать нормально. В частности, завершить таки цикл обработки событий. А не надеяться на один только quit.
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38780565
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты видел что я написал?
Первой строчкой надо отменить вызов обработчика, т.е.
Код: sql
1.
on shutdown


затем убери
_screen.visible = .F.
и пробуй закрывать свою прогу крестиком, смотри что происходит. Закрывается?
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38782474
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо... время от времени пытаюсь что-то сделать... всё таки наверное главный вопрос, как отменить системный процесс завершения работы... т.к. все равно выходит системное окошко ожидания отклика от программы, может какая есть системная функция WSH, чтоб убить этот процесс, хотя надо знать какой это процесс..:-(
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38782545
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
on shutdown добавил в shtd ?
и вместо quit лучше clear events чтобы твоя прога завершилась как положено.
форма не модальная? Учти что destroy() формы будет отрабатывать самый последний.
и мессаджбокс замени на запись в лог

Попробуй так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ON SHUTDOWN do shtd
_screen.visible = .F.
StrToFile(time() + ' start' + chr(13), 'log.log', .T.)
DO FORM form1
READ EVENTS
StrToFile(time() + ' end' + chr(13), 'log.log', .T.)
RETURN

PROCEDURE shtd
ON SHUTDOWN && это обязательно
_screen.visible = .T. && на всякий случай, вдруг там что-то интересное происходит
StrToFile(time() + ' shutdown' + chr(13), 'log.log', .T.)
clear events
RETURN


Вобщем пиши логи и смотри что реально происходит и в каком порядке.
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38782685
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, да все работает, только надо куда-то как-то впихать команды WM_QUERYENDSESSION и WM_ENDSESSION, чтоб убить процесс выключения, а то выскакивает виндовское окно, что система ожидает завершения програмыы, нажмите Ok или отменить...
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38782719
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потестил на XP. Делал "выход из системы". Окошко ожидания не вышло, но странно себя ведет: Прога останавливается, сессия не закрывается. Второй выход завершает сессию.
Заменил clear events на quit - стало закрываться с первого раза. Но такое решение не самое лучшее.

WM_QUERYENDSESSION принять можно с помощью bindevent() но там еще ответить надо на него. Сейчас попробую пример сделать.
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38783088
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитал про WM_QUERYENDSESSION, на даст оно остановить выключение.
Я так понимаю это доп.оповещение проги что ее скоро насильно убьют.
http://yvs-it.blogspot.ru/2010/05/windows-shutdown.html В Windows XP диалог для блокирующего приложения позволяет пользователям отменить выключение или принудительно завершить "зависшее" приложение. И такой диалого отображается для каждого "зависшего" приложения. Это не очень удобно для многих пользователей, которые "просто хотят, чтобы из компьютер выключился".

При выключении компьютера, Windows VistaVista/7 решает эту проблему, разрешая пользователям завершить все приложения, блокирующие выключение ("силовой" shutdown). В таком варианте, Windows будет отправлять приложениям сообщение WM_QUERYENDSESSION с флагом ENDSESSION_FORCEFULSHUTDOWN. Если приложение ответит FALSE, система продолжит завершение работы, вместо того, чтобы отметить его и отправит сообщение WM_ENDSESSION. Если же приложение не ответить на сообщение WM_QUERYENDSESSION/WM_ENDSESSION за отведенный ему таймаут, Windows принудительно завершить его.
т.е. толку от них немного.

Принять их можно, но без CLEAR EVENTS
Вот пример
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
ON SHUTDOWN do shtd
_screen.visible = .F.
StrToFile(time() + ' start' + chr(13), 'log.log', .T.)
_screen.AddObject('oShtd', 'WaitSHTD')
DO FORM form1
READ EVENTS
inkey(1)
StrToFile(time() + ' end' + chr(13), 'log.log', .T.)
RETURN

PROCEDURE shtd
ON SHUTDOWN
StrToFile(time() + ' shutdown' + chr(13), 'log.log', .T.)
_screen.visible = .T.
*clear events
quit
RETURN


define Class WaitSHTD as Custom 
	Name = "WaitSHTD"

	PROCEDURE Init
	BINDEVENT(_VFP.hWnd, 0x0011, This, "WM_QUERYENDSESSION", 4)
	BINDEVENT(_VFP.hWnd, 0x0016, This, "WM_ENDSESSION", 4)
	StrToFile(time() + ' Init' + chr(13), 'log.log', .T.)
	return 
	
	PROCEDURE Destroy
	UNBINDEVENT(_VFP.hWnd, 0x0011, This, "WM_QUERYENDSESSION")
	UNBINDEVENT(_VFP.hWnd, 0x0016, This, "WM_ENDSESSION")
	StrToFile(time() + ' Destroy' + chr(13), 'log.log', .T.)
	
	PROCEDURE WM_QUERYENDSESSION
	lpara p1, p2, p3, p4
	StrToFile(time() + ' WM_QUERYENDSESSION' + str(p1) + str(p2) + str(p3) + str(p4) + chr(13), 'log.log', .T.)
	return 1

	PROCEDURE WM_ENDSESSION
	lpara p1, p2, p3, p4
	StrToFile(time() + ' WM_ENDSESSION' + str(p1) + str(p2) + str(p3) + str(p4) + chr(13), 'log.log', .T.)
	return 1
ENDDEFINE



Думаю у тебя есть какой-то косяк в проге и он завешивает её при завершении. Попробуй мой пример из аттача откомпилировать и позакрывать с ним
...
Рейтинг: 0 / 0
Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
    #38783805
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо..
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сделать чтоб иконка запущеного приложения VFP не показывалась на панели задач
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]