Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];

Вниз

Убрать кнопку окна с панели задач   Найти похожие ветки 

 
Olgerd   (2001-11-24 17:58) [0]

Вот у меня есть хэндл окошка, пытаюсь убрать его с панели задач, но ничего не получается:

h:=FindWindow("TWINDOWSCMD",nil);
AStyle:=GetWindowLong(h, GWL_EXSTYLE);
SetWindowLong(h,GWL_EXSTYLE,AStyle or WS_EX_TOOLWINDOW );


 
Suntechnic   (2001-11-24 23:08) [1]

Убери стиль WS_EX_APPWINDOW


 
NetBreaker666   (2001-11-25 01:29) [2]

Нахрена так мудиться ?????
ShowWindows(Handle,0)


 
NetBreaker666   (2001-11-25 01:32) [3]

FUCK !!!!!!!!
не ShowWindows, а ShowWindow !!!!!!


 
Suntechnic   (2001-11-25 03:22) [4]

> NetBreaker666 © (25.11.01 01:29)
Ты хоть понял чего спрашивают?


 
NetBreaker666   (2001-11-25 03:35) [5]

Ну уж наверное понял !
Ламо сам ! (ShowWindow(Handle, SW_Hide) - уберает окно из Таск Бара, ни это ли надо ?????????)


 
Olgerd   (2001-11-25 06:01) [6]

>NetBreaker666 © (25.11.01 03:35)
ShowWindow(Handle, SW_Hide) - вообще скрывает окно и с панели задач тоже, естественно, но мне надо, чтобы окошко видимым оставалось...

>Suntechnic © (24.11.01 23:08)
AStyle:=GetWindowLong(hwndHandle, GWL_EXSTYLE);
SetWindowLong(hwndHandle,GWL_EXSTYLE,AStyle or WS_EX_APPWINDOW );

Так ничего не происходит.

Жду помощи.


 
Suntechnic   (2001-11-25 06:25) [7]

> Olgerd © (25.11.01 06:01)
Я сказал не поставить, а убрать стиль WS_EX_APPWINDOW! Чувствуешь разницу? А поставить как раз и надо WS_EX_TOOLWINDOW. Т.е. начало у тебя было правильно описано, только убери стиль WS_EX_APPWINDOW.


 
Olgerd   (2001-11-25 12:57) [8]


AStyle:=GetWindowLong(hwndHandle, GWL_EXSTYLE);
SetWindowLong(hwndHandle,GWL_EXSTYLE,AStyle or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);

Извращался я так над несколькими программами, но может потому что у меня Win2k, само окно становится TOOLWINDOW, убирается только иконка из кнопки в панели задач, а сама кнопка остаётся.


 
NetBreaker666   (2001-11-25 14:28) [9]

Блин !

ShowWindow(Application.Handle,0); //motherfucker

Вот эта херня уберет только с панели задач.


 
Olgerd   (2001-11-25 17:34) [10]

Убирать-то убирает, но я беру хэндл другого окна, например, блоконота, через FindWindow и она просто скрывает это окно.

З.Ы.
>NetBreaker666 © (25.11.01 14:28)
>Блин !
>
>ShowWindow(Application.Handle,0); //motherfucker
Как я понял, в качестве комментария автор этого кода написал своё имя.


 
Admin   (2001-11-25 20:44) [11]

Удалено модератором


 
Olgerd   (2001-12-02 19:22) [12]

Admin, наверное, правильно написал, жалко я посмотреть не успел ;)
Короче, Мастера! Вот задача:
Открываем блокнот, далее пишем код:

var h:HWND;
begin
h:=FindWindow("Notepad",nil); // получаем handle блокнота (у него класс "Notepad" - я проверял)

Внимание, вопрос! Как убрать кнопку блокнота с панели задач? (само окно, естественно должно остаться ;))


 
Olgerd   (2001-12-07 16:49) [13]

Да уж, хороши мастера!


 
VladD2   (2001-12-08 03:16) [14]

Да. Прийдется старому (ну, в меру) сишнику вмешаться. :)

Надо делать так (вы уж извенитя я таки на сях пример приведу... думаю разберетесь... мне так проще):

HWND hWnd = FindWindow(_T("Notepad"), NULL);
if(!hWnd)
return;
// Если окно уже имеет парента...
if(GetWindowLong(hWnd, GWL_HWNDPARENT))
// урать его, тем самым показав в таскбаре...
SetWindowLong(hWnd, GWL_HWNDPARENT, NULL);
else
// иначе ставим его парантом к DesktopWindow, тем самым убирая из таскбара.
SetWindowLong(hWnd, GWL_HWNDPARENT, (LONG)GetDesktopWindow());


PS

Очень интересное обсуждение данного вопроса было на www.rsdn.ru.


 
Olgerd   (2001-12-08 18:56) [15]

Большое спасибо, действительно работающий код.
Если кому интересно на Delphi это будет так:
var h: HWND;
begin
h:=FindWindow("Notepad", nil);
if GetWindowLong(h, GWL_HWNDPARENT)<>0 then SetWindowLong(h, GWL_HWNDPARENT, 0);
SetWindowLong(h, GWL_HWNDPARENT, GetDesktopWindow);
end;


Я думаю, тему можно считать закрытой.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
3-8788
kengura
2002-01-08 12:22
2002.02.04
Как определить есть ли в DataSet записи?


1-8955
егор
2002-01-18 20:54
2002.02.04
Вопрос


3-8748
TAIS
2002-01-02 09:47
2002.02.04
триггер


3-8797
andey
2001-12-20 19:31
2002.02.04
подскажите


1-8865
ctapik-net
2002-01-21 15:40
2002.02.04
Создание электронного письма через ShellExecute





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский