1 Востаннє редагувалося Fox (14.04.2019 20:47:34)

Тема: Як працює TaskBar windows ?

Вирішив я тут написати аналог explorer.exe з цікавості.
Вийшло таке:
https://i.imgur.com/KP6yn0a.jpg
Писав я собі спокійно кота, як на мене вискочив Гендельф з криком далі дороги нема.
А саме те, що я не зрозумів як працює таскбар.
Він сам шукає вікна які можна додати у список, чи іконка додається за допомогою SendMessage ?
Просто читав, що можна через SendMessage видалити іконку з таскбару, а ось як вона туди додається інформації немає.
Я так зрозумів програми "стукають" (SendMessage) у якесь з цих вікон, щоб додати себе до таскбару.
https://i.imgur.com/3mRYHGp.png

2

Re: Як працює TaskBar windows ?

лайно кацапське вийшло якесь

Говоріть українською! Живіть українською! Відчувайте українською!
Подякували: koala, adziri2

3 Востаннє редагувалося Fox (14.04.2019 21:24:03)

Re: Як працює TaskBar windows ?

FakiNyan написав:

лайно кацапське вийшло якесь

Я в мами дизайнер.
Чи ви просто хейтер аніме ? xD
Я тільки перший день пишу цей шедевр.
І застряг на таскбарі.

Прихований текст

Коли побачив відповідь, а там Факі назвав твою програму лайном xD
І Коала підтримав Факі :сс
https://i.imgur.com/MaSY7zI.png

4

Re: Як працює TaskBar windows ?

Fox написав:
FakiNyan написав:

лайно кацапське вийшло якесь

Я в мами дизайнер.
Чи ви просто хейтер аніме ? xD
Я тільки перший день пишу цей шедевр.
І застряг на таскбарі.

Прихований текст

Коли побачив відповідь, а там Факі назвав твою програму лайном xD
І Коала підтримав Факі :сс
https://i.imgur.com/MaSY7zI.png

до чого тут аніме, у вас кацапська в програмі!!! тепер її варто визнати вірусом, і спалити вогнем.

Говоріть українською! Живіть українською! Відчувайте українською!

5 Востаннє редагувалося Fox (14.04.2019 22:43:22)

Re: Як працює TaskBar windows ?

FakiNyan написав:
Fox написав:
FakiNyan написав:

лайно кацапське вийшло якесь

Я в мами дизайнер.
Чи ви просто хейтер аніме ? xD
Я тільки перший день пишу цей шедевр.
І застряг на таскбарі.

Прихований текст

Коли побачив відповідь, а там Факі назвав твою програму лайном xD
І Коала підтримав Факі :сс
https://i.imgur.com/MaSY7zI.png

до чого тут аніме, у вас кацапська в програмі!!! тепер її варто визнати вірусом, і спалити вогнем.

Стоп, ви про другий скріншот ?
Так то не моя програма.

Обережно русаш лангвич

https://i.imgur.com/EHL9u3d.png
Ну це як доказ, будь ласка не ображайтесь за русаш на цьому скріншоті.

6

Re: Як працює TaskBar windows ?

Fox
Так у вас ще й вінда російська?

Факі, куди нести дрова?

По темі: Отримати повідомлення про створення вікна можна за допомогою хуків: https://docs.microsoft.com/en-us/window … bout-hooks На меседжах працює лише трей, в якому достатньо створити вікно певного класу.

Подякували: Не Зелений1

7 Востаннє редагувалося Fox (15.04.2019 12:20:23)

Re: Як працює TaskBar windows ?

Torbins написав:

Fox
Так у вас ще й вінда російська?

Факі, куди нести дрова?

По темі: Отримати повідомлення про створення вікна можна за допомогою хуків: https://docs.microsoft.com/en-us/window … bout-hooks На меседжах працює лише трей, в якому достатньо створити вікно певного класу.

Власне мені потрібно підмінити стандартний список таскбару на свій.
Я думав, що потрібно створити вікно в яке будуть приходити повідомлення і так я зможу дiзнатися, що програму потрібно додати до списку.

8

Re: Як працює TaskBar windows ?

Fox написав:

Власне мені потрібно підмінити стандартний список таскбару на свій.
Я думав, що потрібно створити вікно в яке будуть приходити повідомлення і так я зможу дiзнатися, що програму потрібно додати до списку.

Треба повісити хук на створення нових вікон. В середині хука аналізувати параметри вікна, чи це таке вікно, яке має потрапити на таскбар. Потім хук може повідомити ваш таскбар про створення нового вікна будь-яким зручним вам способом. Хоч по мережі повідомлення шліть.

