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

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

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

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

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

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

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

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

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

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

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,571
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
Сообщений: 459
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,571
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
Сообщений: 459
19.03.2012, 17:21 #8
anonimus, ТС писал:
Цитата Сообщение от xNeKiToSx Посмотреть сообщение
прошу прощения) на свое окно ShowWindow(hndl, SW_HIDE); почему то работает не корректно. на другие норм =) спасибо
Или я неправильно понял ТС, или Вы читайте внимательней.
0
anonimus
2154 / 1244 / 143
Регистрация: 28.04.2010
Сообщений: 4,571
19.03.2012, 17:45 #9
аа ну если на свое, тогда прошу прощения, тогда твой вариант то что надо
0
DenNik
Непрофессионал
1783 / 1286 / 304
Регистрация: 26.07.2011
Сообщений: 7,532
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,571
19.03.2012, 21:33 #11
Цитата Сообщение от DenNik Посмотреть сообщение
WM_HIDE, оно исчезнет и с панели задач
не всегда, не однократно сталкивался с тем что само окно исчезает а на панеле задач остается
0
DenNik
Непрофессионал
1783 / 1286 / 304
Регистрация: 26.07.2011
Сообщений: 7,532
20.03.2012, 12:57 #12
Цитата Сообщение от anonimus Посмотреть сообщение
не всегда, не однократно сталкивался с тем что само окно исчезает а на панеле задач остается
не знаю, может от системы зависит. У меня D7 на WinXp PRO. пробовал разные окна, даже открывал два документа Ворд, один скрывал, и он исчезал с панели задач. другие окна также скрываются.

зы. Скрывается даже окно рабочего стола, то, которое отображает обои
его класс Internet Explorer_Server. Можете попробовать
0
r@di0
76 / 74 / 11
Регистрация: 24.01.2009
Сообщений: 459
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
Привет! Вот еще темы с решениями:

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

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

Чужое окно
Возможно ли, зная название чужого окна, скопировать из него всю текстовую...

Чужое окно
Объясняю проблему. Мне нужно чтобы при запуске .jar файла( моей программы ) она...


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

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

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