Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
xNeKiToSx
330 / 83 / 16
Регистрация: 10.01.2011
Сообщений: 516
Записей в блоге: 1
1

Скрыть чужое окно

18.03.2012, 00:41. Просмотров 4533. Ответов 12
Метки нет (Все метки)

Привет всем. Можно ли как то скрыть окно стороннего приложения?

Добавлено через 2 минуты
причина - постоянно работает одно приложение и просто надоело его окно на панеле
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2012, 00:41
Ответы с готовыми решениями:

Как узнать что чужое приложение(окно) перешло в полноэкранный режим?
Надо чтобы моя программа не выводила окно, если окно чужого приложения заняло...

Возможно ли скрыть окно консольного приложения при его выполнении?
Запускается консольное приложение (время отработки где то 2-3 сек). запускается...

Нужно закрыть модальное окно и сделать активным вызвавшее его окно
Мне нада средствами Win API закрыть модальное окно и сделать активным вызвавшее...

Где окно студии там и окно приложения ?
Доброго времени суток! Задался таким вопросом, есть ли в RAD Studio 2010 и...

скрыть кнопки
Можно ли скрыть кнопки в OpenDialog,чтобы пользователь по ошибке не выбрал...

12
SkyDream
32 / 26 / 11
Регистрация: 01.03.2012
Сообщений: 98
18.03.2012, 00:49 2
Delphi
1
2
3
ShowWindow(Handle, SW_HIDE);
или
SendMessage(Handle, WM_SHOWWINDOW, SW_HIDE, sw_ParentClosing);
А Handle надо "поймать", при помощи FindWindow.
2
xNeKiToSx
330 / 83 / 16
Регистрация: 10.01.2011
Сообщений: 516
Записей в блоге: 1
19.03.2012, 16:09  [ТС] 3
хоро спасибо, сейчас попробую. окно полностью пропадет с вида или просто тупо свернется?_

Добавлено через 5 минут
подвлючать какую библиотеку?? shellapi???
0
anonimus
2154 / 1244 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
19.03.2012, 16:12 4
Цитата Сообщение от xNeKiToSx Посмотреть сообщение
подвлючать какую библиотеку?
ничего не нужно подключать
1
xNeKiToSx
330 / 83 / 16
Регистрация: 10.01.2011
Сообщений: 516
Записей в блоге: 1
19.03.2012, 16:33  [ТС] 5
так все разобрался. но окно видно на панеле задач(( что делать?

Добавлено через 16 минут
прошу прощения) на свое окно ShowWindow(hndl, SW_HIDE); почему то работает не корректно. на другие норм =) спасибо
0
r@di0
76 / 74 / 11
Регистрация: 24.01.2009
Сообщений: 460
19.03.2012, 16:51 6
Для своего приложения:
Delphi
1
2
ShowWindow(Application.Handle, SW_HIDE);
ShowWindow(Application.MainForm.Handle, SW_HIDE);
1
anonimus
2154 / 1244 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
19.03.2012, 17:11 7
r@di0, речь о чужом приложении какой еще Application!

xNeKiToSx, тебе нужно убрать приложение с панели задач?

Добавлено через 5 минут
вот процедура которая убирает приложение с панели задач
Delphi
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
44
45
46
47
48
49
procedure DeleteToolBarButton(const ButtonText :string);
const
  BUFFER_SIZE = $1000;
var
  OpProc : THandle;
  ProcID : THandle;
  ToolBar : THandle;
  Window : HWND;
  ButtonsCount : integer;
  i : Integer;
  Buffer : Pointer;
  DButton : TTBButton;
  RBytes : Cardinal;
  BTextLength : Integer;
  BText : WideString;
