úvod 22.10.2015 vjj 1

Podobné dokumenty
úvod vjj 1

operační systém vjj 1

PV239/WP. Vývoj univerzálních Windows Store aplikací. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

Programy pro OS Windows

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

GUI grafických aplikací GUI pro Othello

11 Návrh programového vybavení

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework

vjj 1. Windows programming. krátká nahlédnutí za oponu

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Windows System Internals

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

vjj 1. Priority. Dispatcher

Vývoj univerzálních aplikací pro Windows 10. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

SAP a SUSE - dokonalá symbióza s open source. Martin Zikmund Technical Account Manager

Firemní strategie pro správu mobilních zařízení, bezpečný přístup a ochranu informací. Praha 15. dubna 2015

Vladimír

Procesy a vlákna (Processes and Threads)

Ovladače pro Windows. Ovladače Windows A4M38KRP. Str. 1

XNA Game Studio 3.1. Tomáš Herceg Microsoft Most Valuable Professional Microsoft Student Partner

Vývoj OS Windows Mobile. Ing. Jiří Šilhán

Efektivní provoz koncových stanic

Programování ve Windows Dynamické knihovny. Andrea Číková Martin Osovský

GUI ve Win32API a MFC I KIV / WIN

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

Windows na co se soustředit

Klíčové pojmy: Události, handlery, třída Graphics, pera, stětce, kreslení vyplněných a nevyplněných objektů.

Architektura. Vedení sesterské dokumentace

a co je operační systém?

Von Neumannovo schéma

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

ArcGIS for Server. V oblasti správy, vizualizace a zpracování prostorových dat nabízí ArcGIS for Server tyto možnosti:

Platformy / technologie. Jaroslav Žáček

MKZ III. Windows CE architektura. Procesy, vlákna, plánování Správa paměti GWES Souborový systém

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Windows a real-time. Windows Embedded

Novinky ve Visual Studio Tomáš Kroupa

Komponenty v.net. Obsah přednášky

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

historie vjj 1

Ope p r e a r čn č í s ys y té t m é y y Windo d w o s Stručný přehled

Jakub Čermák Microsoft Student Partner

Hodnocení bezpečnosti firewallů pro systém Windows 7. Garion, Warlock

Notes and Domino Social Edition 9. David Marko, TCL DigiTrade

ÚVOD DO OPERAČNÍCH SYSTÉMŮ

[ASP].NET Core Demystified. Miroslav Holec. Konzultant a lektor [ASP].NET Core.

Proč, kde a jak se mobilní IT může podepsat na úspěchu Vašeho podnikání?

Základní informace. Operační systém (OS)

Technologie, vlastnosti, uplatnění. Martin Suchan

Office 2007 Styles Autor: Jakub Oppelt Vedoucí práce: Ing. Václav Novák, CSc. Školní rok:

Workshop Exact Software CEE

Metody připojování periferií

Windows 2008 R2 - úvod. Lumír Návrat

CZ.1.07/1.5.00/

Tabulka Nabídková cena za předmět plnění *uchazeč vyplní cenu za celý kurz nebo cenu za 1 účastníka dle zadávací dokumentace a nabídky uchazeče

Přednáška 11. Historie MS Windows. Architektura Windows XP. Grafické a znakové rozhraní. Úlohy, procesy a vlákna.

Virtualizace desktopu virtuální realita, nebo skutečnost?

ČÁST 1. Základy 32bitového programování ve Windows

IT ESS II. 1. Operating Systém Fundamentals

Windows 10. Availability and experience may vary by market and hardware.

CineStar Černý Most Praha

Ukazky Zdroje:... 17

Úvod do GPGPU J. Sloup, I. Šimeček

Lukáš Kubis. MSP pro VŠB-TU Ostrava

Základní typy struktur výpočetních systémů

Softwarové komponenty a Internet

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

OS řady Microsoft Windows

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Windows 7. Z pohledu běžného uživatele. David Gešvindr MSP MCT MCITP

BRNO UNIVERSITY OF TECHNOLOGY FAKULTA PODNIKATELSKÁ ÚSTAV INFORMATIKY FACULTY OF BUSINESS AND MANAGEMENT INSTITUTE OF INFORMATICS

Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49

CASE nástroje. Jaroslav Žáček

Intune a možnosti správy koncových zařízení online

