Ako prečítať celý obsah schránky vo windows? rubrika: Programování: C/C++
Myslím tým úplne všeto čo sa aktuálne nachádza v schránke, všetky druhy formátov. Na nete som našiel iba príklady ako prečítať jednotlivé formáty, lenže ja by som potreboval prečítať všetko čo sa nachádza v schránke a premiestniť to do mojej appky (a vôbec to nepotrebujem zobraziť ani s tým manipulovať). Viem že také niečo možné je, nakoľko existujú ClipboardReadery napr FreeClipViewer a tie dokážu zobraziť všetko čo je v schránke dokonca aj custom formáty niektorých programov (tie zobrazia len ako ascii znaky). Žiaľ FreeClipViewer neni open source.
Ja viem zistiť, ktoré formáty mám aktuálne v schránke, pomocou EnumerateFormats, ale už nepoznám univerzálny spôsob ako tie formáty prečítať. Viem získať pointer na formát pomocou GetClipboardData, ale už nie veľkosť bloku dát, ktorý mám prečitať. Lebo pri každom formáte sa to robí inak, pri textoch sa prečíta buď nullterminated string (zakočnený znakom \0) alebo sa zistí veľkosť stringu funkciou GlobalSize (ak chceme mať v stringu aj \0). Toto, ale nefunguje pri obrázkoch tam treba prečítať hlavičku Bitmapy a až z tej vieme zistiť aký objem dát treba prečítať. Pokiaľ, ale tie formáty nechcem zobrazovať iba niekam ukladať tak je to zbytočný overkill a na custom formáty sa to nedá použiť.
Takže ak niekto pozná spôsob ako na to tak prisím sem s ním. Ja skúsim pohľadať nejaké zzdrojáky appiek pracujúce so schránkou na githube.
Velkost bloku dat v clippboarde je vzdy zistitelna cez GlobalSize(), pre kazdy format.
Nemozes verit ziadnym hlavickam alebo terminatorom ulozenym v tych datach.
Tie mozu byt naschval zmanipulovane a potom mas krasny buffer overflow.
Pro zobrazení všech 2 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře