Tip 1: Jak získat popisovač okna

Tip 1: Jak získat popisovač okna


Koncept uživatelského rozhraní v systému Windows je založen na konceptu okna. Dialogy, tlačítka, ovládací panely, seznamy - to vše okna. Proto, abyste mohli provádět jakékoli akce s jakýmkoli prvkem rozhraní vašeho vlastního nebo někoho jiného aplikace, musíte se dostat deskriptor okna.



Jak získat okno


Budete potřebovat



  • - balíček Platform SDK;
  • - Kompilátor.


Pokyny


1


Získejte deskriptor okna, vytvářením. Proveďte volání na funkce API CreateWindow nebo CreateWindowEx nebo volte příslušné metody wrapper (na požadovaných objektech) tříd používaných rámců nebo knihoven, které zapouzdřují funkčnost práce s oknanebo ovládací prvky. Funkce CreateWindow a CreateWindowEx se vrací přímo deskriptor okna pokud je úspěšně vytvořena. Pokud volání selže, vrátí hodnotu NULL. Příčinou kód chyby může být dotazovány pomocí GetLastError API funkcí. Prototypy a podrobný popis parametrů CreateWindow a CreateWindowEx funkce klikněte na odkazy http://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx a http: // msdn .microsoft.com / en-us / library / windows / desktop / ms632680% 28V = vs.85% 29.aspx .Pokud různé systémy používají třídu okna vytváření objektů operačního systému může dojít buď explicitně (voláním) a implicitně (implementace strategie RAII). Proto, deskriptor okna je lepší přijmout na připraveném inicializovaném objektu. O metodách návratu tříd deskriptor okna, zapouzdřený objektem, najdete v dokumentaci příslušného rámce. Například v MFC, podobná metoda je GetSafeHwnd třídy CWnd.


2


Získejte deskriptor okna vyhledáním. Použijte funkce FindWindow a FindWindowEx API nebo odpovídající metody wrapper objektů třídy příslušné rámce. Funkce FindWindow vrátí deskriptor okna nejvyšší úroveň, pokud je nalezena, nebo NULL při selhání. Hledání se provádí podle názvu a názvu třídy okna. Popis parametrů a aspektů funkceje odkaz http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx .Semantika pracovní funkce FindWindow FindWindowEx je podobný s tím rozdílem, že se produkuje hledání dětská okna. Pro FindWindowEx dokumentace dána http://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx odkazu.


3


Najdi deskriptor okna v procesu výčtu jejich souborů. Použijte funkce API EnumWindows, EnumChildWindows, EnumThreadWindows nebo metody třídních objektů použitého rámce. Seznam funkcí EnumWindows a EnumChildWindows okna nejvyšší úroveň a dítě okna resp. EnumThreadWindows vykresluje všechny položky, které nejsou podřízené okna určeného proudu. Každá z těchto funkcí musí být předána ukazateli na postup zpětného volání, který bude v průběhu práce přenášen deskriptorjako parametry nalezené okna. Kombinací funkcí výčtu, získáním a analýzou vlastností oken v postupu zpětného volání najdete deskriptor požadované okna. Dokumentace popsaných funkcí je uvedena vOdkazy: - EnumWindows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx, - EnumChildWindows: http://msdn.microsoft.com/ en-us / library / windows / desktop / ms633494% 28V = vs.85% 29.aspx, - EnumThreadWindows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633495%28v=vs 0,85% 29.aspx.


4


Získejte deskriptor okna ze známých souřadnic. Funkce WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx návrat deskriptorFunkce windowsFromPoint je nejjednodušší, ale nevrátí se deskriptorSkryté a zakázané okna. na jeho aplikační dokumentace je odkaz http://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx .Funktsii ChildWindowFromPoint a najít ChildWindowFromPointEx deskriptorkteré jsou určeny rodičům okna, patřící k danému bodu. Tak ChildWindowFromPointEx chování může být flexibilně ovládat pomocí další parametr. Dokumentace pro tyto funkce jsou k dispozici na odkazech: - ChildWindowFromPoint: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632676%28v=vs.85%29.aspx; - ChildWindowFromPointEx: http: // msdn.microsoft.com/en-us/library/windows/desktop/ms632677%28v=vs.85%29.aspx.



Tip 2: Jak rozpoznat rukojeť


Deskriptor Okno nebo Okno úchytů, - specifickéIdentifikátor, který je vydán operačním systémem k oknu během jeho vytvoření. Pokud z nějakého důvodu potřebujete znát deskriptor systému okna (například při psaní aplikace), lze to provést pomocí programu HWND.



Jak rozpoznat rukojeť


Budete potřebovat



  • - program HWND.


Pokyny


1


Vyhledejte tuto aplikaci prostřednictvím vyhledávačůna internetu a stahujte do počítače. Tento program je bezplatná aplikace vyvinutá programátorem Pavlem Lesnikovem. Před rozbalením archivu s programem zkontrolujte stažené údaje pomocí antivirového softwaru. Rozbalte archiv s programem. Spusťte nástroj dvakrát klepnutím na soubor WHD.exe. Okno programu má jednoduché rozhraní: ovládací prvky a pole pro zobrazení deskriptorů. Pokud nemáte archivátor, stáhněte z internetu program nazvaný Win Rar.


