Tip 1: Hoe de vensterhandgreep te krijgen

Tip 1: Hoe de vensterhandgreep te krijgen


Het concept van de gebruikersinterface in Windows is gebaseerd op het concept windows. Dialogen, knoppen, bedieningspanelen, lijsten - dit alles windows. Daarom moet u om acties te kunnen uitvoeren met elk element van de interface van uw eigen toepassing of die van iemand anders descriptor windows.



Hoe de raamkruk te krijgen


Je hebt nodig



  • - Platform SDK-pakket;
  • - De compiler.


instructie


1


krijgen descriptor windows, het creëren. Bellen naar de API-functies CreateWindow of de CreateWindowEx, of bel de geschikte methoden, de wrapper (in de verplichte vakken) klassen die worden gebruikt door het framework of de bibliotheek die de functionaliteit in te kapselen van het werken met windowsof besturingselementen.De CreateWindow en CreateWindowEx-functies keren direct terug descriptor windows als het met succes is gemaakt. Als de oproep mislukt, retourneren ze een NULL-waarde. De foutredencode kan worden opgevraagd met de GetLastError-API. Prototypes en een gedetailleerde beschrijving van de parameters van CreateWindow en CreateWindowEx functies klik op de links http://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx en http: // msdn .microsoft.com / en-us / library / windows / desktop / ms632680% 28V = vs.85% 29.aspx .Als verschillende kaders te gebruiken klasse maken van een object windows-besturingssysteem kan optreden hetzij expliciet (door te bellen) en impliciet (implementatie van de RAII-strategie). daarom descriptor windows het is beter om te ontvangen op het kant en klaar geïnitialiseerde object. Over methoden voor het retourneren van klassen descriptor windows, ingekapseld door het object, kunt u uitzoeken in de documentatie van het overeenkomstige kader. In MFC is een vergelijkbare methode GetSafeHwnd van klasse CWnd.


2


krijgen descriptor windows door het te doorzoeken. Gebruik de FindWindow- en FindWindowEx API-functies of de bijbehorende wrappermethoden van de klassenobjecten van het toepasselijke framework. De functie FindWindow retourneert descriptor windows topniveau als het wordt gevonden of NULL bij falen. Zoeken gebeurt op naam en titel van de klas windows. Beschrijving van de parameters en aspecten van de functieis de link http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx .Semantika werkfunctie FindWindow FindWindowEx is vergelijkbaar met het enige verschil dat het zoeken produceert kind ramen. De documentatie voor FindWindowEx is beschikbaar op http://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx.


3


vinden descriptor windows tijdens het opsommen van hun sets. Gebruik de API-functies EnumWindows, EnumChildWindows, EnumThreadWindows, of de methoden van de klasse-objecten van het gebruikte framework.De EnumWindows- en EnumChildWindows-functielijst windows topniveau en kind windows respectievelijk. EnumThreadWindows somt alle niet-onderliggende op windows van de opgegeven stream. Elk van deze functies moet een verwijzing naar de callback-procedure worden doorgegeven, die tijdens het werkproces zal worden overgedragen descriptors gevonden vensters als parameters. Door de opsommingsfuncties te combineren, door de eigenschappen van vensters in de terugroepprocedure te verkrijgen en te analyseren, kunt u vinden descriptor de vereiste windows. De documentatie voor de beschreven functies wordt gegeven inlinks: - 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


krijgen descriptor windows van bekende coördinaten. Functies WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx return descriptorDe functie windowsFromPoint is het gemakkelijkst te gebruiken, maar keert niet terug descriptorVerborgen en geblokkeerde vensters. over de toepassing ervan documentatie is de link http://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx .Funktsii ChildWindowFromPoint en vind ChildWindowFromPointEx descriptors kinderen van de opgegeven ouder windows, behorend tot een bepaald punt. Aldus ChildWindowFromPointEx gedrag kan flexibel worden bestuurd door een extra parameter. Documentatie voor deze functies is voorzien op de links: - 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: Hoe de hendel te herkennen


descriptor Venster of handvatvenster, - specifiekEen ID die door het besturingssysteem aan het venster wordt uitgegeven tijdens het maken ervan. Als u om een ​​of andere reden de systeemdescriptor van een venster moet kennen (bijvoorbeeld wanneer u een toepassing schrijft), kunt u dit doen met behulp van het HWND-programma.



Hoe de hendel te herkennen


Je hebt nodig



  • - HWND-programma.


instructie


1


Lokaliseer deze applicatie via zoekmachinesop internet en download deze naar uw computer. Dit programma is een gratis applicatie ontwikkeld door de programmeur Pavel Lesnikov. Voordat u het archief met het programma uitpakt, controleert u de gedownloade gegevens met antivirussoftware. Pak het archief uit met het programma. Voer het hulpprogramma uit door tweemaal op het WHD.exe-bestand te klikken. Het programmavenster heeft een eenvoudige interface: besturingselementen en een veld voor het weergeven van descriptoren. Als u geen archiver heeft, downloadt u van internet een programma met de naam Win Rar.


2


Zet de schakelaar op "From thecursor "en druk op CapsLock op het toetsenbord. Na deze operatie worden de identificaties van alle vensters waar de cursor overheen gaat automatisch weergegeven in het uitvoerveld van de descriptors. Klik nogmaals op CapsLock om deze procedure uit te schakelen. Voer de klasse van het venster in waarvan u de descriptor wilt weten.