POPIS TUN TAP. Vysvetlivky: Modre - překlad Cervene - nejasnosti Zelene -poznamky. (Chci si ujasnit o kterem bloku z toho schematu se mluvi.

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura

ArcGIS Server 10. Řešení pro sdílení geodat

Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.

Ing. Jiří Fůsek. Základní informace. Pracovní zkušenosti. Vzdělání. 09/ nyní Freelancer. 09/ /2010 Univerzita Tomáše Bati ve Zlíně

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Brno. 30. května 2014

InControl Driver for Advantech I/O Cards

O jedné metodě migrace velkých objemů dat aneb cesta ke snižování nákladů

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Správa a sledování SOA systémů v Oracle SOA Suite

GUI grafických aplikací

Nové vývojové nástroje i5/os Rational Developer for System i V7.1

David Bednárek Jakub Yaghob Filip Zavoral.

Operační systémy. Tomáš Hudec.

Bezpečná autentizace přístupu do firemní sítě

KIV/PIA 2013 Jan Tichava

CASE. Jaroslav Žáček

Servery s Xeon E3-1200v2 Nové servery s procesory IvyBridge Inte Xeon E3-1200v2

Vývoj aplikací pro Windows Phone 8. Mgr. David Gešvindr MCT MSP MCPD MCITP

Asynchronní programování v.net

Novinky v ASP.NET MVC6

System Center Operations Manager

Desktop GUI. IW5 - Programování v.net a C# Desktop GUI

Transkript:

úvod 22.10.2015 vjj 1

22.10.2015 vjj 2 programování algoritmus interakce programu a operačního systému UI - interakce programu a uživatele

22.10.2015 vjj 3 programování pro Windows interakce programu a operačního systému UI - interakce programu a uživatele

22.10.2015 vjj 4 dva důvody pro GUI appearance design Aero visual navigation convenience undemanding on user's memory skeuomorphic vs. flat

22.10.2015 vjj 6 GUI komunikace s uživatelem ale komu je vaše aplikace vlastně určena?

22.10.2015 vjj 8 Programování pro Windows nové vs. staré konzument vs. profesionál

22.10.2015 vjj 9 Windows programming phone/tablet vs desktop

22.10.2015 vjj 10 Windows programming Tiles vs Windows the question of taste, fashion, vogue, usability

22.10.2015 vjj 11 Windows programming 2012 vs 2000 vs 1990

22.10.2015 vjj 12 Windows programming Metro vs.net vs Win32 API

22.10.2015 vjj 13 Windows programming Metro vs.net + Win32 API.NET WPF XAML

22.10.2015 vjj 14 Windows programming simplified vs unlimited LightSwitch Windows Phone Windows 8.x/10 WPF + Win32

22.10.2015 vjj 15 Windows programming simplified vs unlimited restricted strengthen GUI security full vulnarable

Windows 10 vs Windows 7 22.10.2015 vjj 16

22.10.2015 vjj 17 hodnocení OS funkčnost, implementace vs UI / UX

UI 22.10.2015 vjj 18

22.10.2015 vjj 19 hodnocení OS funkčnost, implementace + UI / UX

Metro vs Win32 API 22.10.2015 vjj 20

22.10.2015 vjj 22 Steve vs. Soma Somaseghar: bez Win32 API to NEJDE příklad (WPF): Kruhové okno příklad (WPF + API CodePack): Aero Blur Sinofsky: nechci žádné Win32 API, takže zrušíme Aero jakákoliv okna, nejen kruhová a mimo to strukturovanou navigaci (kaskádní konfigurovatelné Start Menu) vizuální navigaci!!!!! (a rovnou celé oddělení User Experience, protože protestovali) modifikovatelný OS, volitelné UI (složité) konfigurování příklad: Metro

Windows innards 22.10.2015 vjj 23

22.10.15 vjj 24 Windows 8 Steven Sinofsky - former President of the Windows and Windows Live Division HTML 5 JavaScript WinRT Runtime (new Windows native runtime)

22.10.15 vjj 25 Windows 8 Steven Sinofsky - former President of the Windows and Windows Live Division HTML 5 JavaScript C# XAML WinRT Runtime (new Windows native runtime)

22.10.15 vjj 26 Windows 8 Steven Sinofsky - former President of the Windows and Windows Live Division HTML 5 JavaScript C# XAML C++ COM DirectX WinRT Runtime (new Windows native runtime)

22.10.15 vjj 27 Windows 8 C# XAML HTML 5 JavaScript C++ WinRT Runtime COM DirectX Win32 API

22.10.15 vjj 28 Windows runtimes C, C++, ASM Visual Basic MFC Borland Pascal for Windows -> Delphi C# Visual Basic.NET F# VS visual editor Metro DLLs: VB runtime MFC (AFX) runtime Pascal/ Delphi runtime CLR = Common Language Runtime LightSwitch runtime "WinRT" "Core" runtime Win32 API aplikace Win32 API funkce Kernel (Native) funkce

22.10.15 vjj 29 Windows runtimes Windows 8.x/10 - a simplistic view Metro "Core" runtime

22.10.2015 vjj 30 Metro apps.net program dll: "Core" runtime hub Win32 API application w/fibres dll: CLR, WPF hub Win32 API application w/threads Subsystem DLLs: Kernel32.dll, User32.dll, GDI32.dll, Advapi32.dll, OLE32.dll SysCall Ntdll.dll Ntoskrnl.exe System service dispatcher lib. implementation Win32k.sys Windowing and graphics Win32, User32, GDI32 Executive Kernel lib. implementation Drivers Hal.dll Hardware Abstraction Layer (HAL) Graphic device drivers

.NET 22.10.2015 vjj 31

22.10.2015 vjj 33 tailored.net name origin: Microsoft's initiative to take over the Internet NGWS Next Generation Windows Services full.net 4.6 (4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0) WPF, XAML tailored Silverlight (.NET tailored for web) Scott Barnes (former.net Product Manager, disliked by Sinofsky): disaster that gave birth to the Windows 8?!?! Windows Phone (.NET tailored for smartphone) - smartphone market 30% -> 2% WinRT (.NET tailored for tablet) -> "Core" WinRT developers: that's not a.net at all (another runtime - apps are not "managed", they are Win32 API / COM) WinRT developers out of record: modified/rewritten Silverlight Scott Barnes: WPF and Silverlight unification?!?! purpose: HTML 5 a IE inconsistent changes in architecture throughout the entire process of development smaller currently than the Windows Phone one the enterprise level stuff is not covered no Console support, no ASP.NET integration, no Entity Framework support

.NET 22.10.2015 vjj 34

22.10.2015 vjj 36 desktop vs mobile Windows 3.1 Windows 95 Windows XP Vista / Windows 7 Windows Mobile Windows Phone Windows 8 Windows 10

22.10.2015 vjj 72 Windows 8 designed for tablets only depricated Retro UI

22.10.2015 vjj 73 Windows 8.1 designed for tablets only depricated Retro UI

22.10.2015 vjj 74 Windows 9 skipped

22.10.2015 vjj 75 Windows 10 designed for WinPhones? Retro UI

22.10.2015 vjj 76 big leap or hollow promises Windows 10 "our greatest enterprise platform ever" "it was such a substantial leap, that the company decided it would be best to skip over Windows 9" Terry Myerson, Microsoft's head of operating systems - on a press event in San Francisco, September 30, 2014 deteriorated retro 2D flat appearance - reduction in visual navigation poor mouse support "Core" (taylored) runtime with reduced multitasking

22.10.2015 vjj 79 Windowed Mobile Apps with the retro "Modern" style

22.10.2015 vjj 80 dilemma SW developer

22.10.2015 vjj 81 platform Windows 7 29 % Android 27 % ios 10 % Windows 8.1 7 % OS X 5.5 % Windows XP 5 % Windows 10 4.5 %

Win32 API 22.10.15 vjj 82

22.10.15 vjj 83.NET P/Invoke P/Invoke = Platform Invocation Services using System.Runtime.InteropServices; [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmEnableBlurBehindWindow ( IntPtr hwnd, DWM_BLURBEHIND pblurbehind );

22.10.15 vjj 84 pro konkrétní okno většina zpráv Win32 API - zprávy obecné WM_QUIT, PostQuitMessage (... GetMessage vrátí FALSE HWND_BROADCAST všem top-level oknům PostThreadMessage (... PostMessage (NULL,...

Uživatel (mouse, keyboard) 22.10.15 vjj 85

22.10.15 vjj 86 Uživatel (mouse, keyboard) hardware interrupt DRIVER

22.10.15 vjj 87 Uživatel (mouse, keyboard) hardware interrupt DRIVER System message queue

22.10.15 vjj 88 Uživatel (mouse, keyboard) Fronta zpráv hardware interrupt DRIVER System message queue RIT Raw Input Thread Fronta zpráv

22.10.15 vjj 89 fronta zpráv fronta zpráv poslaných pomocí SendMessage z jiných vláken (GetMessage takové zprávy nevrací, ale rovnou sama volá příslušné Windows procedury) fronta zpráv poslaných pomocí PostMessage příznak WM_QUIT fronta HW zpráv (od uživatele) WM_MOUSEMOVE, WM_LBUTTONDOWN,... max 1 kumulativní zpráva WM_PAINT WM_TIMER

22.10.15 vjj 90 stav fronty zpráv GetQueueStatus (QS_flag) ; QS_SENDMESSAGE QS_POSTMESSAGE QS_QUIT QS_INPUT ( = QS_MOUSE QS_KEY ) QS_PAINT QS_TIMER

22.10.15 vjj 91 zprávy ve frontě typedef struct { HWND hwnd ; // identifikace cílového okna UINT message ; // vlastní zpráva - celočíselná konstanta WPARAM wparam ; // význam parametru závisí na typu zprávy LPARAM lparam ; // dtto DWORD time ; // čas (milisek.) zařazení zprávy do fronty POINT pt ; // poloha (souřadnice) kursoru } MSG ;

22.10.15 vjj 92 Uživatel (mouse, keyboard) Fronta zpráv hardware interrupt DRIVER System message queue RIT Raw Input Thread Fronta zpráv

22.10.15 vjj 93 main (... ) { klasická struktura programu // inicializace // načtení vstupních dat // výpočet // výstup }

22.10.15 vjj 94 struktura Win32 API programu WinMain (... ) {... while (GetMessage ( &Msg,... ) ) DispatchMessage (&Msg,... ) ; } mywindowproc ( msg,... ) { switch (msg) { case WM_CREATE:... ; case WM_PAINT:... ; case WM_COMMAND:... ; case WM_CLOSE:... ; case WM_DESTROY:... ; } }

22.10.15 vjj 95 Výběr zpráv z fronty 1/2 while (GetMessage (&Msg, NULL, 0, 0)) { TranslateMessage (&Msg) ; DispatchMessage (&Msg) ; } GetMessage( &Msg, hwnd, MsgFilterMin, MsgFilterMax) ;

22.10.15 vjj 96 Výběr zpráv z fronty 2/2 PeekMessage (&Msg, hwnd, MsgFilterMin, MsgFilterMax, PM_...) ; PM_REMOVE PM_NOREMOVE (implementace GetMessage) PM_NOYIELD jen kvůli kompatibilitě

22.10.15 vjj 97 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER System message queue RIT Raw Input Thread Fronta zpráv

22.10.15 vjj 98 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER DispatchMessage System message queue RIT Raw Input Thread WindowProc Fronta zpráv

22.10.15 vjj 99 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv

22.10.15 vjj 100 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv

22.10.15 vjj 101 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv

22.10.15 vjj 102 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv

22.10.15 vjj 103 posílání zpráv asynchronní zpracování - zařazení zprávy do fronty bool PostMessage (HWND hwindow, UINT Message, WPARAM wparam, LPARAM lparam) ; hwindow = HWND_BROADCAST to all top-level windows (včetně invisible, disabled, pop-up) hwindow = 0 PostThreadMessage vlastnímu vláknu bool PostThreadMessage (DWORD idthread, UINT Message, WPARAM wparam, LPARAM lparam) ;

22.10.15 vjj 104 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv

22.10.15 vjj 105 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER PostMessage DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv

22.10.15 vjj 106 synchronní zpracování zprávy požadavek na synchronní zpracování zprávy - volání podprogramu LRESULT SendMessage (HWND hwindow, MSG Message, WPARAM wparam, LPARAM lparam) ; vlastní okno: cizí okno: přímé volání příslušné Windows procedury wait přidání zprávy na "začátek" fronty

22.10.15 vjj 107 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER PostMessage DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv SendMessage

22.10.15 vjj 108 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER PostMessage DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv SendMessage

22.10.15 vjj 109 Uživatel (mouse, keyboard) Fronta zpráv GetMessage hardware interrupt DRIVER PostMessage DispatchMessage System message queue RIT Raw Input Thread WindowProc WindowProc Fronta zpráv SendMessage

22.10.15 vjj 110 struktura programu WinMain (... ) {... while (GetMessage ( &Msg,... ) ) DispatchMessage (&Msg,... ) ; } mywindowproc1 ( msg,... ) { zpracování zpráv pro první typ mých oken } mywindowproc2 ( msg,... ) { zpracování zpráv pro druhý typ mých oken }

22.10.15 vjj 111 Zpracování zpráv switch (msg) { case WM_CREATE : inicializace instance okna; return 0 ; case WM_PAINT : BeginPaint (...) ;... EndPaint (...) ; return 0 ; case WM_CLOSE : case WM_DESTROY : ověření úmyslu zavřít okno (skončit aplikaci) (programátor nevěří, že uživatel chce to, co si vybral - Sirius cybernetics) úklid; DestroyWindow (...) ; return 0 ; destrukce instance okna; pokud má skončit celá aplikace, tak i PostQuitMessage (0) ; return 0 ; default : return DefWindowProc (hwin, msg, wparam, lparam); }

22.10.15 vjj 112 DefWindowProc standardní zpracování většiny zpráv mnoho běžných událostí je zpracováváno postupně pomocí celé posloupnosti nových zpráv při programování vlastní reakce na zprávu je tudíž nutné znát její kontext a dodržovat určitá pravidla (protokol)

22.10.15 vjj 113 cheating vhodná místa: Systém - v kterékoliv implementaci volané funkce, např. PostMessage, SendMessage,... při výběru zprávy z fronty, za GetMessage, PeekMessage tj. před distribucí zprávy (DispatchMessage) před a po zavolání DefWindowProc po návratu z WinProc, tj. za DispatchMessage systém s možností provádět takové "zásahy" někdy počítá a pokud mu tuto možnost vezmete (např. díky neznalosti příslušného protokolu), může se to projevit např. nepředvídatelným chováním aplikace