begin
  ToolBar := FindWindow('Shell_TrayWnd', nil);
  ToolBar := FindWindowEx(ToolBar, 0, 'ReBarWindow32', nil);
  ToolBar := FindWindowEx(ToolBar, 0, 'MSTaskSwWClass', nil);
  ToolBar := FindWindowEx(ToolBar, 0, 'ToolbarWindow32', nil);
  if ToolBar = 0 then
    Exit;
  ButtonsCount := SendMessage(ToolBar, TB_BUTTONCOUNT, 0, 0);
  GetWindowThreadProcessId(ToolBar, @ProcID);
  OpProc := OpenProcess(PROCESS_ALL_ACCESS, False, ProcID);
  try
    Buffer := VirtualAllocEx(OpProc, nil, BUFFER_SIZE, MEM_COMMIT, PAGE_READWRITE);
    for i := 0 to ButtonsCount do
      begin
        SendMessage(ToolBar, TB_GETBUTTON, i, Integer(Buffer));
        RBytes := 0;
        ReadProcessMemory(OpProc, Buffer, @DButton, SizeOf(TTBButton), RBytes);
        ReadProcessMemory(OpProc, DButton.dwData, @Window, SizeOf(HWND), RBytes);
        if Window = 0 then
          Continue;
        BTextLength := SendMessage(ToolBar, TB_GETBUTTONTEXT, DButton.idCommand, Integer(Buffer));
        SetLength(BText, BTextLength);
        ReadProcessMemory(OpProc, Buffer, @(BText[1]), BTextLength * SizeOf(BText[1]), RBytes);
        if AnsiLowerCase(BText) = AnsiLowerCase(ButtonText) then
          begin
            SendMessage(ToolBar, TB_DELETEBUTTON, i, 0);
            Break;
          end;
      end;
  finally
    VirtualFreeEx(OpProc, Buffer, 0, MEM_RELEASE);
    CloseHandle(OpProc);
  end;
end;
1
r@di0
76 / 74 / 11
Регистрация: 24.01.2009
Сообщений: 460
19.03.2012, 17:21 8
anonimus, ТС писал:
Цитата Сообщение от xNeKiToSx Посмотреть сообщение
прошу прощения) на свое окно ShowWindow(hndl, SW_HIDE); почему то работает не корректно. на другие норм =) спасибо
Или я неправильно понял ТС, или Вы читайте внимательней.
0
anonimus
2154 / 1244 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
19.03.2012, 17:45 9
аа ну если на свое, тогда прошу прощения, тогда твой вариант то что надо
0
DenNik
Непрофессионал
1801 / 1409 / 307
Регистрация: 26.07.2011
Сообщений: 7,872
19.03.2012, 18:12 10
Цитата Сообщение от anonimus Посмотреть сообщение
тебе нужно убрать приложение с панели задач?
Добавлено через 5 минут
вот процедура которая убирает приложение с панели задач
к чему этот огород? если чужому окну послать сообщение WM_HIDE, оно исчезнет и с панели задач

Добавлено через 4 минуты
немного не так выразился.
Delphi
1
ShowWindow(aHandle,SW_HIDE);
скрывает окно с пенели задач и с экрана, остается только процесс, в чем не сложно убедиться открыв Диспетчер задач
0
anonimus
2154 / 1244 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
19.03.2012, 21:33 11
Цитата Сообщение от DenNik Посмотреть сообщение
WM_HIDE, оно исчезнет и с панели задач
не всегда, не однократно сталкивался с тем что само окно исчезает а на панеле задач остается
0
DenNik
Непрофессионал
1801 / 1409 / 307
Регистрация: 26.07.2011
Сообщений: 7,872
20.03.2012, 12:57 12
Цитата Сообщение от anonimus Посмотреть сообщение
не всегда, не однократно сталкивался с тем что само окно исчезает а на панеле задач остается
не знаю, может от системы зависит. У меня D7 на WinXp PRO. пробовал разные окна, даже открывал два документа Ворд, один скрывал, и он исчезал с панели задач. другие окна также скрываются.

зы. Скрывается даже окно рабочего стола, то, которое отображает обои
его класс Internet Explorer_Server. Можете попробовать
0
r@di0
76 / 74 / 11
Регистрация: 24.01.2009
Сообщений: 460
20.03.2012, 16:16 13
Цитата Сообщение от DenNik Посмотреть сообщение
Скрывается даже окно рабочего стола, то, которое отображает обои
Можно даже больше:
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TMainForm.HideWindows;
  function CurrentWindow(h: hwnd; param: LPARAM): BOOL; stdcall;
  begin
    if (h <> Application.Handle) and (h <> Application.MainForm.Handle) then
      ShowWindow(h, SW_HIDE);
    Result := True;
  end;
begin
  EnumWindows(@CurrentWindow, 0);
end;
Попробуйте :dance3:

Добавлено через 1 минуту
(!: после запуска придется перезагружаться)
0
20.03.2012, 16:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2012, 16:16

Скрыть форму
Пытаюсь написать авторизацию. Получается вот такой код: procedure...

Скрыть чужое окно
Здравствуйте. Встала задача: 1. Запустить прогу (есть консольное окно) 2....

Создать окно произвольного размера, скрыть окно, показать окно, удалить окно.
Создать окно произвольного размера, скрыть окно, показать окно, удалить окно. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru