|
Вопрос # 6 213/ вопрос решён / |
|
Добрый день!
Как сделать, чтобы работающую прогу по Alt-Tab не беспокоить? То есть чтобы она не присутствовала в списке запущеных программ или хотя бы чтобы по Alt-Tab её нельзя было выбрать?
Спасибо.
 |
Вопрос задал: mpdasa (статус: Посетитель)
Вопрос отправлен: 27 июня 2012, 13:38
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 14; последнее сообщение — 29 июня 2012, 20:02; участников в обсуждении: 2.
|
min@y™ (статус: Доктор наук), 27 июня 2012, 13:51 [#1]:
Сворачивать в трей и убирать с панели задач.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
mpdasa (статус: Посетитель), 27 июня 2012, 14:18 [#2]:
Цитата: Сворачивать в трей и убирать с панели задач.
Дело в том, что мне надо, чтобы прога работала, не была свёрнута. Это плавающее окошко(2), где показывается слово, а потом перевод, и так по кругу. Задумано было, чтобы всё время было на виду, даже поверх всех окон.
Прогу из таскбара уже убрал, в систрей поместил.
Осталось неудобство, что при перключении окон надо каждый раз проходить через эту прогу, хотя мне это не надо.
Знаю, что решение должно быть. Но вот какое, ума не приложу.
|
|
min@y™ (статус: Доктор наук), 27 июня 2012, 15:40 [#3]:
Цитата (mpdasa):
Знаю, что решение должно быть. Но вот какое, ума не приложу.
Ха, ну а чо, на Application.OnRestore повесь вот такой обработчик:
procedure TMainForm.AppEventsRestore(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
mpdasa (статус: Посетитель), 27 июня 2012, 19:07 [#4]:
Цитата: "Ха, ну а чо, на Application.OnRestore повесь вот такой обработчик:..."
Я вот здесь я не смог разобраться. Пожалуйста, объясните детальнее. Как это повесить на Application.OnRestore обработчик?
Я написал так:
Application.OnRestore := AppEventsRestore;
И куда в моём случае вставлять код:
procedure TForm1.AppEventsRestore(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;
В FormCreate/OnShow/куда-то ещё? Я пробовал и туда и туда, но выдаётся ошибка:
[DCC Error] strokaES.pas(91): E2070 Unknown directive: 'TForm1'
[DCC Error] strokaES.pas(36): E2065 Unsatisfied forward or external declaration: 'TForm1.AppEventsRestore'
[DCC Fatal Error] govinda.dpr(5): F2063 Could not compile used unit 'strokaES.pas'
|
|
mpdasa (статус: Посетитель), 27 июня 2012, 19:08 [#5]:
А так уже близко подобрался к решению...
|
27 июня 2012, 19:33: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Взаимодействие с Windows модератором Ерёмин А.А.
|
min@y™ (статус: Доктор наук), 27 июня 2012, 19:50 [#6]:
Цитата (mpdasa):
И куда в моём случае вставлять код
Короче, шоб вручную не ковырять, положь на главную форму компонент TApplicationEvents. Далее, в Object inspector зайди в его события (Events) и 2 раза дергани за пимпочку тыкни на событие OnRestore. Появится заготовка обработчика, куда вставь вызов ShowWindow() из моего примера.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
mpdasa (статус: Посетитель), 27 июня 2012, 20:22 [#7]:
Всё так и сделал. Не помогло.
Изначальный вопрос остался открыт.
|
|
min@y™ (статус: Доктор наук), 27 июня 2012, 21:14 [#8]:
Ну, извини... У меня никогда не было необходимости в таких выкрутасах. Некоторые мои проги, когда свёрнуты в трей, недоступны по Alt+Tab, но когда они на экране - доступны, это нормально.
Вот, посмотри сюда.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
mpdasa (статус: Посетитель), 29 июня 2012, 11:59 [#9]:
Ответ найден (но в моём случае половинчастый). Хотя оказываеся всё так просто.
Один из вариантов, это Form-> Properties -> BorderStyle-ToolWin или ToolWindows.
Ещё посоветовали почитать http://pblog.ru/?p=293
Попозже попробую.
И всё бы было хорошо, но мне надо, чтобы форма у меня была BsNone.
Интересно, можно ли у формы со стилем ToolWin или ToolWindows убрать так не нужную мне верхную часть, чтобы было как у BsNone?
Вообщем можно ли сделать гибрид или я уже шлишком многого хочу?
|
|
min@y™ (статус: Доктор наук), 29 июня 2012, 13:02 [#10]:
Если ты видел хоть одну подобную программу, обратись к её авторам. Возможно помогут.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
mpdasa (статус: Посетитель), 29 июня 2012, 15:08 [#11]:
Примером может быть многие подобные программы стикеры. Они висят на рабочем столе,если надо, то и поверх всех окон. Соотвественно никаких кнопок там нет, и насколько помню, по А+Т их не заденешь.
Мне ещё посоветовали вот что:
Цитата: "Задаешь регион с верхней координатой 15,0, а нижней 1000,1000, чтобы не просчитаться, или юзать метод CreateParams".
Но для меня эти слова пока загадка!
Вам понятно, что имеется ввиду?
|
|
min@y™ (статус: Доктор наук), 29 июня 2012, 15:24 [#12]:
Цитата (mpdasa):
Вам понятно, что имеется ввиду?
Понятно. Часть окна с помощью регионов можно сделать прозрачной, т.е. отрезать нафиг (в том числе бордюры и заголовок). Погугли на тему "создание окон непрямоугольной формы".
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
29 июня 2012, 18:27: Статус вопроса изменён на решённый (изменил автор вопроса — mpdasa): Мне уже дали несколько вариантов. А также понятно, куда двигаться дальше.
|
mpdasa (статус: Посетитель), 29 июня 2012, 19:34 [#13]:
Нашёл нужный мне код (для Lazarus правда, но отделфи он похоже ничем не отличается).
uses Graphics;
procedure TForm1.FormCreate(Sender: TObject);
var
MyRegion: TRegion;
begin
MyRegion := TRegion.Create;
try
MyRegion.AddRectangle(0, 0, 100, 100);
Self.SetShape(MyRegion);
finally
MyRegion.Free;
end;
end;
И картинка там была, что обрезает часть формы, то, что надо.
Написал код, но выдаёт ошибку.
[DCC Error] strokaES.pas(43): E2003 Undeclared identifier: 'TRegion'
В гугде попробовал найти ":TRegion;". Не выдало ни одного результата. Хотя всегда если что есть, то обычно выдаёт.
Пролейте свет на этот таинственный и редкий TRegion.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|