3


Klik op de knop "OK" en het onderstaande veld verschijnt.zoek id. Om het programmavenster te sluiten, klikt u op het kruisje in de rechterbovenhoek. Ga naar http://vokinsel.dviger.com om contact op te nemen met de ontwikkelaar van het programma. Je kunt daar in realtime advies krijgen, en meer te weten komen over de beschikbaarheid van nieuwe versies van de software.


4


Dit hulpprogramma vereist geen installatie en zeermakkelijk te gebruiken. De op deze manier verkregen venster-id's kunnen later in andere toepassingen worden gebruikt om toegang te krijgen tot Windows-servicevensters en vensters van actieve programma's. Als u niet weet hoe u deze programma's moet gebruiken, lees dan de hulp. Typisch beschrijven ontwikkelaars de basisprincipes van het werken met programma's.




Tip 3: Hoe de hendel te krijgen


Application Programming Interfacebesturingssystemen van de Windows-familie wordt weergegeven door een reeks functies. Wanneer ze worden opgeroepen, kunnen verschillende objecten (bestanden, processen, threads, synchronisatieobjecten, enz.) Worden gemaakt. Om een ​​vrij abstracte en uniforme toegang tot deze objecten te garanderen, wordt hun identificatie uitgevoerd met behulp van descriptoren - "onpersoonlijke" numerieke waarden.



Hoe het handvat te krijgen


Je hebt nodig



  • - vertaler uit een programmeertaal die het gebruik van de Windows API mogelijk maakt;
  • - misschien de Windows Platform SDK.


instructie


1


Haal de vensterbeschrijvingen op.Dit kan op zoveel verschillende manieren worden gedaan. De specifieke methode is afhankelijk van het uiteindelijke doel. Gebruik de CreateWindow of CreateWindowEx API om een ​​venster te maken. Ze retourneren een descriptor als deze is geslaagd en NULL in geval van mislukking. Zoek naar de vensters op het hoogste niveau en onderliggende vensters met behulp van verschillende parameters met respectievelijk de functies FindWindow en FindWindowEx. Als de zoekopdracht slaagt, wordt de vensterbeschrijving ontvangen.Geëmplementeer de vensters met de functies EnumWindows, EnumChildWindows, EnumThreadWindows. De descriptoren van de gevonden vensters worden doorgegeven als een parameter van de callback-functie.Zoek de handle van het venster op een bepaalde positie op het scherm. Bel een van de functies: WindowFromPoint, ChildWindowFromPoint of ChildWindowFromPointEx.


2


Verkrijg procesbeschrijvingen.Maak een nieuw proces door te bellen naar de API-functie CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW of CreateProcessWithLogonW. Ze allemaal terug een handvat om een ​​nieuwe werkwijze op het gebied hProcess soort PROCESS_INFORMATION structuur, een suggestie waar is ze te verzenden laatste parametrom.Naydite Werkwijze steel van zijn bekende identificator. Gebruik noemen OpenProcess. ID's van alle lopende processen worden verkregen, bijvoorbeeld met behulp CreateToolhelp32Snapshot functies en Process32First Process32Next bibliotheek Tool Help.Izvlekite pseudo-descriptor van het huidige proces, met de functie GetCurrentProcess.


3


Verkrijg de thread descriptors.De CreateThread en CreateRemoteThread-functies maken threads in hun eigen en andere processen respectievelijk retourneren hun descriptors. Om een ​​bestaande stream te openen met behulp van de identifier, nadat een bijbehorende descriptor is ontvangen, is dit mogelijk met behulp van de functie OpenThread. De pseudo-descriptor van de huidige stroom wordt geretourneerd wanneer GetCurrentThread wordt aangeroepen.


4


Descriptoren voor bestanden, mappen, fysiekschijven, volumes, consoles, communicatiebronnen (I / O-poorten), postslots en named pipes kunnen worden verkregen door een enkele functie aan te roepen: CreateFile.


5


Bestandsdescriptors voor bestandsweergaveobjecten worden geretourneerd wanneer CreateFileMapping en OpenFileMapping worden aangeroepen.


6


De functies CreateMutex, CreateSemaphore enCreateEvent wordt gemaakt en de OpenMutex-, OpenSemaphore- en OpenEvent-functies openen bestaande synchronisatie-objecten (mutexes, semaforen en gebeurtenissen). Allemaal keren ze descriptoren terug.


7


Manipulatie van alle GDI-objecten (zoalsapparaatcontexten, lettertypen, penselen, potloden, hardware-afhankelijke en onafhankelijke rasters, DIB-secties, enz.) worden geproduceerd door middel van hun descriptors. De functies voor het maken van GDI-objecten zijn talrijk en voor het verkrijgen van informatie over hen is het noodzakelijk om naar de overeenkomstige sectie van MSDN te verwijzen.


8


Een descriptor verkregen in één proces, alsregel, kan niet in een andere worden gebruikt. In sommige gevallen is het echter mogelijk om een ​​descriptor-duplicaat te verkrijgen dat overeenkomt met het primaire object. Roep de functie DuplicateHandle API aan om de duplicate descriptor te implementeren. Dit kan bijvoorbeeld worden gebruikt om het gelijktijdige gebruik van niet nader genoemde synchronisatieobjecten of kanalen door verschillende processen te implementeren.