Подякували: Не Зелений1

9

Re: Як працює TaskBar windows ?

Трохи лінків:
https://hi-tech.ua/article/huknemo-windows/ (читайте з другого абзацу)
https://rsdn.org/article/baseserv/winhooks.xml

Подякували: Fox, leofun01, Не Зелений3

10

Re: Як працює TaskBar windows ?

Fox, можете дати вихідний код? Займаюсь тим же. У мене проблема, вікно не спускається нижчє панелі завдань провідника, та не перекриває його - навіть коли завершити (вбити) explorer.exe, щось внизу все рівно існує і вікно туди не спускається!  Відкрийте блокнот. Відкрийте виконати (Win+R), taskkill /f /im explorer.exe - Enter, провідник і робочий стол зникнуть. Спробуйте розвернути вікно блокноту і воно розвернеться точно так же, як і з панеллю завдань, тобто не на весь екран, а на 50 пікселів менше знизу.

Прихований текст

Москальське підтримую. Української версії MS Visual C++ 6.0 немає. Та утиліта входить в версію. Перекласти на українську можна за допомогою Resource Hacker.
З москалями дурня. Тобто якщо хліб москальський, то не їсти - вмирати? Та і взагалі. Він же не москальський. Він американський. Та і взагалі москалі наші продукти крадуть, то чого ми їх продукти не можемо?

11 Востаннє редагувалося Fox (30.04.2019 22:34:30)

Re: Як працює TaskBar windows ?

Не Зелений написав:

щось внизу все рівно існує і вікно туди не спускається!

Думаю проблема в тому, що програми отримують висоту таскбару, навіть коли його нема.

Друге посилання з гугла.

// Get the height, in pixels, of the screen.
iYScreenSize = GetSystemMetrics( SM_CYSCREEN );
// Get the coordinates of the portion of the screen not obscured by the tray.
SystemParametersInfo( SPI_GETWORKAREA, 0, (PVOID)&rWorkArea, 0 ); 
// Finally caculate the taskbar height
iTaskBarHeight = iYScreenSize - (rWorkArea.bottom-rWorkArea.top);

Ну ось те, що вам потрібно:

SystemParametersInfo(SPI_SETWORKAREA,
                        0,
                        LPVOID)&rectWorkArea,
                        0);
Прихований текст
void gShowHideTaskBar(BOOL bHide /*=FALSE*/)
{
 CRect rectWorkArea = CRect(0,0,0,0);
 CRect rectTaskBar = CRect(0,0,0,0);
 
 CWnd* pWnd = CWnd::FindWindow("Shell_TrayWnd", "");
 
 if( bHide )
 {
  // Code to Hide the System Task Bar
  SystemParametersInfo(SPI_GETWORKAREA,
                       0,
                       LPVOID)&rectWorkArea,
                       0);
 
  if( pWnd )
  {
   pWnd->GetWindowRect(rectTaskBar);
   rectWorkArea.bottom += rectTaskBar.Height();
   SystemParametersInfo(SPI_SETWORKAREA,
                        0,
                        LPVOID)&rectWorkArea,
                        0);
 
   pWnd->ShowWindow(SW_HIDE);
  }
 }
 else
 {
  // Code to Show the System Task Bar
  SystemParametersInfo(SPI_GETWORKAREA,
                       0,
                       (LPVOID)&rectWorkArea,
                       0);
  if( pWnd )
  {
   pWnd->GetWindowRect(rectTaskBar);
   rectWorkArea.bottom -= rectTaskBar.Height();
   SystemParametersInfo(SPI_SETWORKAREA,
                        0,
                        (LPVOID)&rectWorkArea,
                        0);
 
   pWnd->ShowWindow(SW_SHOW);
  }
 }
}

Факі краще не бачити те, що користувач вишче сховав під спойлером.

Подякували: Не Зелений1

12

Re: Як працює TaskBar windows ?

Не Зелений написав:

Української версії MS Visual C++ 6.0 немає.

Ви б ще древніший компілятор відкопали, чому Борландівський не взяли?
Абсолютно всі версії VS підтримують англійську, тому не розумію вашого "фе",
в сторону локалізації древньої IDE.

Не Зелений написав:

Він же не москальський. Він американський.

Смішно, суперечите самі ж собі, якщо він Американський, то в чому проблема
включити "американську"?

Не Зелений написав:

Москальське підтримую

