Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi

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

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

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

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

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

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

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

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

Где окно студии там и окно приложения ? - Delphi
Доброго времени суток! Задался таким вопросом, есть ли в RAD Studio 2010 и выше, настройка позволяющая при компиляции запускать приложение...

скрыть кнопки - Delphi
Можно ли скрыть кнопки в OpenDialog,чтобы пользователь по ошибке не выбрал другую папку, путь в нужную папку указываю через InitialDir.

Создать окно произвольного размера, скрыть окно, показать окно, удалить окно. - FoxPro
Создать окно произвольного размера, скрыть окно, показать окно, удалить окно. Для создания окна необходимо произвести следующие...

12
SkyDream
32 / 26 / 2
Регистрация: 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 / 2
Регистрация: 10.01.2011
Сообщений: 516
Записей в блоге: 1
19.03.2012, 16:09  [ТС] #3
хоро спасибо, сейчас попробую. окно полностью пропадет с вида или просто тупо свернется?_

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

Добавлено через 16 минут
прошу прощения) на свое окно ShowWindow(hndl, SW_HIDE); почему то работает не корректно. на другие норм =) спасибо
0
r@di0
76 / 74 / 5
Регистрация: 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 / 1243 / 32
Регистрация: 28.04.2010
Сообщений: 4,549
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 / 5
Регистрация: 24.01.2009
Сообщений: 459
19.03.2012, 17:21 #8
anonimus, ТС писал:
Цитата Сообщение от xNeKiToSx Посмотреть сообщение
прошу прощения) на свое окно ShowWindow(hndl, SW_HIDE); почему то работает не корректно. на другие норм =) спасибо
Или я неправильно понял ТС, или Вы читайте внимательней.
0
anonimus
2154 / 1243 / 32
Регистрация: 28.04.2010
Сообщений: 4,549
19.03.2012, 17:45 #9
аа ну если на свое, тогда прошу прощения, тогда твой вариант то что надо
0
DenNik
Непрофессионал
1578 / 1110 / 174
Регистрация: 26.07.2011
Сообщений: 6,740
19.03.2012, 18:12 #10
Цитата Сообщение от anonimus Посмотреть сообщение
тебе нужно убрать приложение с панели задач?
Добавлено через 5 минут
вот процедура которая убирает приложение с панели задач
к чему этот огород? если чужому окну послать сообщение WM_HIDE, оно исчезнет и с панели задач

Добавлено через 4 минуты
немного не так выразился.
Delphi
1
ShowWindow(aHandle,SW_HIDE);
скрывает окно с пенели задач и с экрана, остается только процесс, в чем не сложно убедиться открыв Диспетчер задач
0
anonimus
2154 / 1243 / 32
Регистрация: 28.04.2010
Сообщений: 4,549
19.03.2012, 21:33 #11
Цитата Сообщение от DenNik Посмотреть сообщение
WM_HIDE, оно исчезнет и с панели задач
не всегда, не однократно сталкивался с тем что само окно исчезает а на панеле задач остается
0
DenNik
Непрофессионал
1578 / 1110 / 174
Регистрация: 26.07.2011
Сообщений: 6,740
20.03.2012, 12:57 #12
Цитата Сообщение от anonimus Посмотреть сообщение
не всегда, не однократно сталкивался с тем что само окно исчезает а на панеле задач остается
не знаю, может от системы зависит. У меня D7 на WinXp PRO. пробовал разные окна, даже открывал два документа Ворд, один скрывал, и он исчезал с панели задач. другие окна также скрываются.

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

Чужое окно - Java БД
Объясняю проблему. Мне нужно чтобы при запуске .jar файла( моей программы ) она в ДРУГОМ окне нажимала ctrl+a ctrl+s потом вводила название...

Чужое окно - Delphi WinAPI
Возможно ли, зная название чужого окна, скопировать из него всю текстовую информацию, которую только можно скопировать?

Вставка в чужое окно - C++ WinAPI
Вот есть у меня какая-то открытая прога, каким чудом можно в неё (конечно же при условии что в ней есть поле ввода, не обязательно эдит,...

Ввод текста в чужое окно - C++ WinAPI
Подскажите как реализовать вот например нахожу калькулятор HWND H = FindWindow(&quot;SciCalc&quot;, &quot;Калькулятор&quot;); if (H == NULL) // если не...


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

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

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