2


Přepínač nastavte na "Zkurzor "a stiskněte klávesu CapsLock na klávesnici. Po této operaci se ve výstupním poli deskriptorů automaticky zobrazí identifikátory všech oken, nad kterými prochází kurzor myši. Chcete-li zakázat tento postup, znovu klikněte na CapsLock. Zadejte třídu okna, jejíž deskriptor chcete znát.


3


Klikněte na tlačítko "OK" a zobrazí se níže uvedené pole.id vyhledávání. Chcete-li zavřít okno programu, klikněte na kříž v pravém horním rohu. Chcete-li kontaktovat vývojáře programu, přejděte na stránku http://vokinsel.dviger.com. Budete mít možnost poradit se v reálném čase a dozvíte se také o dostupnosti nových verzí softwaru.


4


Tento nástroj nevyžaduje instalaci a velmisnadné použití. Takto získané identifikátory oken mohou být později použity v jiných aplikacích pro přístup k Windows službám Windows a Windows běžící programy. Pokud nevíte, jak tyto programy používat, přečtěte si nápovědu. Vývojáři obvykle popisují základní principy práce s programy.




Tip 3: Jak získat rukojeť


Rozhraní aplikačního programováníoperační systémy rodiny Windows představují soubor funkcí. Po jejich volání je možné vytvořit různé objekty (soubory, procesy, vlákna, objekty synchronizace atd.). Pro zajištění poměrně abstraktního a jednotného přístupu k těmto objektům se jejich identifikace provádí pomocí deskriptorů - "neosobních" číselných hodnot.



Jak získat rukojeť


Budete potřebovat



  • - překladatel z programovacího jazyka, který umožňuje použití rozhraní API systému Windows;
  • - snad platforma Windows Platform SDK.


Pokyny


1


Získejte deskriptory oken. To lze provést mnoha způsoby. Konkrétní metoda závisí na konečném cíli. Vytvořte okno pomocí rozhraní CreateWindow nebo CreateWindowEx API. Vrátí deskriptor v případě selhání a NULL v případě selhání. Vyhledejte nejvyšší úroveň oken a podřízených oken pomocí různých parametrů pomocí funkcí FindWindow a FindWindowEx. Pokud bude hledání úspěšné, bude přijat popisovač okna. Vymenujte okna s funkcemi EnumWindows, EnumChildWindows, EnumThreadWindows. Popisovače nalezených oken budou předávány jako parametr funkce zpětného volání. Najděte popisovač okna umístěného v určité pozici na obrazovce. Zavolejte jednu z funkcí: WindowFromPoint, ChildWindowFromPoint nebo ChildWindowFromPointEx.


2


Získejte deskriptory procesu. Vytvořte nový proces voláním funkcí API CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW nebo CreateProcessWithLogonW. Všichni vrátí popisovač nového procesu do pole hProcess struktury typu PROCESS_INFORMATION, ukazatele, ke kterému musí být předány poslednímu parametru. Najděte popisovač procesu podle jeho známého identifikátoru. Použijte volání OpenProcess. Identifikátory všech spuštěných procesů lze získat například pomocí funkcí CreateToolhelp32Snapshot, Process32First a Process32Next knihovny Nápověda nástrojů. Pomocí funkce GetCurrentProcess odeberte pseudo-deskriptor aktuálního procesu.


3


Získejte deskriptory vláken. Funkce CreateThread a CreateRemoteThread vytvářejí podprocesy v jejich vlastních a dalších procesech, resp. Vrátí své deskriptory. Chcete-li otevřít existující stream pomocí jeho identifikátoru a obdržet odpovídající deskriptor, je možné pomocí funkce OpenThread. Pseudo-deskriptor aktuálního toku je vrácen při volání GetCurrentThread.


4


Deskriptory pro soubory, adresáře, fyzickédisky, svazky, konzole, komunikační prostředky (I / O porty), poštovní zásuvky a pojmenované kanály lze získat voláním jediné funkce - CreateFile.


5


Popisovače souborů pro objekty zobrazení souborů jsou vráceny při volání CreateFileMapping a OpenFileMapping.


6


Funkce CreateMutex, CreateSemaphore aCreateEvent je vytvořen a funkce OpenMutex, OpenSemaphore a OpenEvent otevírají existující synchronizační objekty (mutexy, semafory a události). Všichni se vracejí deskriptory.


7


Manipulace všech GDI objektů (napřkontexty zařízení, písma, kartáče, tužky, závislé na hardwaru a nezávislé rastry, sekce DIB atd.) jsou vytvářeny pomocí jejich deskriptorů. Funkce pro vytváření objektů GDI jsou četné a pro získávání informací o nich je nutné odkazovat na odpovídající sekci MSDN.


8


Popisovač získaný v jednom procesu, jakopravidlo, nemůže být použito v jiném. V některých případech je však možné získat duplicitní deskriptor odpovídající primárnímu objektu. Volání funkce DuplicateHandle API implementujte duplicitní deskriptor. To může být například použito k implementaci současného použití neoznačených objektů nebo kanálů synchronizace několika procesy.