Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2011, 22:04   #1
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию убрать чужое приложение с панели задач

казалось бы вроде все просто, а ннет, рылся рылся в интернете, а решение не нашел.
если скрывать так ShowWindow(хендл окна,SW_HIDE); окно пропадает, а на панели задач остается.
или как узнать хандл чужой программы аналог Application.Handle
fate вне форума Ответить с цитированием
Старый 15.09.2011, 11:40   #2
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

ну что нет идей?
fate вне форума Ответить с цитированием
Старый 15.09.2011, 12:53   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

findwindow для хэндла чужой программы - если известен заголовок, в противном случае если известно имя исполнимого файла через процессы
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.09.2011, 13:04   #4
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Цитата:
findwindow для хэндла чужой программы
и что это мне даст? я получу хендл окна, а мне нужен аналог Application.Handle
ведь Application.Handle <> Handle
fate вне форума Ответить с цитированием
Старый 15.09.2011, 13:35   #5
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Решил задачу
если кому интересно то вот
http://base.vingrad.ru/view/3105-Skr...niya-s-TaskBar
fate вне форума Ответить с цитированием
Старый 15.09.2011, 14:55   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Менее индусский метод – присвоить окну стиль WS_EX_TOOLWINDOW с помощью SetWindowLong

Правильное решение – использовать интерфейс ITaskbarList.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
 CLSID_TaskbarList: TGUID = '{56FDF344-FD6D-11d0-958A-006097C9A090}';

type
 ITaskbarList = interface
 ['{56FDF342-FD6D-11d0-958A-006097C9A090}']
   function HrInit: HResult; stdcall;
   function AddTab(hwnd: Cardinal): HResult; stdcall;
   function DeleteTab(hwnd: Cardinal): HResult; stdcall;
   function ActivateTab(hwnd: Cardinal): HResult; stdcall;
   function SetActiveAlt(hwnd: Cardinal): HResult; stdcall;
 end;

var
  Form1: TForm1;
  TaskbarList: ITaskbarList;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  TaskbarList := CreateComObject(CLSID_TaskbarList) as ITaskbarList;
  TaskbarList.HrInit;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TaskbarList.DeleteTab(FindWindow(nil, pchar(edit1.text)))
end;

end.
пыщь
JTG вне форума Ответить с цитированием
Старый 15.09.2011, 15:18   #7
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Цитата:
Менее индусский метод – присвоить окну стиль WS_EX_TOOLWINDOW с помощью SetWindowLong
пробовал уже, что я только не пробовал
fate вне форума Ответить с цитированием
Старый 16.09.2011, 16:39   #8
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от fate Посмотреть сообщение
и что это мне даст? я получу хендл окна, а мне нужен аналог Application.Handle
ведь Application.Handle <> Handle
Application.Handle - тоже хэндл окна, только оно невидимое.
Somebody вне форума Ответить с цитированием
Старый 16.09.2011, 17:56   #9
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Цитата:
Application.Handle - тоже хэндл окна, только оно невидимое
я понимаю, но это же не тот хендл который возвращает функция findwindow
fate вне форума Ответить с цитированием
Старый 16.09.2011, 18:47   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Я вообщето имел ввиду findwindow('TApplication','Title приложения') - как раз возвращает Application.Handle
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
убрать программу с панели задач Pein95 Общие вопросы Delphi 4 01.02.2011 22:49
[LAZARUS] Не получается убрать приложение с панели задач. Alex Cones Lazarus, Free Pascal, CodeTyphon 9 24.08.2010 22:05
Как убрать окно из панели задач? Seven[up] Win Api 3 10.08.2010 01:19
убрать приложение из панели задач Романнн Общие вопросы Delphi 2 10.11.2007 12:08