Було б що підтримувати..
За весь час не зустрів нічого вартого, що було б зроблено в сучасній Росії,
навіть та ж література, це просто переклади з тої ж англійської мови,
американських авторів.
(Я не беру в рахунок наприклад книжки видані в СРСР, бо сам маю книжку
з матану ще з того самого СРСР і вона дійсно не погана).

13

Re: Як працює TaskBar windows ?

adziri написав:

(Я не беру в рахунок наприклад книжки видані в СРСР, бо сам маю книжку
з матану ще з того самого СРСР і вона дійсно не погана).

І скоріше за все, писав її українець, просто тоді не прийнято було ділити за національністю.

Подякували: Fox, adziri, koala, Не Зелений, ostap34PHP5

14

Re: Як працює TaskBar windows ?

Torbins написав:
adziri написав:

(Я не беру в рахунок наприклад книжки видані в СРСР, бо сам маю книжку
з матану ще з того самого СРСР і вона дійсно не погана).

І скоріше за все, писав її українець, просто тоді не прийнято було ділити за національністю.

Так, тоді дійсно нікого не ділили за національністю і одинаково працювали як українські, так і
казахстанські, білоруські і ще з решти 15 республік вчені над досягненням мети.
І в тому числі багато наших Українських вчених зробили великий внесок у науку вцілому, просто
небагато хто знає про це, а ще деякі виїжали в Московію через більші можливості там розвиватися,
а тепер їхні заслуги привласнюють собі останні.
Доречі, її скоріше таки дійсно, писав українець, бо видавництво наше українське, як буду вдома
перевірю ))

15

Re: Як працює TaskBar windows ?

Дякую, код ще не перевіряв. Але маю ще одне питання.
Я хочу написати власний explorer не для тренування, так би мовити. Я хочу оптимізувати систему. А саме, ярлики займають на екрані надто багато місця, а також їх важко шукати і програма для перемикання між робочими столами - це не вирішення проблеми. Також забирає багато пам'яті Windows Aero.
Я створив саме звичайнісіньке вікно з верхнім меню (.rc). Воно займає всього 20 пікселів зверху. Програма займає всього близько 11000 рядків. Працювати з цією елементарною програмою набагато легше, ніж зі стандартним провідником. Вона має класифікацію програм (приклад: Файл - Браузери - Опера, Файл - Браузери - Хром).
Після закриття explorer.exe мій власний провідник працює в разів 20 швидше, мені не треба чекати 5 секунд, поки відкриється Пуск.
Було б добре ще зробити так, щоб мій провідник був зверху і вікна відкривалися з відступом зверху. І іще прибрати заставку (тло) робочого столу і windows aero. Але я не знаю як це зробити. Тобто я взагалі не знаю. І прошу зробити за мене. Або хоча б дати посилання на msdn desktop api. І іще. Я запускаю все за допомогою ShellExecute(), а чув можна якось зробити напряму. І CreateThread чи як його не навчився ще використовувати, прохання написати код, який виконував би натискання пунктів меню через CreateThread, бо так виходить що поки команда не виконається то все меню висить. :D А стандартне меню Пуск не зависає після натискання пункту.
Той код що дали дякую але не зрозумів його роботи. Він здається отримує параметри, але слова Set я там не бачив. ShowWindow() ховає вікно, але це ж майже аналогічно що вбити explorer.exe. Повторюся, код не перевіряв, але поки мало вірю, що запрацює.

16

Re: Як працює TaskBar windows ?

Прихований текст

Писав я собі спокійно кота, як на мене вискочив Гендельф з криком далі дороги нема.

Читаю «Володаря перснів» українською і там його кличуть Ґандальфом.

λ–програміст. https://web-hate.tumblr.com/
Подякували: Fox1

17

Re: Як працює TaskBar windows ?

Прихований текст
javascriptIsLife написав:
Прихований текст

Писав я собі спокійно кота, як на мене вискочив Гендельф з криком далі дороги нема.

Читаю «Володаря перснів» українською і там його кличуть Ґандальфом.

Я жодного разу не бачив як воно пишеться.  *DONT_KNOW*

18

Re: Як працює TaskBar windows ?

Не Зелений написав:

Було б добре ще зробити так, щоб мій провідник був зверху і вікна відкривалися з відступом зверху.

Про це було написано за чотири повідомлення до вашого.

Не Зелений написав:

... Але я не знаю як це зробити. Тобто я взагалі не знаю. І прошу зробити за мене. ...

Створіть тему в розділі Пропоную роботу.

Подякували: Fox, Не Зелений2