| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474 |
- /*************************************************************************************
- Extended WPF Toolkit
- Copyright (C) 2007-2013 Xceed Software Inc.
- This program is provided to you under the terms of the Microsoft Public
- License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
- For more features, controls, and fast professional support,
- pick up the Plus Edition at http://xceed.com/wpf_toolkit
- Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
- ***********************************************************************************/
- /**************************************************************************\
- Copyright Microsoft Corporation. All Rights Reserved.
- \**************************************************************************/
- namespace Standard
- {
- using System;
- using System.ComponentModel;
- using System.Diagnostics.CodeAnalysis;
- using System.IO;
- using System.Runtime.ConstrainedExecution;
- using System.Runtime.InteropServices;
- using System.Runtime.InteropServices.ComTypes;
- using System.Security.Permissions;
- using System.Text;
- using Microsoft.Win32.SafeHandles;
- // Some COM interfaces and Win32 structures are already declared in the framework.
- // Interesting ones to remember in System.Runtime.InteropServices.ComTypes are:
- using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;
- using IPersistFile = System.Runtime.InteropServices.ComTypes.IPersistFile;
- using IStream = System.Runtime.InteropServices.ComTypes.IStream;
- #region Native Values
- internal static class Win32Value
- {
- public const uint MAX_PATH = 260;
- public const uint INFOTIPSIZE = 1024;
- public const uint TRUE = 1;
- public const uint FALSE = 0;
- public const uint sizeof_WCHAR = 2;
- public const uint sizeof_CHAR = 1;
- public const uint sizeof_BOOL = 4;
- }
- /// <summary>
- /// HIGHCONTRAST flags
- /// </summary>
- [Flags]
- internal enum HCF
- {
- HIGHCONTRASTON = 0x00000001,
- AVAILABLE = 0x00000002,
- HOTKEYACTIVE = 0x00000004,
- CONFIRMHOTKEY = 0x00000008,
- HOTKEYSOUND = 0x00000010,
- INDICATOR = 0x00000020,
- HOTKEYAVAILABLE = 0x00000040,
- }
- /// <summary>
- /// BITMAPINFOHEADER Compression type. BI_*.
- /// </summary>
- internal enum BI
- {
- RGB = 0,
- }
- /// <summary>
- /// CombingRgn flags. RGN_*
- /// </summary>
- internal enum RGN
- {
- /// <summary>
- /// Creates the intersection of the two combined regions.
- /// </summary>
- AND = 1,
- /// <summary>
- /// Creates the union of two combined regions.
- /// </summary>
- OR = 2,
- /// <summary>
- /// Creates the union of two combined regions except for any overlapping areas.
- /// </summary>
- XOR = 3,
- /// <summary>
- /// Combines the parts of hrgnSrc1 that are not part of hrgnSrc2.
- /// </summary>
- DIFF = 4,
- /// <summary>
- /// Creates a copy of the region identified by hrgnSrc1.
- /// </summary>
- COPY = 5,
- }
- internal enum CombineRgnResult
- {
- ERROR = 0,
- NULLREGION = 1,
- SIMPLEREGION = 2,
- COMPLEXREGION = 3,
- }
- /// <summary>
- /// For IWebBrowser2. OLECMDEXECOPT_*
- /// </summary>
- internal enum OLECMDEXECOPT
- {
- DODEFAULT = 0,
- PROMPTUSER = 1,
- DONTPROMPTUSER = 2,
- SHOWHELP = 3
- }
- /// <summary>
- /// For IWebBrowser2. OLECMDF_*
- /// </summary>
- internal enum OLECMDF
- {
- SUPPORTED = 1,
- ENABLED = 2,
- LATCHED = 4,
- NINCHED = 8,
- INVISIBLE = 16,
- DEFHIDEONCTXTMENU = 32
- }
- /// <summary>
- /// For IWebBrowser2. OLECMDID_*
- /// </summary>
- internal enum OLECMDID
- {
- OPEN = 1,
- NEW = 2,
- SAVE = 3,
- SAVEAS = 4,
- SAVECOPYAS = 5,
- PRINT = 6,
- PRINTPREVIEW = 7,
- PAGESETUP = 8,
- SPELL = 9,
- PROPERTIES = 10,
- CUT = 11,
- COPY = 12,
- PASTE = 13,
- PASTESPECIAL = 14,
- UNDO = 15,
- REDO = 16,
- SELECTALL = 17,
- CLEARSELECTION = 18,
- ZOOM = 19,
- GETZOOMRANGE = 20,
- UPDATECOMMANDS = 21,
- REFRESH = 22,
- STOP = 23,
- HIDETOOLBARS = 24,
- SETPROGRESSMAX = 25,
- SETPROGRESSPOS = 26,
- SETPROGRESSTEXT = 27,
- SETTITLE = 28,
- SETDOWNLOADSTATE = 29,
- STOPDOWNLOAD = 30,
- ONTOOLBARACTIVATED = 31,
- FIND = 32,
- DELETE = 33,
- HTTPEQUIV = 34,
- HTTPEQUIV_DONE = 35,
- ENABLE_INTERACTION = 36,
- ONUNLOAD = 37,
- PROPERTYBAG2 = 38,
- PREREFRESH = 39,
- SHOWSCRIPTERROR = 40,
- SHOWMESSAGE = 41,
- SHOWFIND = 42,
- SHOWPAGESETUP = 43,
- SHOWPRINT = 44,
- CLOSE = 45,
- ALLOWUILESSSAVEAS = 46,
- DONTDOWNLOADCSS = 47,
- UPDATEPAGESTATUS = 48,
- PRINT2 = 49,
- PRINTPREVIEW2 = 50,
- SETPRINTTEMPLATE = 51,
- GETPRINTTEMPLATE = 52,
- PAGEACTIONBLOCKED = 55,
- PAGEACTIONUIQUERY = 56,
- FOCUSVIEWCONTROLS = 57,
- FOCUSVIEWCONTROLSQUERY = 58,
- SHOWPAGEACTIONMENU = 59
- }
- /// <summary>
- /// For IWebBrowser2. READYSTATE_*
- /// </summary>
- enum READYSTATE
- {
- UNINITIALIZED = 0,
- LOADING = 1,
- LOADED = 2,
- INTERACTIVE = 3,
- COMPLETE = 4
- }
- /// <summary>
- /// DATAOBJ_GET_ITEM_FLAGS. DOGIF_*.
- /// </summary>
- internal enum DOGIF
- {
- DEFAULT = 0x0000,
- TRAVERSE_LINK = 0x0001, // if the item is a link get the target
- NO_HDROP = 0x0002, // don't fallback and use CF_HDROP clipboard format
- NO_URL = 0x0004, // don't fallback and use URL clipboard format
- ONLY_IF_ONE = 0x0008, // only return the item if there is one item in the array
- }
- internal enum DWM_SIT
- {
- None,
- DISPLAYFRAME = 1,
- }
- [Flags]
- internal enum ErrorModes
- {
- /// <summary>Use the system default, which is to display all error dialog boxes.</summary>
- Default = 0x0,
- /// <summary>
- /// The system does not display the critical-error-handler message box.
- /// Instead, the system sends the error to the calling process.
- /// </summary>
- FailCriticalErrors = 0x1,
- /// <summary>
- /// 64-bit Windows: The system automatically fixes memory alignment faults and makes them
- /// invisible to the application. It does this for the calling process and any descendant processes.
- /// After this value is set for a process, subsequent attempts to clear the value are ignored.
- /// </summary>
- NoGpFaultErrorBox = 0x2,
- /// <summary>
- /// The system does not display the general-protection-fault message box.
- /// This flag should only be set by debugging applications that handle general
- /// protection (GP) faults themselves with an exception handler.
- /// </summary>
- NoAlignmentFaultExcept = 0x4,
- /// <summary>
- /// The system does not display a message box when it fails to find a file.
- /// Instead, the error is returned to the calling process.
- /// </summary>
- NoOpenFileErrorBox = 0x8000
- }
- /// <summary>
- /// Non-client hit test values, HT*
- /// </summary>
- internal enum HT
- {
- ERROR = -2,
- TRANSPARENT = -1,
- NOWHERE = 0,
- CLIENT = 1,
- CAPTION = 2,
- SYSMENU = 3,
- GROWBOX = 4,
- SIZE = GROWBOX,
- MENU = 5,
- HSCROLL = 6,
- VSCROLL = 7,
- MINBUTTON = 8,
- MAXBUTTON = 9,
- LEFT = 10,
- RIGHT = 11,
- TOP = 12,
- TOPLEFT = 13,
- TOPRIGHT = 14,
- BOTTOM = 15,
- BOTTOMLEFT = 16,
- BOTTOMRIGHT = 17,
- BORDER = 18,
- REDUCE = MINBUTTON,
- ZOOM = MAXBUTTON,
- SIZEFIRST = LEFT,
- SIZELAST = BOTTOMRIGHT,
- OBJECT = 19,
- CLOSE = 20,
- HELP = 21
- }
- /// <summary>
- /// GetClassLongPtr values, GCLP_*
- /// </summary>
- internal enum GCLP
- {
- HBRBACKGROUND = -10,
- }
- /// <summary>
- /// GetWindowLongPtr values, GWL_*
- /// </summary>
- internal enum GWL
- {
- WNDPROC = (-4),
- HINSTANCE = (-6),
- HWNDPARENT = (-8),
- STYLE = (-16),
- EXSTYLE = (-20),
- USERDATA = (-21),
- ID = (-12)
- }
- /// <summary>
- /// SystemMetrics. SM_*
- /// </summary>
- internal enum SM
- {
- CXSCREEN = 0,
- CYSCREEN = 1,
- CXVSCROLL = 2,
- CYHSCROLL = 3,
- CYCAPTION = 4,
- CXBORDER = 5,
- CYBORDER = 6,
- CXFIXEDFRAME = 7,
- CYFIXEDFRAME = 8,
- CYVTHUMB = 9,
- CXHTHUMB = 10,
- CXICON = 11,
- CYICON = 12,
- CXCURSOR = 13,
- CYCURSOR = 14,
- CYMENU = 15,
- CXFULLSCREEN = 16,
- CYFULLSCREEN = 17,
- CYKANJIWINDOW = 18,
- MOUSEPRESENT = 19,
- CYVSCROLL = 20,
- CXHSCROLL = 21,
- DEBUG = 22,
- SWAPBUTTON = 23,
- CXMIN = 28,
- CYMIN = 29,
- CXSIZE = 30,
- CYSIZE = 31,
- CXFRAME = 32,
- CXSIZEFRAME = CXFRAME,
- CYFRAME = 33,
- CYSIZEFRAME = CYFRAME,
- CXMINTRACK = 34,
- CYMINTRACK = 35,
- CXDOUBLECLK = 36,
- CYDOUBLECLK = 37,
- CXICONSPACING = 38,
- CYICONSPACING = 39,
- MENUDROPALIGNMENT = 40,
- PENWINDOWS = 41,
- DBCSENABLED = 42,
- CMOUSEBUTTONS = 43,
- SECURE = 44,
- CXEDGE = 45,
- CYEDGE = 46,
- CXMINSPACING = 47,
- CYMINSPACING = 48,
- CXSMICON = 49,
- CYSMICON = 50,
- CYSMCAPTION = 51,
- CXSMSIZE = 52,
- CYSMSIZE = 53,
- CXMENUSIZE = 54,
- CYMENUSIZE = 55,
- ARRANGE = 56,
- CXMINIMIZED = 57,
- CYMINIMIZED = 58,
- CXMAXTRACK = 59,
- CYMAXTRACK = 60,
- CXMAXIMIZED = 61,
- CYMAXIMIZED = 62,
- NETWORK = 63,
- CLEANBOOT = 67,
- CXDRAG = 68,
- CYDRAG = 69,
- SHOWSOUNDS = 70,
- CXMENUCHECK = 71,
- CYMENUCHECK = 72,
- SLOWMACHINE = 73,
- MIDEASTENABLED = 74,
- MOUSEWHEELPRESENT = 75,
- XVIRTUALSCREEN = 76,
- YVIRTUALSCREEN = 77,
- CXVIRTUALSCREEN = 78,
- CYVIRTUALSCREEN = 79,
- CMONITORS = 80,
- SAMEDISPLAYFORMAT = 81,
- IMMENABLED = 82,
- CXFOCUSBORDER = 83,
- CYFOCUSBORDER = 84,
- TABLETPC = 86,
- MEDIACENTER = 87,
- REMOTESESSION = 0x1000,
- REMOTECONTROL = 0x2001,
- }
- /// <summary>
- /// SystemParameterInfo values, SPI_*
- /// </summary>
- internal enum SPI
- {
- GETBEEP = 0x0001,
- SETBEEP = 0x0002,
- GETMOUSE = 0x0003,
- SETMOUSE = 0x0004,
- GETBORDER = 0x0005,
- SETBORDER = 0x0006,
- GETKEYBOARDSPEED = 0x000A,
- SETKEYBOARDSPEED = 0x000B,
- LANGDRIVER = 0x000C,
- ICONHORIZONTALSPACING = 0x000D,
- GETSCREENSAVETIMEOUT = 0x000E,
- SETSCREENSAVETIMEOUT = 0x000F,
- GETSCREENSAVEACTIVE = 0x0010,
- SETSCREENSAVEACTIVE = 0x0011,
- GETGRIDGRANULARITY = 0x0012,
- SETGRIDGRANULARITY = 0x0013,
- SETDESKWALLPAPER = 0x0014,
- SETDESKPATTERN = 0x0015,
- GETKEYBOARDDELAY = 0x0016,
- SETKEYBOARDDELAY = 0x0017,
- ICONVERTICALSPACING = 0x0018,
- GETICONTITLEWRAP = 0x0019,
- SETICONTITLEWRAP = 0x001A,
- GETMENUDROPALIGNMENT = 0x001B,
- SETMENUDROPALIGNMENT = 0x001C,
- SETDOUBLECLKWIDTH = 0x001D,
- SETDOUBLECLKHEIGHT = 0x001E,
- GETICONTITLELOGFONT = 0x001F,
- SETDOUBLECLICKTIME = 0x0020,
- SETMOUSEBUTTONSWAP = 0x0021,
- SETICONTITLELOGFONT = 0x0022,
- GETFASTTASKSWITCH = 0x0023,
- SETFASTTASKSWITCH = 0x0024,
- SETDRAGFULLWINDOWS = 0x0025,
- GETDRAGFULLWINDOWS = 0x0026,
- GETNONCLIENTMETRICS = 0x0029,
- SETNONCLIENTMETRICS = 0x002A,
- GETMINIMIZEDMETRICS = 0x002B,
- SETMINIMIZEDMETRICS = 0x002C,
- GETICONMETRICS = 0x002D,
- SETICONMETRICS = 0x002E,
- SETWORKAREA = 0x002F,
- GETWORKAREA = 0x0030,
- SETPENWINDOWS = 0x0031,
- GETHIGHCONTRAST = 0x0042,
- SETHIGHCONTRAST = 0x0043,
- GETKEYBOARDPREF = 0x0044,
- SETKEYBOARDPREF = 0x0045,
- GETSCREENREADER = 0x0046,
- SETSCREENREADER = 0x0047,
- GETANIMATION = 0x0048,
- SETANIMATION = 0x0049,
- GETFONTSMOOTHING = 0x004A,
- SETFONTSMOOTHING = 0x004B,
- SETDRAGWIDTH = 0x004C,
- SETDRAGHEIGHT = 0x004D,
- SETHANDHELD = 0x004E,
- GETLOWPOWERTIMEOUT = 0x004F,
- GETPOWEROFFTIMEOUT = 0x0050,
- SETLOWPOWERTIMEOUT = 0x0051,
- SETPOWEROFFTIMEOUT = 0x0052,
- GETLOWPOWERACTIVE = 0x0053,
- GETPOWEROFFACTIVE = 0x0054,
- SETLOWPOWERACTIVE = 0x0055,
- SETPOWEROFFACTIVE = 0x0056,
- SETCURSORS = 0x0057,
- SETICONS = 0x0058,
- GETDEFAULTINPUTLANG = 0x0059,
- SETDEFAULTINPUTLANG = 0x005A,
- SETLANGTOGGLE = 0x005B,
- GETWINDOWSEXTENSION = 0x005C,
- SETMOUSETRAILS = 0x005D,
- GETMOUSETRAILS = 0x005E,
- SETSCREENSAVERRUNNING = 0x0061,
- SCREENSAVERRUNNING = SETSCREENSAVERRUNNING,
- GETFILTERKEYS = 0x0032,
- SETFILTERKEYS = 0x0033,
- GETTOGGLEKEYS = 0x0034,
- SETTOGGLEKEYS = 0x0035,
- GETMOUSEKEYS = 0x0036,
- SETMOUSEKEYS = 0x0037,
- GETSHOWSOUNDS = 0x0038,
- SETSHOWSOUNDS = 0x0039,
- GETSTICKYKEYS = 0x003A,
- SETSTICKYKEYS = 0x003B,
- GETACCESSTIMEOUT = 0x003C,
- SETACCESSTIMEOUT = 0x003D,
- GETSERIALKEYS = 0x003E,
- SETSERIALKEYS = 0x003F,
- GETSOUNDSENTRY = 0x0040,
- SETSOUNDSENTRY = 0x0041,
- GETSNAPTODEFBUTTON = 0x005F,
- SETSNAPTODEFBUTTON = 0x0060,
- GETMOUSEHOVERWIDTH = 0x0062,
- SETMOUSEHOVERWIDTH = 0x0063,
- GETMOUSEHOVERHEIGHT = 0x0064,
- SETMOUSEHOVERHEIGHT = 0x0065,
- GETMOUSEHOVERTIME = 0x0066,
- SETMOUSEHOVERTIME = 0x0067,
- GETWHEELSCROLLLINES = 0x0068,
- SETWHEELSCROLLLINES = 0x0069,
- GETMENUSHOWDELAY = 0x006A,
- SETMENUSHOWDELAY = 0x006B,
- GETWHEELSCROLLCHARS = 0x006C,
- SETWHEELSCROLLCHARS = 0x006D,
- GETSHOWIMEUI = 0x006E,
- SETSHOWIMEUI = 0x006F,
- GETMOUSESPEED = 0x0070,
- SETMOUSESPEED = 0x0071,
- GETSCREENSAVERRUNNING = 0x0072,
- GETDESKWALLPAPER = 0x0073,
- GETAUDIODESCRIPTION = 0x0074,
- SETAUDIODESCRIPTION = 0x0075,
- GETSCREENSAVESECURE = 0x0076,
- SETSCREENSAVESECURE = 0x0077,
- GETHUNGAPPTIMEOUT = 0x0078,
- SETHUNGAPPTIMEOUT = 0x0079,
- GETWAITTOKILLTIMEOUT = 0x007A,
- SETWAITTOKILLTIMEOUT = 0x007B,
- GETWAITTOKILLSERVICETIMEOUT = 0x007C,
- SETWAITTOKILLSERVICETIMEOUT = 0x007D,
- GETMOUSEDOCKTHRESHOLD = 0x007E,
- SETMOUSEDOCKTHRESHOLD = 0x007F,
- GETPENDOCKTHRESHOLD = 0x0080,
- SETPENDOCKTHRESHOLD = 0x0081,
- GETWINARRANGING = 0x0082,
- SETWINARRANGING = 0x0083,
- GETMOUSEDRAGOUTTHRESHOLD = 0x0084,
- SETMOUSEDRAGOUTTHRESHOLD = 0x0085,
- GETPENDRAGOUTTHRESHOLD = 0x0086,
- SETPENDRAGOUTTHRESHOLD = 0x0087,
- GETMOUSESIDEMOVETHRESHOLD = 0x0088,
- SETMOUSESIDEMOVETHRESHOLD = 0x0089,
- GETPENSIDEMOVETHRESHOLD = 0x008A,
- SETPENSIDEMOVETHRESHOLD = 0x008B,
- GETDRAGFROMMAXIMIZE = 0x008C,
- SETDRAGFROMMAXIMIZE = 0x008D,
- GETSNAPSIZING = 0x008E,
- SETSNAPSIZING = 0x008F,
- GETDOCKMOVING = 0x0090,
- SETDOCKMOVING = 0x0091,
- GETACTIVEWINDOWTRACKING = 0x1000,
- SETACTIVEWINDOWTRACKING = 0x1001,
- GETMENUANIMATION = 0x1002,
- SETMENUANIMATION = 0x1003,
- GETCOMBOBOXANIMATION = 0x1004,
- SETCOMBOBOXANIMATION = 0x1005,
- GETLISTBOXSMOOTHSCROLLING = 0x1006,
- SETLISTBOXSMOOTHSCROLLING = 0x1007,
- GETGRADIENTCAPTIONS = 0x1008,
- SETGRADIENTCAPTIONS = 0x1009,
- GETKEYBOARDCUES = 0x100A,
- SETKEYBOARDCUES = 0x100B,
- GETMENUUNDERLINES = GETKEYBOARDCUES,
- SETMENUUNDERLINES = SETKEYBOARDCUES,
- GETACTIVEWNDTRKZORDER = 0x100C,
- SETACTIVEWNDTRKZORDER = 0x100D,
- GETHOTTRACKING = 0x100E,
- SETHOTTRACKING = 0x100F,
- GETMENUFADE = 0x1012,
- SETMENUFADE = 0x1013,
- GETSELECTIONFADE = 0x1014,
- SETSELECTIONFADE = 0x1015,
- GETTOOLTIPANIMATION = 0x1016,
- SETTOOLTIPANIMATION = 0x1017,
- GETTOOLTIPFADE = 0x1018,
- SETTOOLTIPFADE = 0x1019,
- GETCURSORSHADOW = 0x101A,
- SETCURSORSHADOW = 0x101B,
- GETMOUSESONAR = 0x101C,
- SETMOUSESONAR = 0x101D,
- GETMOUSECLICKLOCK = 0x101E,
- SETMOUSECLICKLOCK = 0x101F,
- GETMOUSEVANISH = 0x1020,
- SETMOUSEVANISH = 0x1021,
- GETFLATMENU = 0x1022,
- SETFLATMENU = 0x1023,
- GETDROPSHADOW = 0x1024,
- SETDROPSHADOW = 0x1025,
- GETBLOCKSENDINPUTRESETS = 0x1026,
- SETBLOCKSENDINPUTRESETS = 0x1027,
- GETUIEFFECTS = 0x103E,
- SETUIEFFECTS = 0x103F,
- GETDISABLEOVERLAPPEDCONTENT = 0x1040,
- SETDISABLEOVERLAPPEDCONTENT = 0x1041,
- GETCLIENTAREAANIMATION = 0x1042,
- SETCLIENTAREAANIMATION = 0x1043,
- GETCLEARTYPE = 0x1048,
- SETCLEARTYPE = 0x1049,
- GETSPEECHRECOGNITION = 0x104A,
- SETSPEECHRECOGNITION = 0x104B,
- GETFOREGROUNDLOCKTIMEOUT = 0x2000,
- SETFOREGROUNDLOCKTIMEOUT = 0x2001,
- GETACTIVEWNDTRKTIMEOUT = 0x2002,
- SETACTIVEWNDTRKTIMEOUT = 0x2003,
- GETFOREGROUNDFLASHCOUNT = 0x2004,
- SETFOREGROUNDFLASHCOUNT = 0x2005,
- GETCARETWIDTH = 0x2006,
- SETCARETWIDTH = 0x2007,
- GETMOUSECLICKLOCKTIME = 0x2008,
- SETMOUSECLICKLOCKTIME = 0x2009,
- GETFONTSMOOTHINGTYPE = 0x200A,
- SETFONTSMOOTHINGTYPE = 0x200B,
- GETFONTSMOOTHINGCONTRAST = 0x200C,
- SETFONTSMOOTHINGCONTRAST = 0x200D,
- GETFOCUSBORDERWIDTH = 0x200E,
- SETFOCUSBORDERWIDTH = 0x200F,
- GETFOCUSBORDERHEIGHT = 0x2010,
- SETFOCUSBORDERHEIGHT = 0x2011,
- GETFONTSMOOTHINGORIENTATION = 0x2012,
- SETFONTSMOOTHINGORIENTATION = 0x2013,
- GETMINIMUMHITRADIUS = 0x2014,
- SETMINIMUMHITRADIUS = 0x2015,
- GETMESSAGEDURATION = 0x2016,
- SETMESSAGEDURATION = 0x2017,
- }
- /// <summary>
- /// SystemParameterInfo flag values, SPIF_*
- /// </summary>
- [Flags]
- internal enum SPIF
- {
- None = 0,
- UPDATEINIFILE = 0x01,
- SENDCHANGE = 0x02,
- SENDWININICHANGE = SENDCHANGE,
- }
- [Flags]
- internal enum STATE_SYSTEM
- {
- UNAVAILABLE = 0x00000001, // Disabled
- SELECTED = 0x00000002,
- FOCUSED = 0x00000004,
- PRESSED = 0x00000008,
- CHECKED = 0x00000010,
- MIXED = 0x00000020, // 3-state checkbox or toolbar button
- INDETERMINATE = MIXED,
- READONLY = 0x00000040,
- HOTTRACKED = 0x00000080,
- DEFAULT = 0x00000100,
- EXPANDED = 0x00000200,
- COLLAPSED = 0x00000400,
- BUSY = 0x00000800,
- FLOATING = 0x00001000, // Children "owned" not "contained" by parent
- MARQUEED = 0x00002000,
- ANIMATED = 0x00004000,
- INVISIBLE = 0x00008000,
- OFFSCREEN = 0x00010000,
- SIZEABLE = 0x00020000,
- MOVEABLE = 0x00040000,
- SELFVOICING = 0x00080000,
- FOCUSABLE = 0x00100000,
- SELECTABLE = 0x00200000,
- LINKED = 0x00400000,
- TRAVERSED = 0x00800000,
- MULTISELECTABLE = 0x01000000, // Supports multiple selection
- EXTSELECTABLE = 0x02000000, // Supports extended selection
- ALERT_LOW = 0x04000000, // This information is of low priority
- ALERT_MEDIUM = 0x08000000, // This information is of medium priority
- ALERT_HIGH = 0x10000000, // This information is of high priority
- PROTECTED = 0x20000000, // access to this is restricted
- VALID = 0x3FFFFFFF,
- }
- internal enum StockObject : int
- {
- WHITE_BRUSH = 0,
- LTGRAY_BRUSH = 1,
- GRAY_BRUSH = 2,
- DKGRAY_BRUSH = 3,
- BLACK_BRUSH = 4,
- NULL_BRUSH = 5,
- HOLLOW_BRUSH = NULL_BRUSH,
- WHITE_PEN = 6,
- BLACK_PEN = 7,
- NULL_PEN = 8,
- SYSTEM_FONT = 13,
- DEFAULT_PALETTE = 15,
- }
- /// <summary>
- /// CS_*
- /// </summary>
- [Flags]
- internal enum CS : uint
- {
- VREDRAW = 0x0001,
- HREDRAW = 0x0002,
- DBLCLKS = 0x0008,
- OWNDC = 0x0020,
- CLASSDC = 0x0040,
- PARENTDC = 0x0080,
- NOCLOSE = 0x0200,
- SAVEBITS = 0x0800,
- BYTEALIGNCLIENT = 0x1000,
- BYTEALIGNWINDOW = 0x2000,
- GLOBALCLASS = 0x4000,
- IME = 0x00010000,
- DROPSHADOW = 0x00020000
- }
- /// <summary>
- /// WindowStyle values, WS_*
- /// </summary>
- [Flags]
- internal enum WS : uint
- {
- OVERLAPPED = 0x00000000,
- POPUP = 0x80000000,
- CHILD = 0x40000000,
- MINIMIZE = 0x20000000,
- VISIBLE = 0x10000000,
- DISABLED = 0x08000000,
- CLIPSIBLINGS = 0x04000000,
- CLIPCHILDREN = 0x02000000,
- MAXIMIZE = 0x01000000,
- BORDER = 0x00800000,
- DLGFRAME = 0x00400000,
- VSCROLL = 0x00200000,
- HSCROLL = 0x00100000,
- SYSMENU = 0x00080000,
- THICKFRAME = 0x00040000,
- GROUP = 0x00020000,
- TABSTOP = 0x00010000,
- MINIMIZEBOX = 0x00020000,
- MAXIMIZEBOX = 0x00010000,
- CAPTION = BORDER | DLGFRAME,
- TILED = OVERLAPPED,
- ICONIC = MINIMIZE,
- SIZEBOX = THICKFRAME,
- TILEDWINDOW = OVERLAPPEDWINDOW,
- OVERLAPPEDWINDOW = OVERLAPPED | CAPTION | SYSMENU | THICKFRAME | MINIMIZEBOX | MAXIMIZEBOX,
- POPUPWINDOW = POPUP | BORDER | SYSMENU,
- CHILDWINDOW = CHILD,
- }
- /// <summary>
- /// Window message values, WM_*
- /// </summary>
- internal enum WM
- {
- NULL = 0x0000,
- CREATE = 0x0001,
- DESTROY = 0x0002,
- MOVE = 0x0003,
- SIZE = 0x0005,
- ACTIVATE = 0x0006,
- SETFOCUS = 0x0007,
- KILLFOCUS = 0x0008,
- ENABLE = 0x000A,
- SETREDRAW = 0x000B,
- SETTEXT = 0x000C,
- GETTEXT = 0x000D,
- GETTEXTLENGTH = 0x000E,
- PAINT = 0x000F,
- CLOSE = 0x0010,
- QUERYENDSESSION = 0x0011,
- QUIT = 0x0012,
- QUERYOPEN = 0x0013,
- ERASEBKGND = 0x0014,
- SYSCOLORCHANGE = 0x0015,
- SHOWWINDOW = 0x0018,
- CTLCOLOR = 0x0019,
- WININICHANGE = 0x001A,
- SETTINGCHANGE = 0x001A,
- ACTIVATEAPP = 0x001C,
- SETCURSOR = 0x0020,
- MOUSEACTIVATE = 0x0021,
- CHILDACTIVATE = 0x0022,
- QUEUESYNC = 0x0023,
- GETMINMAXINFO = 0x0024,
- WINDOWPOSCHANGING = 0x0046,
- WINDOWPOSCHANGED = 0x0047,
- CONTEXTMENU = 0x007B,
- STYLECHANGING = 0x007C,
- STYLECHANGED = 0x007D,
- DISPLAYCHANGE = 0x007E,
- GETICON = 0x007F,
- SETICON = 0x0080,
- NCCREATE = 0x0081,
- NCDESTROY = 0x0082,
- NCCALCSIZE = 0x0083,
- NCHITTEST = 0x0084,
- NCPAINT = 0x0085,
- NCACTIVATE = 0x0086,
- GETDLGCODE = 0x0087,
- SYNCPAINT = 0x0088,
- NCMOUSEMOVE = 0x00A0,
- NCLBUTTONDOWN = 0x00A1,
- NCLBUTTONUP = 0x00A2,
- NCLBUTTONDBLCLK = 0x00A3,
- NCRBUTTONDOWN = 0x00A4,
- NCRBUTTONUP = 0x00A5,
- NCRBUTTONDBLCLK = 0x00A6,
- NCMBUTTONDOWN = 0x00A7,
- NCMBUTTONUP = 0x00A8,
- NCMBUTTONDBLCLK = 0x00A9,
- SYSKEYDOWN = 0x0104,
- SYSKEYUP = 0x0105,
- SYSCHAR = 0x0106,
- SYSDEADCHAR = 0x0107,
- COMMAND = 0x0111,
- SYSCOMMAND = 0x0112,
- MOUSEMOVE = 0x0200,
- LBUTTONDOWN = 0x0201,
- LBUTTONUP = 0x0202,
- LBUTTONDBLCLK = 0x0203,
- RBUTTONDOWN = 0x0204,
- RBUTTONUP = 0x0205,
- RBUTTONDBLCLK = 0x0206,
- MBUTTONDOWN = 0x0207,
- MBUTTONUP = 0x0208,
- MBUTTONDBLCLK = 0x0209,
- MOUSEWHEEL = 0x020A,
- XBUTTONDOWN = 0x020B,
- XBUTTONUP = 0x020C,
- XBUTTONDBLCLK = 0x020D,
- MOUSEHWHEEL = 0x020E,
- PARENTNOTIFY = 0x0210,
- CAPTURECHANGED = 0x0215,
- POWERBROADCAST = 0x0218,
- DEVICECHANGE = 0x0219,
- ENTERSIZEMOVE = 0x0231,
- EXITSIZEMOVE = 0x0232,
- IME_SETCONTEXT = 0x0281,
- IME_NOTIFY = 0x0282,
- IME_CONTROL = 0x0283,
- IME_COMPOSITIONFULL = 0x0284,
- IME_SELECT = 0x0285,
- IME_CHAR = 0x0286,
- IME_REQUEST = 0x0288,
- IME_KEYDOWN = 0x0290,
- IME_KEYUP = 0x0291,
- NCMOUSELEAVE = 0x02A2,
- TABLET_DEFBASE = 0x02C0,
- //WM_TABLET_MAXOFFSET = 0x20,
- TABLET_ADDED = TABLET_DEFBASE + 8,
- TABLET_DELETED = TABLET_DEFBASE + 9,
- TABLET_FLICK = TABLET_DEFBASE + 11,
- TABLET_QUERYSYSTEMGESTURESTATUS = TABLET_DEFBASE + 12,
- CUT = 0x0300,
- COPY = 0x0301,
- PASTE = 0x0302,
- CLEAR = 0x0303,
- UNDO = 0x0304,
- RENDERFORMAT = 0x0305,
- RENDERALLFORMATS = 0x0306,
- DESTROYCLIPBOARD = 0x0307,
- DRAWCLIPBOARD = 0x0308,
- PAINTCLIPBOARD = 0x0309,
- VSCROLLCLIPBOARD = 0x030A,
- SIZECLIPBOARD = 0x030B,
- ASKCBFORMATNAME = 0x030C,
- CHANGECBCHAIN = 0x030D,
- HSCROLLCLIPBOARD = 0x030E,
- QUERYNEWPALETTE = 0x030F,
- PALETTEISCHANGING = 0x0310,
- PALETTECHANGED = 0x0311,
- HOTKEY = 0x0312,
- PRINT = 0x0317,
- PRINTCLIENT = 0x0318,
- APPCOMMAND = 0x0319,
- THEMECHANGED = 0x031A,
- DWMCOMPOSITIONCHANGED = 0x031E,
- DWMNCRENDERINGCHANGED = 0x031F,
- DWMCOLORIZATIONCOLORCHANGED = 0x0320,
- DWMWINDOWMAXIMIZEDCHANGE = 0x0321,
- GETTITLEBARINFOEX = 0x033F,
- #region Windows 7
- DWMSENDICONICTHUMBNAIL = 0x0323,
- DWMSENDICONICLIVEPREVIEWBITMAP = 0x0326,
- #endregion
- USER = 0x0400,
- // This is the hard-coded message value used by WinForms for Shell_NotifyIcon.
- // It's relatively safe to reuse.
- TRAYMOUSEMESSAGE = 0x800, //WM_USER + 1024
- APP = 0x8000,
- }
- /// <summary>
- /// Window style extended values, WS_EX_*
- /// </summary>
- [Flags]
- internal enum WS_EX : uint
- {
- None = 0,
- DLGMODALFRAME = 0x00000001,
- NOPARENTNOTIFY = 0x00000004,
- TOPMOST = 0x00000008,
- ACCEPTFILES = 0x00000010,
- TRANSPARENT = 0x00000020,
- MDICHILD = 0x00000040,
- TOOLWINDOW = 0x00000080,
- WINDOWEDGE = 0x00000100,
- CLIENTEDGE = 0x00000200,
- CONTEXTHELP = 0x00000400,
- RIGHT = 0x00001000,
- LEFT = 0x00000000,
- RTLREADING = 0x00002000,
- LTRREADING = 0x00000000,
- LEFTSCROLLBAR = 0x00004000,
- RIGHTSCROLLBAR = 0x00000000,
- CONTROLPARENT = 0x00010000,
- STATICEDGE = 0x00020000,
- APPWINDOW = 0x00040000,
- LAYERED = 0x00080000,
- NOINHERITLAYOUT = 0x00100000, // Disable inheritence of mirroring by children
- LAYOUTRTL = 0x00400000, // Right to left mirroring
- COMPOSITED = 0x02000000,
- NOACTIVATE = 0x08000000,
- OVERLAPPEDWINDOW = (WINDOWEDGE | CLIENTEDGE),
- PALETTEWINDOW = (WINDOWEDGE | TOOLWINDOW | TOPMOST),
- }
- /// <summary>
- /// GetDeviceCaps nIndex values.
- /// </summary>
- internal enum DeviceCap
- {
- /// <summary>Number of bits per pixel
- /// </summary>
- BITSPIXEL = 12,
- /// <summary>
- /// Number of planes
- /// </summary>
- PLANES = 14,
- /// <summary>
- /// Logical pixels inch in X
- /// </summary>
- LOGPIXELSX = 88,
- /// <summary>
- /// Logical pixels inch in Y
- /// </summary>
- LOGPIXELSY = 90,
- }
- internal enum FO : int
- {
- MOVE = 0x0001,
- COPY = 0x0002,
- DELETE = 0x0003,
- RENAME = 0x0004,
- }
- /// <summary>
- /// "FILEOP_FLAGS", FOF_*.
- /// </summary>
- internal enum FOF : ushort
- {
- MULTIDESTFILES = 0x0001,
- CONFIRMMOUSE = 0x0002,
- SILENT = 0x0004,
- RENAMEONCOLLISION = 0x0008,
- NOCONFIRMATION = 0x0010,
- WANTMAPPINGHANDLE = 0x0020,
- ALLOWUNDO = 0x0040,
- FILESONLY = 0x0080,
- SIMPLEPROGRESS = 0x0100,
- NOCONFIRMMKDIR = 0x0200,
- NOERRORUI = 0x0400,
- NOCOPYSECURITYATTRIBS = 0x0800,
- NORECURSION = 0x1000,
- NO_CONNECTED_ELEMENTS = 0x2000,
- WANTNUKEWARNING = 0x4000,
- NORECURSEREPARSE = 0x8000,
- }
- /// <summary>
- /// EnableMenuItem uEnable values, MF_*
- /// </summary>
- [Flags]
- internal enum MF : uint
- {
- /// <summary>
- /// Possible return value for EnableMenuItem
- /// </summary>
- DOES_NOT_EXIST = unchecked((uint)-1),
- ENABLED = 0,
- BYCOMMAND = 0,
- GRAYED = 1,
- DISABLED = 2,
- }
- /// <summary>Specifies the type of visual style attribute to set on a window.</summary>
- internal enum WINDOWTHEMEATTRIBUTETYPE : uint
- {
- /// <summary>Non-client area window attributes will be set.</summary>
- WTA_NONCLIENT = 1,
- }
- /// <summary>
- /// DWMFLIP3DWINDOWPOLICY. DWMFLIP3D_*
- /// </summary>
- internal enum DWMFLIP3D
- {
- DEFAULT,
- EXCLUDEBELOW,
- EXCLUDEABOVE,
- //LAST
- }
- /// <summary>
- /// DWMNCRENDERINGPOLICY. DWMNCRP_*
- /// </summary>
- internal enum DWMNCRP
- {
- USEWINDOWSTYLE,
- DISABLED,
- ENABLED,
- //LAST
- }
- /// <summary>
- /// DWMWINDOWATTRIBUTE. DWMWA_*
- /// </summary>
- internal enum DWMWA
- {
- NCRENDERING_ENABLED = 1,
- NCRENDERING_POLICY,
- TRANSITIONS_FORCEDISABLED,
- ALLOW_NCPAINT,
- CAPTION_BUTTON_BOUNDS,
- NONCLIENT_RTL_LAYOUT,
- FORCE_ICONIC_REPRESENTATION,
- FLIP3D_POLICY,
- EXTENDED_FRAME_BOUNDS,
- // New to Windows 7:
- HAS_ICONIC_BITMAP,
- DISALLOW_PEEK,
- EXCLUDED_FROM_PEEK,
- // LAST
- }
- /// <summary>
- /// WindowThemeNonClientAttributes
- /// </summary>
- [Flags]
- internal enum WTNCA : uint
- {
- /// <summary>Prevents the window caption from being drawn.</summary>
- NODRAWCAPTION = 0x00000001,
- /// <summary>Prevents the system icon from being drawn.</summary>
- NODRAWICON = 0x00000002,
- /// <summary>Prevents the system icon menu from appearing.</summary>
- NOSYSMENU = 0x00000004,
- /// <summary>Prevents mirroring of the question mark, even in right-to-left (RTL) layout.</summary>
- NOMIRRORHELP = 0x00000008,
- /// <summary> A mask that contains all the valid bits.</summary>
- VALIDBITS = NODRAWCAPTION | NODRAWICON | NOMIRRORHELP | NOSYSMENU,
- }
- /// <summary>
- /// SetWindowPos options
- /// </summary>
- [Flags]
- internal enum SWP
- {
- ASYNCWINDOWPOS = 0x4000,
- DEFERERASE = 0x2000,
- DRAWFRAME = 0x0020,
- FRAMECHANGED = 0x0020,
- HIDEWINDOW = 0x0080,
- NOACTIVATE = 0x0010,
- NOCOPYBITS = 0x0100,
- NOMOVE = 0x0002,
- NOOWNERZORDER = 0x0200,
- NOREDRAW = 0x0008,
- NOREPOSITION = 0x0200,
- NOSENDCHANGING = 0x0400,
- NOSIZE = 0x0001,
- NOZORDER = 0x0004,
- SHOWWINDOW = 0x0040,
- }
- /// <summary>
- /// ShowWindow options
- /// </summary>
- internal enum SW
- {
- HIDE = 0,
- SHOWNORMAL = 1,
- NORMAL = 1,
- SHOWMINIMIZED = 2,
- SHOWMAXIMIZED = 3,
- MAXIMIZE = 3,
- SHOWNOACTIVATE = 4,
- SHOW = 5,
- MINIMIZE = 6,
- SHOWMINNOACTIVE = 7,
- SHOWNA = 8,
- RESTORE = 9,
- SHOWDEFAULT = 10,
- FORCEMINIMIZE = 11,
- }
- internal enum SC
- {
- SIZE = 0xF000,
- MOVE = 0xF010,
- MINIMIZE = 0xF020,
- MAXIMIZE = 0xF030,
- NEXTWINDOW = 0xF040,
- PREVWINDOW = 0xF050,
- CLOSE = 0xF060,
- VSCROLL = 0xF070,
- HSCROLL = 0xF080,
- MOUSEMENU = 0xF090,
- KEYMENU = 0xF100,
- ARRANGE = 0xF110,
- RESTORE = 0xF120,
- TASKLIST = 0xF130,
- SCREENSAVE = 0xF140,
- HOTKEY = 0xF150,
- DEFAULT = 0xF160,
- MONITORPOWER = 0xF170,
- CONTEXTHELP = 0xF180,
- SEPARATOR = 0xF00F,
- /// <summary>
- /// SCF_ISSECURE
- /// </summary>
- F_ISSECURE = 0x00000001,
- ICON = MINIMIZE,
- ZOOM = MAXIMIZE,
- }
- /// <summary>
- /// GDI+ Status codes
- /// </summary>
- internal enum Status
- {
- Ok = 0,
- GenericError = 1,
- InvalidParameter = 2,
- OutOfMemory = 3,
- ObjectBusy = 4,
- InsufficientBuffer = 5,
- NotImplemented = 6,
- Win32Error = 7,
- WrongState = 8,
- Aborted = 9,
- FileNotFound = 10,
- ValueOverflow = 11,
- AccessDenied = 12,
- UnknownImageFormat = 13,
- FontFamilyNotFound = 14,
- FontStyleNotFound = 15,
- NotTrueTypeFont = 16,
- UnsupportedGdiplusVersion = 17,
- GdiplusNotInitialized = 18,
- PropertyNotFound = 19,
- PropertyNotSupported = 20,
- ProfileNotFound = 21,
- }
- internal enum MOUSEEVENTF : int
- {
- //mouse event constants
- LEFTDOWN = 2,
- LEFTUP = 4
- }
- /// <summary>
- /// MSGFLT_*. New in Vista. Realiased in Windows 7.
- /// </summary>
- internal enum MSGFLT
- {
- // Win7 versions of this enum:
- RESET = 0,
- ALLOW = 1,
- DISALLOW = 2,
- // Vista versions of this enum:
- // ADD = 1,
- // REMOVE = 2,
- }
- internal enum MSGFLTINFO
- {
- NONE = 0,
- ALREADYALLOWED_FORWND = 1,
- ALREADYDISALLOWED_FORWND = 2,
- ALLOWED_HIGHER = 3,
- }
- internal enum INPUT_TYPE : uint
- {
- MOUSE = 0,
- }
- /// <summary>
- /// Shell_NotifyIcon messages. NIM_*
- /// </summary>
- internal enum NIM : uint
- {
- ADD = 0,
- MODIFY = 1,
- DELETE = 2,
- SETFOCUS = 3,
- SETVERSION = 4,
- }
- /// <summary>
- /// SHAddToRecentDocuments flags. SHARD_*
- /// </summary>
- internal enum SHARD
- {
- PIDL = 0x00000001,
- PATHA = 0x00000002,
- PATHW = 0x00000003,
- APPIDINFO = 0x00000004, // indicates the data type is a pointer to a SHARDAPPIDINFO structure
- APPIDINFOIDLIST = 0x00000005, // indicates the data type is a pointer to a SHARDAPPIDINFOIDLIST structure
- LINK = 0x00000006, // indicates the data type is a pointer to an IShellLink instance
- APPIDINFOLINK = 0x00000007, // indicates the data type is a pointer to a SHARDAPPIDINFOLINK structure
- }
- [Flags]
- enum SLGP
- {
- SHORTPATH = 0x1,
- UNCPRIORITY = 0x2,
- RAWPATH = 0x4
- }
- /// <summary>
- /// Shell_NotifyIcon flags. NIF_*
- /// </summary>
- [Flags]
- internal enum NIF : uint
- {
- MESSAGE = 0x0001,
- ICON = 0x0002,
- TIP = 0x0004,
- STATE = 0x0008,
- INFO = 0x0010,
- GUID = 0x0020,
- /// <summary>
- /// Vista only.
- /// </summary>
- REALTIME = 0x0040,
- /// <summary>
- /// Vista only.
- /// </summary>
- SHOWTIP = 0x0080,
- XP_MASK = MESSAGE | ICON | STATE | INFO | GUID,
- VISTA_MASK = XP_MASK | REALTIME | SHOWTIP,
- }
- /// <summary>
- /// Shell_NotifyIcon info flags. NIIF_*
- /// </summary>
- internal enum NIIF
- {
- NONE = 0x00000000,
- INFO = 0x00000001,
- WARNING = 0x00000002,
- ERROR = 0x00000003,
- /// <summary>XP SP2 and later.</summary>
- USER = 0x00000004,
- /// <summary>XP and later.</summary>
- NOSOUND = 0x00000010,
- /// <summary>Vista and later.</summary>
- LARGE_ICON = 0x00000020,
- /// <summary>Windows 7 and later</summary>
- NIIF_RESPECT_QUIET_TIME = 0x00000080,
- /// <summary>XP and later. Native version called NIIF_ICON_MASK.</summary>
- XP_ICON_MASK = 0x0000000F,
- }
- /// <summary>
- /// AC_*
- /// </summary>
- internal enum AC : byte
- {
- SRC_OVER = 0,
- SRC_ALPHA = 1,
- }
- internal enum ULW
- {
- ALPHA = 2,
- COLORKEY = 1,
- OPAQUE = 4,
- }
- internal enum WVR
- {
- ALIGNTOP = 0x0010,
- ALIGNLEFT = 0x0020,
- ALIGNBOTTOM = 0x0040,
- ALIGNRIGHT = 0x0080,
- HREDRAW = 0x0100,
- VREDRAW = 0x0200,
- VALIDRECTS = 0x0400,
- REDRAW = HREDRAW | VREDRAW,
- }
- #endregion
- #region SafeHandles
- internal sealed class SafeFindHandle : SafeHandleZeroOrMinusOneIsInvalid
- {
- [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
- private SafeFindHandle() : base(true) { }
- protected override bool ReleaseHandle()
- {
- return NativeMethods.FindClose(handle);
- }
- }
- internal sealed class SafeDC : SafeHandleZeroOrMinusOneIsInvalid
- {
- private static class NativeMethods
- {
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll")]
- public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll")]
- public static extern SafeDC GetDC(IntPtr hwnd);
- // Weird legacy function, documentation is unclear about how to use it...
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll", CharSet = CharSet.Unicode)]
- public static extern SafeDC CreateDC([MarshalAs(UnmanagedType.LPWStr)] string lpszDriver, [MarshalAs(UnmanagedType.LPWStr)] string lpszDevice, IntPtr lpszOutput, IntPtr lpInitData);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
- public static extern SafeDC CreateCompatibleDC(IntPtr hdc);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool DeleteDC(IntPtr hdc);
- }
- private IntPtr? _hwnd;
- private bool _created;
- public IntPtr Hwnd
- {
- set
- {
- Assert.NullableIsNull(_hwnd);
- _hwnd = value;
- }
- }
- private SafeDC() : base(true) { }
- [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
- protected override bool ReleaseHandle()
- {
- if (_created)
- {
- return NativeMethods.DeleteDC(handle);
- }
- if (!_hwnd.HasValue || _hwnd.Value == IntPtr.Zero)
- {
- return true;
- }
- return NativeMethods.ReleaseDC(_hwnd.Value, handle) == 1;
- }
- [SuppressMessage("Microsoft.Usage", "CA2201:DoNotRaiseReservedExceptionTypes"), SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static SafeDC CreateDC(string deviceName)
- {
- SafeDC dc = null;
- try
- {
- // Should this really be on the driver parameter?
- dc = NativeMethods.CreateDC(deviceName, null, IntPtr.Zero, IntPtr.Zero);
- }
- finally
- {
- if (dc != null)
- {
- dc._created = true;
- }
- }
- if (dc.IsInvalid)
- {
- dc.Dispose();
- throw new SystemException("Unable to create a device context from the specified device information.");
- }
- return dc;
- }
- [SuppressMessage("Microsoft.Usage", "CA2201:DoNotRaiseReservedExceptionTypes"), SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static SafeDC CreateCompatibleDC(SafeDC hdc)
- {
- SafeDC dc = null;
- try
- {
- IntPtr hPtr = IntPtr.Zero;
- if (hdc != null)
- {
- hPtr = hdc.handle;
- }
- dc = NativeMethods.CreateCompatibleDC(hPtr);
- if (dc == null)
- {
- HRESULT.ThrowLastError();
- }
- }
- finally
- {
- if (dc != null)
- {
- dc._created = true;
- }
- }
- if (dc.IsInvalid)
- {
- dc.Dispose();
- throw new SystemException("Unable to create a device context from the specified device information.");
- }
- return dc;
- }
- public static SafeDC GetDC(IntPtr hwnd)
- {
- SafeDC dc = null;
- try
- {
- dc = NativeMethods.GetDC(hwnd);
- }
- finally
- {
- if (dc != null)
- {
- dc.Hwnd = hwnd;
- }
- }
- if (dc.IsInvalid)
- {
- // GetDC does not set the last error...
- HRESULT.E_FAIL.ThrowIfFailed();
- }
- return dc;
- }
- public static SafeDC GetDesktop()
- {
- return GetDC(IntPtr.Zero);
- }
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static SafeDC WrapDC(IntPtr hdc)
- {
- // This won't actually get released by the class, but it allows an IntPtr to be converted for signatures.
- return new SafeDC
- {
- handle = hdc,
- _created = false,
- _hwnd = IntPtr.Zero,
- };
- }
- }
- internal sealed class SafeHBITMAP : SafeHandleZeroOrMinusOneIsInvalid
- {
- private SafeHBITMAP() : base(true) { }
- [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
- protected override bool ReleaseHandle()
- {
- return NativeMethods.DeleteObject(handle);
- }
- }
- internal sealed class SafeGdiplusStartupToken : SafeHandleZeroOrMinusOneIsInvalid
- {
- private SafeGdiplusStartupToken() : base(true) { }
- [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
- protected override bool ReleaseHandle()
- {
- Status s = NativeMethods.GdiplusShutdown(this.handle);
- return s == Status.Ok;
- }
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [SuppressMessage("Microsoft.Usage", "CA2201:DoNotRaiseReservedExceptionTypes")]
- public static SafeGdiplusStartupToken Startup()
- {
- SafeGdiplusStartupToken safeHandle = new SafeGdiplusStartupToken();
- IntPtr unsafeHandle;
- StartupOutput output;
- Status s = NativeMethods.GdiplusStartup(out unsafeHandle, new StartupInput(), out output);
- if (s == Status.Ok)
- {
- safeHandle.handle = unsafeHandle;
- return safeHandle;
- }
- safeHandle.Dispose();
- throw new Exception("Unable to initialize GDI+");
- }
- }
- internal sealed class SafeConnectionPointCookie : SafeHandleZeroOrMinusOneIsInvalid
- {
- private IConnectionPoint _cp;
- // handle holds the cookie value.
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [SuppressMessage("Microsoft.Naming", "CA2204:Literals should be spelled correctly", MessageId = "IConnectionPoint")]
- public SafeConnectionPointCookie(IConnectionPointContainer target, object sink, Guid eventId)
- : base(true)
- {
- Verify.IsNotNull(target, "target");
- Verify.IsNotNull(sink, "sink");
- Verify.IsNotDefault(eventId, "eventId");
- handle = IntPtr.Zero;
- IConnectionPoint cp = null;
- try
- {
- int dwCookie;
- target.FindConnectionPoint(ref eventId, out cp);
- cp.Advise(sink, out dwCookie);
- if (dwCookie == 0)
- {
- throw new InvalidOperationException("IConnectionPoint::Advise returned an invalid cookie.");
- }
- handle = new IntPtr(dwCookie);
- _cp = cp;
- cp = null;
- }
- finally
- {
- Utility.SafeRelease(ref cp);
- }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public void Disconnect()
- {
- ReleaseHandle();
- }
- [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
- [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
- protected override bool ReleaseHandle()
- {
- try
- {
- if (!this.IsInvalid)
- {
- int dwCookie = handle.ToInt32();
- handle = IntPtr.Zero;
- Assert.IsNotNull(_cp);
- try
- {
- _cp.Unadvise(dwCookie);
- }
- finally
- {
- Utility.SafeRelease(ref _cp);
- }
- }
- return true;
- }
- catch
- {
- return false;
- }
- }
- }
- #endregion
- #region Native Types
- [StructLayout(LayoutKind.Sequential)]
- internal struct BLENDFUNCTION
- {
- // Must be AC_SRC_OVER
- public AC BlendOp;
- // Must be 0.
- public byte BlendFlags;
- // Alpha transparency between 0 (transparent) - 255 (opaque)
- public byte SourceConstantAlpha;
- // Must be AC_SRC_ALPHA
- public AC AlphaFormat;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct HIGHCONTRAST
- {
- public int cbSize;
- public HCF dwFlags;
- //[MarshalAs(UnmanagedType.LPWStr, SizeConst=80)]
- //public String lpszDefaultScheme;
- public IntPtr lpszDefaultScheme;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct RGBQUAD
- {
- public byte rgbBlue;
- public byte rgbGreen;
- public byte rgbRed;
- public byte rgbReserved;
- }
- [StructLayout(LayoutKind.Sequential, Pack = 2)]
- internal struct BITMAPINFOHEADER
- {
- public int biSize;
- public int biWidth;
- public int biHeight;
- public short biPlanes;
- public short biBitCount;
- public BI biCompression;
- public int biSizeImage;
- public int biXPelsPerMeter;
- public int biYPelsPerMeter;
- public int biClrUsed;
- public int biClrImportant;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct BITMAPINFO
- {
- public BITMAPINFOHEADER bmiHeader;
- public RGBQUAD bmiColors;
- }
- // Win7 only.
- [StructLayout(LayoutKind.Sequential)]
- internal struct CHANGEFILTERSTRUCT
- {
- public uint cbSize;
- public MSGFLTINFO ExtStatus;
- }
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- internal struct CREATESTRUCT
- {
- public IntPtr lpCreateParams;
- public IntPtr hInstance;
- public IntPtr hMenu;
- public IntPtr hwndParent;
- public int cy;
- public int cx;
- public int y;
- public int x;
- public WS style;
- [MarshalAs(UnmanagedType.LPWStr)]
- public string lpszName;
- [MarshalAs(UnmanagedType.LPWStr)]
- public string lpszClass;
- public WS_EX dwExStyle;
- }
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 1)]
- internal struct SHFILEOPSTRUCT
- {
- public IntPtr hwnd;
- [MarshalAs(UnmanagedType.U4)]
- public FO wFunc;
- // double-null terminated arrays of LPWSTRS
- public string pFrom;
- public string pTo;
- [MarshalAs(UnmanagedType.U2)]
- public FOF fFlags;
- [MarshalAs(UnmanagedType.Bool)]
- public int fAnyOperationsAborted;
- public IntPtr hNameMappings;
- public string lpszProgressTitle;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct TITLEBARINFO
- {
- public int cbSize;
- public RECT rcTitleBar;
- public STATE_SYSTEM rgstate_TitleBar;
- public STATE_SYSTEM rgstate_Reserved;
- public STATE_SYSTEM rgstate_MinimizeButton;
- public STATE_SYSTEM rgstate_MaximizeButton;
- public STATE_SYSTEM rgstate_HelpButton;
- public STATE_SYSTEM rgstate_CloseButton;
- }
- // New to Vista.
- [StructLayout(LayoutKind.Sequential)]
- internal struct TITLEBARINFOEX
- {
- public int cbSize;
- public RECT rcTitleBar;
- public STATE_SYSTEM rgstate_TitleBar;
- public STATE_SYSTEM rgstate_Reserved;
- public STATE_SYSTEM rgstate_MinimizeButton;
- public STATE_SYSTEM rgstate_MaximizeButton;
- public STATE_SYSTEM rgstate_HelpButton;
- public STATE_SYSTEM rgstate_CloseButton;
- public RECT rgrect_TitleBar;
- public RECT rgrect_Reserved;
- public RECT rgrect_MinimizeButton;
- public RECT rgrect_MaximizeButton;
- public RECT rgrect_HelpButton;
- public RECT rgrect_CloseButton;
- }
- [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
- [StructLayout(LayoutKind.Sequential)]
- internal class NOTIFYICONDATA
- {
- public int cbSize;
- public IntPtr hWnd;
- public int uID;
- public NIF uFlags;
- public int uCallbackMessage;
- public IntPtr hIcon;
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
- public char[] szTip = new char[128];
- /// <summary>
- /// The state of the icon. There are two flags that can be set independently.
- /// NIS_HIDDEN = 1. The icon is hidden.
- /// NIS_SHAREDICON = 2. The icon is shared.
- /// </summary>
- public uint dwState;
- public uint dwStateMask;
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
- public char[] szInfo = new char[256];
- // Prior to Vista this was a union of uTimeout and uVersion. As of Vista, uTimeout has been deprecated.
- public uint uVersion; // Used with Shell_NotifyIcon flag NIM_SETVERSION.
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
- public char[] szInfoTitle = new char[64];
- public uint dwInfoFlags;
- public Guid guidItem;
- // Vista only
- IntPtr hBalloonIcon;
- }
- [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
- [StructLayout(LayoutKind.Explicit)]
- internal class PROPVARIANT : IDisposable
- {
- private static class NativeMethods
- {
- [DllImport("ole32.dll")]
- internal static extern HRESULT PropVariantClear(PROPVARIANT pvar);
- }
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- [FieldOffset(0)]
- private ushort vt;
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- [FieldOffset(8)]
- private IntPtr pointerVal;
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- [FieldOffset(8)]
- private byte byteVal;
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- [FieldOffset(8)]
- private long longVal;
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- [FieldOffset(8)]
- private short boolVal;
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public VarEnum VarType
- {
- get { return (VarEnum)vt; }
- }
- // Right now only using this for strings.
- [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")]
- public string GetValue()
- {
- if (vt == (ushort)VarEnum.VT_LPWSTR)
- {
- return Marshal.PtrToStringUni(pointerVal);
- }
- return null;
- }
- public void SetValue(bool f)
- {
- Clear();
- vt = (ushort)VarEnum.VT_BOOL;
- boolVal = (short)(f ? -1 : 0);
- }
- [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")]
- public void SetValue(string val)
- {
- Clear();
- vt = (ushort)VarEnum.VT_LPWSTR;
- pointerVal = Marshal.StringToCoTaskMemUni(val);
- }
- public void Clear()
- {
- HRESULT hr = NativeMethods.PropVariantClear(this);
- Assert.IsTrue(hr.Succeeded);
- }
- #region IDisposable Pattern
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
- ~PROPVARIANT()
- {
- Dispose(false);
- }
- [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "disposing")]
- private void Dispose(bool disposing)
- {
- Clear();
- }
- #endregion
- }
- [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
- [StructLayout(LayoutKind.Sequential, Pack = 4)]
- internal class SHARDAPPIDINFO
- {
- [MarshalAs(UnmanagedType.Interface)]
- object psi; // The namespace location of the the item that should be added to the recent docs folder.
- [MarshalAs(UnmanagedType.LPWStr)]
- string pszAppID; // The id of the application that should be associated with this recent doc.
- }
- [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
- [StructLayout(LayoutKind.Sequential, Pack = 4)]
- internal class SHARDAPPIDINFOIDLIST
- {
- /// <summary>The idlist for the shell item that should be added to the recent docs folder.</summary>
- IntPtr pidl;
- /// <summary>The id of the application that should be associated with this recent doc.</summary>
- [MarshalAs(UnmanagedType.LPWStr)]
- string pszAppID;
- }
- [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
- [StructLayout(LayoutKind.Sequential, Pack = 4)]
- internal class SHARDAPPIDINFOLINK
- {
- IntPtr psl; // An IShellLink instance that when launched opens a recently used item in the specified
- // application. This link is not added to the recent docs folder, but will be added to the
- // specified application's destination list.
- [MarshalAs(UnmanagedType.LPWStr)]
- string pszAppID; // The id of the application that should be associated with this recent doc.
- }
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- internal struct LOGFONT
- {
- public int lfHeight;
- public int lfWidth;
- public int lfEscapement;
- public int lfOrientation;
- public int lfWeight;
- public byte lfItalic;
- public byte lfUnderline;
- public byte lfStrikeOut;
- public byte lfCharSet;
- public byte lfOutPrecision;
- public byte lfClipPrecision;
- public byte lfQuality;
- public byte lfPitchAndFamily;
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
- public string lfFaceName;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct MINMAXINFO
- {
- public POINT ptReserved;
- public POINT ptMaxSize;
- public POINT ptMaxPosition;
- public POINT ptMinTrackSize;
- public POINT ptMaxTrackSize;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct NONCLIENTMETRICS
- {
- public int cbSize;
- public int iBorderWidth;
- public int iScrollWidth;
- public int iScrollHeight;
- public int iCaptionWidth;
- public int iCaptionHeight;
- public LOGFONT lfCaptionFont;
- public int iSmCaptionWidth;
- public int iSmCaptionHeight;
- public LOGFONT lfSmCaptionFont;
- public int iMenuWidth;
- public int iMenuHeight;
- public LOGFONT lfMenuFont;
- public LOGFONT lfStatusFont;
- public LOGFONT lfMessageFont;
- // Vista only
- public int iPaddedBorderWidth;
- [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")]
- public static NONCLIENTMETRICS VistaMetricsStruct
- {
- get
- {
- var ncm = new NONCLIENTMETRICS();
- ncm.cbSize = Marshal.SizeOf(typeof(NONCLIENTMETRICS));
- return ncm;
- }
- }
- [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")]
- public static NONCLIENTMETRICS XPMetricsStruct
- {
- get
- {
- var ncm = new NONCLIENTMETRICS();
- // Account for the missing iPaddedBorderWidth
- ncm.cbSize = Marshal.SizeOf(typeof(NONCLIENTMETRICS)) - sizeof(int);
- return ncm;
- }
- }
- }
- /// <summary>Defines options that are used to set window visual style attributes.</summary>
- [StructLayout(LayoutKind.Explicit)]
- internal struct WTA_OPTIONS
- {
- // public static readonly uint Size = (uint)Marshal.SizeOf(typeof(WTA_OPTIONS));
- public const uint Size = 8;
- /// <summary>
- /// A combination of flags that modify window visual style attributes.
- /// Can be a combination of the WTNCA constants.
- /// </summary>
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Justification = "Used by native code.")]
- [FieldOffset(0)]
- public WTNCA dwFlags;
- /// <summary>
- /// A bitmask that describes how the values specified in dwFlags should be applied.
- /// If the bit corresponding to a value in dwFlags is 0, that flag will be removed.
- /// If the bit is 1, the flag will be added.
- /// </summary>
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Justification = "Used by native code.")]
- [FieldOffset(4)]
- public WTNCA dwMask;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct MARGINS
- {
- /// <summary>Width of left border that retains its size.</summary>
- public int cxLeftWidth;
- /// <summary>Width of right border that retains its size.</summary>
- public int cxRightWidth;
- /// <summary>Height of top border that retains its size.</summary>
- public int cyTopHeight;
- /// <summary>Height of bottom border that retains its size.</summary>
- public int cyBottomHeight;
- };
- [StructLayout(LayoutKind.Sequential)]
- internal class MONITORINFO
- {
- public int cbSize = Marshal.SizeOf(typeof(MONITORINFO));
- public RECT rcMonitor;
- public RECT rcWork;
- public int dwFlags;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct POINT
- {
- public int x;
- public int y;
- }
- [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
- [StructLayout(LayoutKind.Sequential)]
- internal class RefPOINT
- {
- public int x;
- public int y;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct RECT
- {
- private int _left;
- private int _top;
- private int _right;
- private int _bottom;
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public void Offset(int dx, int dy)
- {
- _left += dx;
- _top += dy;
- _right += dx;
- _bottom += dy;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public int Left
- {
- get { return _left; }
- set { _left = value; }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public int Right
- {
- get { return _right; }
- set { _right = value; }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public int Top
- {
- get { return _top; }
- set { _top = value; }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public int Bottom
- {
- get { return _bottom; }
- set { _bottom = value; }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public int Width
- {
- get { return _right - _left; }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public int Height
- {
- get { return _bottom - _top; }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public POINT Position
- {
- get { return new POINT { x = _left, y = _top }; }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public SIZE Size
- {
- get { return new SIZE { cx = Width, cy = Height }; }
- }
- public static RECT Union(RECT rect1, RECT rect2)
- {
- return new RECT
- {
- Left = Math.Min(rect1.Left, rect2.Left),
- Top = Math.Min(rect1.Top, rect2.Top),
- Right = Math.Max(rect1.Right, rect2.Right),
- Bottom = Math.Max(rect1.Bottom, rect2.Bottom),
- };
- }
- public override bool Equals(object obj)
- {
- try
- {
- var rc = (RECT)obj;
- return rc._bottom == _bottom
- && rc._left == _left
- && rc._right == _right
- && rc._top == _top;
- }
- catch (InvalidCastException)
- {
- return false;
- }
- }
- public override int GetHashCode()
- {
- return (_left << 16 | Utility.LOWORD(_right)) ^ (_top << 16 | Utility.LOWORD(_bottom));
- }
- }
- [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
- [StructLayout(LayoutKind.Sequential)]
- internal class RefRECT
- {
- private int _left;
- private int _top;
- private int _right;
- private int _bottom;
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public RefRECT(int left, int top, int right, int bottom)
- {
- _left = left;
- _top = top;
- _right = right;
- _bottom = bottom;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public int Width
- {
- get { return _right - _left; }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public int Height
- {
- get { return _bottom - _top; }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public int Left
- {
- get { return _left; }
- set { _left = value; }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public int Right
- {
- get { return _right; }
- set { _right = value; }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public int Top
- {
- get { return _top; }
- set { _top = value; }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public int Bottom
- {
- get { return _bottom; }
- set { _bottom = value; }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public void Offset(int dx, int dy)
- {
- _left += dx;
- _top += dy;
- _right += dx;
- _bottom += dy;
- }
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct SIZE
- {
- public int cx;
- public int cy;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct StartupOutput
- {
- public IntPtr hook;
- public IntPtr unhook;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal class StartupInput
- {
- public int GdiplusVersion = 1;
- public IntPtr DebugEventCallback;
- public bool SuppressBackgroundThread;
- public bool SuppressExternalCodecs;
- }
- [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- [BestFitMapping(false)]
- internal class WIN32_FIND_DATAW
- {
- public FileAttributes dwFileAttributes;
- public System.Runtime.InteropServices.ComTypes.FILETIME ftCreationTime;
- public System.Runtime.InteropServices.ComTypes.FILETIME ftLastAccessTime;
- public System.Runtime.InteropServices.ComTypes.FILETIME ftLastWriteTime;
- public int nFileSizeHigh;
- public int nFileSizeLow;
- public int dwReserved0;
- public int dwReserved1;
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
- public string cFileName;
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]
- public string cAlternateFileName;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal class WINDOWPLACEMENT
- {
- public int length = Marshal.SizeOf(typeof(WINDOWPLACEMENT));
- public int flags;
- public SW showCmd;
- public POINT ptMinPosition;
- public POINT ptMaxPosition;
- public RECT rcNormalPosition;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct WINDOWPOS
- {
- public IntPtr hwnd;
- public IntPtr hwndInsertAfter;
- public int x;
- public int y;
- public int cx;
- public int cy;
- public int flags;
- }
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- internal struct WNDCLASSEX
- {
- public int cbSize;
- public CS style;
- public WndProc lpfnWndProc;
- public int cbClsExtra;
- public int cbWndExtra;
- public IntPtr hInstance;
- public IntPtr hIcon;
- public IntPtr hCursor;
- public IntPtr hbrBackground;
- [MarshalAs(UnmanagedType.LPWStr)]
- public string lpszMenuName;
- [MarshalAs(UnmanagedType.LPWStr)]
- public string lpszClassName;
- public IntPtr hIconSm;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct MOUSEINPUT
- {
- public int dx;
- public int dy;
- public int mouseData;
- public int dwFlags;
- public int time;
- public IntPtr dwExtraInfo;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct INPUT
- {
- public uint type;
- public MOUSEINPUT mi;
- };
- [StructLayout(LayoutKind.Sequential)]
- internal struct UNSIGNED_RATIO
- {
- public uint uiNumerator;
- public uint uiDenominator;
- }
- [StructLayout(LayoutKind.Sequential, Pack=1)]
- internal struct DWM_TIMING_INFO
- {
- public int cbSize;
- public UNSIGNED_RATIO rateRefresh;
- public ulong qpcRefreshPeriod;
- public UNSIGNED_RATIO rateCompose;
- public ulong qpcVBlank;
- public ulong cRefresh;
- public uint cDXRefresh;
- public ulong qpcCompose;
- public ulong cFrame;
- public uint cDXPresent;
- public ulong cRefreshFrame;
- public ulong cFrameSubmitted;
- public uint cDXPresentSubmitted;
- public ulong cFrameConfirmed;
- public uint cDXPresentConfirmed;
- public ulong cRefreshConfirmed;
- public uint cDXRefreshConfirmed;
- public ulong cFramesLate;
- public uint cFramesOutstanding;
- public ulong cFrameDisplayed;
- public ulong qpcFrameDisplayed;
- public ulong cRefreshFrameDisplayed;
- public ulong cFrameComplete;
- public ulong qpcFrameComplete;
- public ulong cFramePending;
- public ulong qpcFramePending;
- public ulong cFramesDisplayed;
- public ulong cFramesComplete;
- public ulong cFramesPending;
- public ulong cFramesAvailable;
- public ulong cFramesDropped;
- public ulong cFramesMissed;
- public ulong cRefreshNextDisplayed;
- public ulong cRefreshNextPresented;
- public ulong cRefreshesDisplayed;
- public ulong cRefreshesPresented;
- public ulong cRefreshStarted;
- public ulong cPixelsReceived;
- public ulong cPixelsDrawn;
- public ulong cBuffersEmpty;
- }
- #endregion
- /// <summary>Delegate declaration that matches native WndProc signatures.</summary>
- internal delegate IntPtr WndProc(IntPtr hwnd, WM uMsg, IntPtr wParam, IntPtr lParam);
- /// <summary>Delegate declaration that matches native WndProc signatures.</summary>
- internal delegate IntPtr WndProcHook(IntPtr hwnd, WM uMsg, IntPtr wParam, IntPtr lParam, ref bool handled);
- /// <summary>Delegate declaration that matches managed WndProc signatures.</summary>
- internal delegate IntPtr MessageHandler(WM uMsg, IntPtr wParam, IntPtr lParam, out bool handled);
- // Some native methods are shimmed through public versions that handle converting failures into thrown exceptions.
- internal static class NativeMethods
- {
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "AdjustWindowRectEx", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _AdjustWindowRectEx(ref RECT lpRect, WS dwStyle, [MarshalAs(UnmanagedType.Bool)] bool bMenu, WS_EX dwExStyle);
- public static RECT AdjustWindowRectEx(RECT lpRect, WS dwStyle, bool bMenu, WS_EX dwExStyle)
- {
- // Native version modifies the parameter in place.
- if (!_AdjustWindowRectEx(ref lpRect, dwStyle, bMenu, dwExStyle))
- {
- HRESULT.ThrowLastError();
- }
- return lpRect;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "ChangeWindowMessageFilter", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _ChangeWindowMessageFilter(WM message, MSGFLT dwFlag);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "ChangeWindowMessageFilterEx", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _ChangeWindowMessageFilterEx(IntPtr hwnd, WM message, MSGFLT action, [In, Out, Optional] ref CHANGEFILTERSTRUCT pChangeFilterStruct);
- // Note that processes at or below SECURITY_MANDATORY_LOW_RID are not allowed to change the message filter.
- // If those processes call this function, it will fail and generate the extended error code, ERROR_ACCESS_DENIED.
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static HRESULT ChangeWindowMessageFilterEx(IntPtr hwnd, WM message, MSGFLT action, out MSGFLTINFO filterInfo)
- {
- filterInfo = MSGFLTINFO.NONE;
- bool ret;
- // This origins of this API were added for Vista. The Ex version was added for Windows 7.
- // If we're not on either, then this message filter isolation doesn't exist.
- if (!Utility.IsOSVistaOrNewer)
- {
- return HRESULT.S_FALSE;
- }
- // If we're on Vista rather than Win7 then we can't use the Ex version of this function.
- // The Ex version is preferred if possible because this results in process-wide modifications of the filter
- // and is deprecated as of Win7.
- if (!Utility.IsOSWindows7OrNewer)
- {
- // Note that the Win7 MSGFLT_ALLOW/DISALLOW enum values map to the Vista MSGFLT_ADD/REMOVE
- ret = _ChangeWindowMessageFilter(message, action);
- if (!ret)
- {
- return (HRESULT)Win32Error.GetLastError();
- }
- return HRESULT.S_OK;
- }
- var filterstruct = new CHANGEFILTERSTRUCT { cbSize = (uint)Marshal.SizeOf(typeof(CHANGEFILTERSTRUCT)) };
- ret = _ChangeWindowMessageFilterEx(hwnd, message, action, ref filterstruct);
- if (!ret)
- {
- return (HRESULT)Win32Error.GetLastError();
- }
- filterInfo = filterstruct.ExtStatus;
- return HRESULT.S_OK;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll")]
- public static extern CombineRgnResult CombineRgn(IntPtr hrgnDest, IntPtr hrgnSrc1, IntPtr hrgnSrc2, RGN fnCombineMode);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("shell32.dll", EntryPoint = "CommandLineToArgvW", CharSet = CharSet.Unicode)]
- private static extern IntPtr _CommandLineToArgvW([MarshalAs(UnmanagedType.LPWStr)] string cmdLine, out int numArgs);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static string[] CommandLineToArgvW(string cmdLine)
- {
- IntPtr argv = IntPtr.Zero;
- try
- {
- int numArgs = 0;
- argv = _CommandLineToArgvW(cmdLine, out numArgs);
- if (argv == IntPtr.Zero)
- {
- throw new Win32Exception();
- }
- var result = new string[numArgs];
- for (int i = 0; i < numArgs; i++)
- {
- IntPtr currArg = Marshal.ReadIntPtr(argv, i * Marshal.SizeOf(typeof(IntPtr)));
- result[i] = Marshal.PtrToStringUni(currArg);
- }
- return result;
- }
- finally
- {
- IntPtr p = _LocalFree(argv);
- // Otherwise LocalFree failed.
- Assert.AreEqual(IntPtr.Zero, p);
- }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll", EntryPoint = "CreateDIBSection", SetLastError = true)]
- private static extern SafeHBITMAP _CreateDIBSection(SafeDC hdc, [In] ref BITMAPINFO bitmapInfo, int iUsage, [Out] out IntPtr ppvBits, IntPtr hSection, int dwOffset);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll", EntryPoint = "CreateDIBSection", SetLastError = true)]
- private static extern SafeHBITMAP _CreateDIBSectionIntPtr(IntPtr hdc, [In] ref BITMAPINFO bitmapInfo, int iUsage, [Out] out IntPtr ppvBits, IntPtr hSection, int dwOffset);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static SafeHBITMAP CreateDIBSection(SafeDC hdc, ref BITMAPINFO bitmapInfo, out IntPtr ppvBits, IntPtr hSection, int dwOffset)
- {
- const int DIB_RGB_COLORS = 0;
- SafeHBITMAP hBitmap = null;
- if (hdc == null)
- {
- hBitmap = _CreateDIBSectionIntPtr(IntPtr.Zero, ref bitmapInfo, DIB_RGB_COLORS, out ppvBits, hSection, dwOffset);
- }
- else
- {
- hBitmap = _CreateDIBSection(hdc, ref bitmapInfo, DIB_RGB_COLORS, out ppvBits, hSection, dwOffset);
- }
- if (hBitmap.IsInvalid)
- {
- HRESULT.ThrowLastError();
- }
- return hBitmap;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll", EntryPoint = "CreateRoundRectRgn", SetLastError = true)]
- private static extern IntPtr _CreateRoundRectRgn(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nWidthEllipse, int nHeightEllipse);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static IntPtr CreateRoundRectRgn(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nWidthEllipse, int nHeightEllipse)
- {
- IntPtr ret = _CreateRoundRectRgn(nLeftRect, nTopRect, nRightRect, nBottomRect, nWidthEllipse, nHeightEllipse);
- if (IntPtr.Zero == ret)
- {
- throw new Win32Exception();
- }
- return ret;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll", EntryPoint = "CreateRectRgn", SetLastError = true)]
- private static extern IntPtr _CreateRectRgn(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static IntPtr CreateRectRgn(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect)
- {
- IntPtr ret = _CreateRectRgn(nLeftRect, nTopRect, nRightRect, nBottomRect);
- if (IntPtr.Zero == ret)
- {
- throw new Win32Exception();
- }
- return ret;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll", EntryPoint = "CreateRectRgnIndirect", SetLastError = true)]
- private static extern IntPtr _CreateRectRgnIndirect([In] ref RECT lprc);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static IntPtr CreateRectRgnIndirect(RECT lprc)
- {
- IntPtr ret = _CreateRectRgnIndirect(ref lprc);
- if (IntPtr.Zero == ret)
- {
- throw new Win32Exception();
- }
- return ret;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll")]
- public static extern IntPtr CreateSolidBrush(int crColor);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode, EntryPoint = "CreateWindowExW")]
- private static extern IntPtr _CreateWindowEx(
- WS_EX dwExStyle,
- [MarshalAs(UnmanagedType.LPWStr)] string lpClassName,
- [MarshalAs(UnmanagedType.LPWStr)] string lpWindowName,
- WS dwStyle,
- int x,
- int y,
- int nWidth,
- int nHeight,
- IntPtr hWndParent,
- IntPtr hMenu,
- IntPtr hInstance,
- IntPtr lpParam);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static IntPtr CreateWindowEx(
- WS_EX dwExStyle,
- string lpClassName,
- string lpWindowName,
- WS dwStyle,
- int x,
- int y,
- int nWidth,
- int nHeight,
- IntPtr hWndParent,
- IntPtr hMenu,
- IntPtr hInstance,
- IntPtr lpParam)
- {
- IntPtr ret = _CreateWindowEx(dwExStyle, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
- if (IntPtr.Zero == ret)
- {
- HRESULT.ThrowLastError();
- }
- return ret;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", CharSet = CharSet.Unicode, EntryPoint = "DefWindowProcW")]
- public static extern IntPtr DefWindowProc(IntPtr hWnd, WM Msg, IntPtr wParam, IntPtr lParam);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool DeleteObject(IntPtr hObject);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool DestroyIcon(IntPtr handle);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool DestroyWindow(IntPtr hwnd);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool IsWindow(IntPtr hwnd);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("dwmapi.dll", PreserveSig = false)]
- public static extern void DwmExtendFrameIntoClientArea(IntPtr hwnd, ref MARGINS pMarInset);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("dwmapi.dll", EntryPoint = "DwmIsCompositionEnabled", PreserveSig = false)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _DwmIsCompositionEnabled();
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("dwmapi.dll", EntryPoint = "DwmGetColorizationColor", PreserveSig = true)]
- private static extern HRESULT _DwmGetColorizationColor(out uint pcrColorization, [Out, MarshalAs(UnmanagedType.Bool)] out bool pfOpaqueBlend);
- public static bool DwmGetColorizationColor(out uint pcrColorization, out bool pfOpaqueBlend)
- {
- // Make this call safe to make on downlevel OSes...
- if (Utility.IsOSVistaOrNewer && IsThemeActive())
- {
- HRESULT hr = _DwmGetColorizationColor(out pcrColorization, out pfOpaqueBlend);
- if (hr.Succeeded)
- {
- return true;
- }
- }
- // Default values. If for some reason the native DWM API fails it's never enough of a reason
- // to bring down the app. Empirically it still sometimes returns errors even when the theme service is on.
- // We'll still use the boolean return value to allow the caller to respond if they care.
- pcrColorization = 0xFF000000;
- pfOpaqueBlend = true;
- return false;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static bool DwmIsCompositionEnabled()
- {
- // Make this call safe to make on downlevel OSes...
- if (!Utility.IsOSVistaOrNewer)
- {
- return false;
- }
- return _DwmIsCompositionEnabled();
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("dwmapi.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool DwmDefWindowProc(IntPtr hwnd, WM msg, IntPtr wParam, IntPtr lParam, out IntPtr plResult);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("dwmapi.dll", EntryPoint = "DwmSetWindowAttribute")]
- private static extern void _DwmSetWindowAttribute(IntPtr hwnd, DWMWA dwAttribute, ref int pvAttribute, int cbAttribute);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static void DwmSetWindowAttributeFlip3DPolicy(IntPtr hwnd, DWMFLIP3D flip3dPolicy)
- {
- Assert.IsTrue(Utility.IsOSVistaOrNewer);
- var dwPolicy = (int)flip3dPolicy;
- _DwmSetWindowAttribute(hwnd, DWMWA.FLIP3D_POLICY, ref dwPolicy, sizeof(int));
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static void DwmSetWindowAttributeDisallowPeek(IntPtr hwnd, bool disallowPeek)
- {
- Assert.IsTrue(Utility.IsOSWindows7OrNewer);
- int dwDisallow = (int)(disallowPeek ? Win32Value.TRUE : Win32Value.FALSE);
- _DwmSetWindowAttribute(hwnd, DWMWA.DISALLOW_PEEK, ref dwDisallow, sizeof(int));
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "EnableMenuItem")]
- private static extern int _EnableMenuItem(IntPtr hMenu, SC uIDEnableItem, MF uEnable);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static MF EnableMenuItem(IntPtr hMenu, SC uIDEnableItem, MF uEnable)
- {
- // Returns the previous state of the menu item, or -1 if the menu item does not exist.
- int iRet = _EnableMenuItem(hMenu, uIDEnableItem, uEnable);
- return (MF)iRet;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "RemoveMenu", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _RemoveMenu(IntPtr hMenu, uint uPosition, uint uFlags);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static void RemoveMenu(IntPtr hMenu, SC uPosition, MF uFlags)
- {
- if (!_RemoveMenu(hMenu, (uint)uPosition, (uint)uFlags))
- {
- throw new Win32Exception();
- }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "DrawMenuBar", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _DrawMenuBar(IntPtr hWnd);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static void DrawMenuBar(IntPtr hWnd)
- {
- if (!_DrawMenuBar(hWnd))
- {
- throw new Win32Exception();
- }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("kernel32.dll")]
- [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool FindClose(IntPtr handle);
- // Not shimming this SetLastError=true function because callers want to evaluate the reason for failure.
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
- public static extern SafeFindHandle FindFirstFileW(string lpFileName, [In, Out, MarshalAs(UnmanagedType.LPStruct)] WIN32_FIND_DATAW lpFindFileData);
- // Not shimming this SetLastError=true function because callers want to evaluate the reason for failure.
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("kernel32.dll", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool FindNextFileW(SafeFindHandle hndFindFile, [In, Out, MarshalAs(UnmanagedType.LPStruct)] WIN32_FIND_DATAW lpFindFileData);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "GetClientRect", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _GetClientRect(IntPtr hwnd, [Out] out RECT lpRect);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static RECT GetClientRect(IntPtr hwnd)
- {
- RECT rc;
- if (!_GetClientRect(hwnd, out rc))
- {
- HRESULT.ThrowLastError();
- }
- return rc;
- }
- [DllImport("uxtheme.dll", EntryPoint="GetCurrentThemeName", CharSet = CharSet.Unicode)]
- private static extern HRESULT _GetCurrentThemeName(
- StringBuilder pszThemeFileName,
- int dwMaxNameChars,
- StringBuilder pszColorBuff,
- int cchMaxColorChars,
- StringBuilder pszSizeBuff,
- int cchMaxSizeChars);
- public static void GetCurrentThemeName(out string themeFileName, out string color, out string size)
- {
- // Not expecting strings longer than MAX_PATH. We will return the error
- var fileNameBuilder = new StringBuilder((int)Win32Value.MAX_PATH);
- var colorBuilder = new StringBuilder((int)Win32Value.MAX_PATH);
- var sizeBuilder = new StringBuilder((int)Win32Value.MAX_PATH);
- // This will throw if the theme service is not active (e.g. not UxTheme!IsThemeActive).
- _GetCurrentThemeName(fileNameBuilder, fileNameBuilder.Capacity,
- colorBuilder, colorBuilder.Capacity,
- sizeBuilder, sizeBuilder.Capacity)
- .ThrowIfFailed();
- themeFileName = fileNameBuilder.ToString();
- color = colorBuilder.ToString();
- size = sizeBuilder.ToString();
- }
- [DllImport("uxtheme.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool IsThemeActive();
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [Obsolete("Use SafeDC.GetDC instead.", true)]
- public static void GetDC() { }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll")]
- public static extern int GetDeviceCaps(SafeDC hdc, DeviceCap nIndex);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("kernel32.dll", EntryPoint = "GetModuleFileName", CharSet = CharSet.Unicode, SetLastError = true)]
- private static extern int _GetModuleFileName(IntPtr hModule, StringBuilder lpFilename, int nSize);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static string GetModuleFileName(IntPtr hModule)
- {
- var buffer = new StringBuilder((int)Win32Value.MAX_PATH);
- while (true)
- {
- int size = _GetModuleFileName(hModule, buffer, buffer.Capacity);
- if (size == 0)
- {
- HRESULT.ThrowLastError();
- }
- // GetModuleFileName returns nSize when it's truncated but does NOT set the last error.
- // MSDN documentation says this has changed in Windows 2000+.
- if (size == buffer.Capacity)
- {
- // Enlarge the buffer and try again.
- buffer.EnsureCapacity(buffer.Capacity * 2);
- continue;
- }
- return buffer.ToString();
- }
- }
- [DllImport("kernel32.dll", EntryPoint = "GetModuleHandleW", CharSet = CharSet.Unicode, SetLastError = true)]
- private static extern IntPtr _GetModuleHandle([MarshalAs(UnmanagedType.LPWStr)] string lpModuleName);
- public static IntPtr GetModuleHandle(string lpModuleName)
- {
- IntPtr retPtr = _GetModuleHandle(lpModuleName);
- if (retPtr == IntPtr.Zero)
- {
- HRESULT.ThrowLastError();
- }
- return retPtr;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "GetMonitorInfo", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _GetMonitorInfo(IntPtr hMonitor, [In, Out] MONITORINFO lpmi);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static MONITORINFO GetMonitorInfo(IntPtr hMonitor)
- {
- var mi = new MONITORINFO();
- if (!_GetMonitorInfo(hMonitor, mi))
- {
- throw new Win32Exception();
- }
- return mi;
- }
- [DllImport("gdi32.dll", EntryPoint = "GetStockObject", SetLastError = true)]
- private static extern IntPtr _GetStockObject(StockObject fnObject);
- public static IntPtr GetStockObject(StockObject fnObject)
- {
- IntPtr retPtr = _GetStockObject(fnObject);
- if (retPtr == null)
- {
- HRESULT.ThrowLastError();
- }
- return retPtr;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll")]
- public static extern IntPtr GetSystemMenu(IntPtr hWnd, [MarshalAs(UnmanagedType.Bool)] bool bRevert);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll")]
- public static extern int GetSystemMetrics(SM nIndex);
- // This is aliased as a macro in 32bit Windows.
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static IntPtr GetWindowLongPtr(IntPtr hwnd, GWL nIndex)
- {
- IntPtr ret = IntPtr.Zero;
- if (8 == IntPtr.Size)
- {
- ret = GetWindowLongPtr64(hwnd, nIndex);
- }
- else
- {
- ret = new IntPtr(GetWindowLongPtr32(hwnd, nIndex));
- }
- if (IntPtr.Zero == ret)
- {
- throw new Win32Exception();
- }
- return ret;
- }
- /// <summary>
- /// Sets attributes to control how visual styles are applied to a specified window.
- /// </summary>
- /// <param name="hwnd">
- /// Handle to a window to apply changes to.
- /// </param>
- /// <param name="eAttribute">
- /// Value of type WINDOWTHEMEATTRIBUTETYPE that specifies the type of attribute to set.
- /// The value of this parameter determines the type of data that should be passed in the pvAttribute parameter.
- /// Can be the following value:
- /// <list>WTA_NONCLIENT (Specifies non-client related attributes).</list>
- /// pvAttribute must be a pointer of type WTA_OPTIONS.
- /// </param>
- /// <param name="pvAttribute">
- /// A pointer that specifies attributes to set. Type is determined by the value of the eAttribute value.
- /// </param>
- /// <param name="cbAttribute">
- /// Specifies the size, in bytes, of the data pointed to by pvAttribute.
- /// </param>
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("uxtheme.dll", PreserveSig = false)]
- public static extern void SetWindowThemeAttribute([In] IntPtr hwnd, [In] WINDOWTHEMEATTRIBUTETYPE eAttribute, [In] ref WTA_OPTIONS pvAttribute, [In] uint cbAttribute);
- [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "GetWindowLong", SetLastError = true)]
- private static extern int GetWindowLongPtr32(IntPtr hWnd, GWL nIndex);
- [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "GetWindowLongPtr", SetLastError = true)]
- private static extern IntPtr GetWindowLongPtr64(IntPtr hWnd, GWL nIndex);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool GetWindowPlacement(IntPtr hwnd, WINDOWPLACEMENT lpwndpl);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static WINDOWPLACEMENT GetWindowPlacement(IntPtr hwnd)
- {
- WINDOWPLACEMENT wndpl = new WINDOWPLACEMENT();
- if (GetWindowPlacement(hwnd, wndpl))
- {
- return wndpl;
- }
- throw new Win32Exception();
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "GetWindowRect", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _GetWindowRect(IntPtr hWnd, out RECT lpRect);
- public static RECT GetWindowRect(IntPtr hwnd)
- {
- RECT rc;
- if (!_GetWindowRect(hwnd, out rc))
- {
- HRESULT.ThrowLastError();
- }
- return rc;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdiplus.dll")]
- public static extern Status GdipCreateBitmapFromStream(IStream stream, out IntPtr bitmap);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdiplus.dll")]
- public static extern Status GdipCreateHBITMAPFromBitmap(IntPtr bitmap, out IntPtr hbmReturn, Int32 background);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdiplus.dll")]
- public static extern Status GdipCreateHICONFromBitmap(IntPtr bitmap, out IntPtr hbmReturn);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdiplus.dll")]
- public static extern Status GdipDisposeImage(IntPtr image);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdiplus.dll")]
- public static extern Status GdipImageForceValidation(IntPtr image);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdiplus.dll")]
- public static extern Status GdiplusStartup(out IntPtr token, StartupInput input, out StartupOutput output);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdiplus.dll")]
- public static extern Status GdiplusShutdown(IntPtr token);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool IsWindowVisible(IntPtr hwnd);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("kernel32.dll", EntryPoint = "LocalFree", SetLastError = true)]
- private static extern IntPtr _LocalFree(IntPtr hMem);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll")]
- public static extern IntPtr MonitorFromWindow(IntPtr hwnd, uint dwFlags);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "PostMessage", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _PostMessage(IntPtr hWnd, WM Msg, IntPtr wParam, IntPtr lParam);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static void PostMessage(IntPtr hWnd, WM Msg, IntPtr wParam, IntPtr lParam)
- {
- if (!_PostMessage(hWnd, Msg, wParam, lParam))
- {
- throw new Win32Exception();
- }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", SetLastError = true, EntryPoint = "RegisterClassExW")]
- private static extern short _RegisterClassEx([In] ref WNDCLASSEX lpwcx);
- // Note that this will throw HRESULT_FROM_WIN32(ERROR_CLASS_ALREADY_EXISTS) on duplicate registration.
- // If needed, consider adding a Try* version of this function that returns the error code since that
- // may be ignorable.
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static short RegisterClassEx(ref WNDCLASSEX lpwcx)
- {
- short ret = _RegisterClassEx(ref lpwcx);
- if (ret == 0)
- {
- HRESULT.ThrowLastError();
- }
- return ret;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "RegisterWindowMessage", SetLastError = true, CharSet = CharSet.Unicode)]
- private static extern uint _RegisterWindowMessage([MarshalAs(UnmanagedType.LPWStr)] string lpString);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static WM RegisterWindowMessage(string lpString)
- {
- uint iRet = _RegisterWindowMessage(lpString);
- if (iRet == 0)
- {
- HRESULT.ThrowLastError();
- }
- return (WM)iRet;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "SetActiveWindow", SetLastError = true)]
- private static extern IntPtr _SetActiveWindow(IntPtr hWnd);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static IntPtr SetActiveWindow(IntPtr hwnd)
- {
- Verify.IsNotDefault(hwnd, "hwnd");
- IntPtr ret = _SetActiveWindow(hwnd);
- if (ret == IntPtr.Zero)
- {
- HRESULT.ThrowLastError();
- }
- return ret;
- }
- // This is aliased as a macro in 32bit Windows.
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static IntPtr SetClassLongPtr(IntPtr hwnd, GCLP nIndex, IntPtr dwNewLong)
- {
- if (8 == IntPtr.Size)
- {
- return SetClassLongPtr64(hwnd, nIndex, dwNewLong);
- }
- return new IntPtr(SetClassLongPtr32(hwnd, nIndex, dwNewLong.ToInt32()));
- }
- [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "SetClassLong", SetLastError = true)]
- private static extern int SetClassLongPtr32(IntPtr hWnd, GCLP nIndex, int dwNewLong);
- [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "SetClassLongPtr", SetLastError = true)]
- private static extern IntPtr SetClassLongPtr64(IntPtr hWnd, GCLP nIndex, IntPtr dwNewLong);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("kernel32.dll", SetLastError = true)]
- public static extern ErrorModes SetErrorMode(ErrorModes newMode);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("kernel32.dll", SetLastError = true, EntryPoint = "SetProcessWorkingSetSize")]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _SetProcessWorkingSetSize(IntPtr hProcess, IntPtr dwMinimiumWorkingSetSize, IntPtr dwMaximumWorkingSetSize);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static void SetProcessWorkingSetSize(IntPtr hProcess, int dwMinimumWorkingSetSize, int dwMaximumWorkingSetSize)
- {
- if (!_SetProcessWorkingSetSize(hProcess, new IntPtr(dwMinimumWorkingSetSize), new IntPtr(dwMaximumWorkingSetSize)))
- {
- throw new Win32Exception();
- }
- }
- // This is aliased as a macro in 32bit Windows.
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static IntPtr SetWindowLongPtr(IntPtr hwnd, GWL nIndex, IntPtr dwNewLong)
- {
- if (8 == IntPtr.Size)
- {
- return SetWindowLongPtr64(hwnd, nIndex, dwNewLong);
- }
- return new IntPtr(SetWindowLongPtr32(hwnd, nIndex, dwNewLong.ToInt32()));
- }
- [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "SetWindowLong", SetLastError = true)]
- private static extern int SetWindowLongPtr32(IntPtr hWnd, GWL nIndex, int dwNewLong);
- [SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist")]
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "SetWindowLongPtr", SetLastError = true)]
- private static extern IntPtr SetWindowLongPtr64(IntPtr hWnd, GWL nIndex, IntPtr dwNewLong);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "SetWindowRgn", SetLastError = true)]
- private static extern int _SetWindowRgn(IntPtr hWnd, IntPtr hRgn, [MarshalAs(UnmanagedType.Bool)] bool bRedraw);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static void SetWindowRgn(IntPtr hWnd, IntPtr hRgn, bool bRedraw)
- {
- int err = _SetWindowRgn(hWnd, hRgn, bRedraw);
- if (0 == err)
- {
- throw new Win32Exception();
- }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "SetWindowPos", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, SWP uFlags);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, SWP uFlags)
- {
- if (!_SetWindowPos(hWnd, hWndInsertAfter, x, y, cx, cy, uFlags))
- {
- // If this fails it's never worth taking down the process. Let the caller deal with the error if they want.
- return false;
- }
- return true;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("shell32.dll", SetLastError = false)]
- public static extern Win32Error SHFileOperation(ref SHFILEOPSTRUCT lpFileOp);
- [DllImport("user32.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool ShowWindow(IntPtr hwnd, SW nCmdShow);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "SystemParametersInfoW", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _SystemParametersInfo_String(SPI uiAction, int uiParam, [MarshalAs(UnmanagedType.LPWStr)] string pvParam, SPIF fWinIni);
- /// <summary>Overload of SystemParametersInfo for getting and setting NONCLIENTMETRICS.</summary>
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "SystemParametersInfoW", SetLastError = true, CharSet = CharSet.Unicode)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _SystemParametersInfo_NONCLIENTMETRICS(SPI uiAction, int uiParam, [In, Out] ref NONCLIENTMETRICS pvParam, SPIF fWinIni);
- /// <summary>Overload of SystemParametersInfo for getting and setting HIGHCONTRAST.</summary>
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "SystemParametersInfoW", SetLastError = true, CharSet = CharSet.Unicode)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _SystemParametersInfo_HIGHCONTRAST(SPI uiAction, int uiParam, [In, Out] ref HIGHCONTRAST pvParam, SPIF fWinIni);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static void SystemParametersInfo(SPI uiAction, int uiParam, string pvParam, SPIF fWinIni)
- {
- if (!_SystemParametersInfo_String(uiAction, uiParam, pvParam, fWinIni))
- {
- HRESULT.ThrowLastError();
- }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static NONCLIENTMETRICS SystemParameterInfo_GetNONCLIENTMETRICS()
- {
- var metrics = Utility.IsOSVistaOrNewer
- ? NONCLIENTMETRICS.VistaMetricsStruct
- : NONCLIENTMETRICS.XPMetricsStruct;
- if (!_SystemParametersInfo_NONCLIENTMETRICS(SPI.GETNONCLIENTMETRICS, metrics.cbSize, ref metrics, SPIF.None))
- {
- HRESULT.ThrowLastError();
- }
- return metrics;
- }
- [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")]
- public static HIGHCONTRAST SystemParameterInfo_GetHIGHCONTRAST()
- {
- var hc = new HIGHCONTRAST { cbSize = Marshal.SizeOf(typeof(HIGHCONTRAST)) };
- if (!_SystemParametersInfo_HIGHCONTRAST(SPI.GETHIGHCONTRAST, hc.cbSize, ref hc, SPIF.None))
- {
- HRESULT.ThrowLastError();
- }
- return hc;
- }
- // This function is strange in that it returns a BOOL if TPM_RETURNCMD isn't specified, but otherwise the command Id.
- // Currently it's only used with TPM_RETURNCMD, so making the signature match that.
- [DllImport("user32.dll")]
- public static extern uint TrackPopupMenuEx(IntPtr hmenu, uint fuFlags, int x, int y, IntPtr hwnd, IntPtr lptpm);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll", EntryPoint = "SelectObject", SetLastError = true)]
- private static extern IntPtr _SelectObject(SafeDC hdc, IntPtr hgdiobj);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static IntPtr SelectObject(SafeDC hdc, IntPtr hgdiobj)
- {
- IntPtr ret = _SelectObject(hdc, hgdiobj);
- if (ret == IntPtr.Zero)
- {
- HRESULT.ThrowLastError();
- }
- return ret;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("gdi32.dll", EntryPoint = "SelectObject", SetLastError = true)]
- private static extern IntPtr _SelectObjectSafeHBITMAP(SafeDC hdc, SafeHBITMAP hgdiobj);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static IntPtr SelectObject(SafeDC hdc, SafeHBITMAP hgdiobj)
- {
- IntPtr ret = _SelectObjectSafeHBITMAP(hdc, hgdiobj);
- if (ret == IntPtr.Zero)
- {
- HRESULT.ThrowLastError();
- }
- return ret;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", SetLastError = true)]
- public static extern int SendInput(int nInputs, ref INPUT pInputs, int cbSize);
- // Depending on the message, callers may want to call GetLastError based on the return value.
- [DllImport("user32.dll", SetLastError = true)]
- public static extern IntPtr SendMessage(IntPtr hWnd, WM Msg, IntPtr wParam, IntPtr lParam);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "UnregisterClass", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _UnregisterClassAtom(IntPtr lpClassName, IntPtr hInstance);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", EntryPoint = "UnregisterClass", CharSet = CharSet.Unicode, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _UnregisterClassName(string lpClassName, IntPtr hInstance);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static void UnregisterClass(short atom, IntPtr hinstance)
- {
- if (!_UnregisterClassAtom(new IntPtr(atom), hinstance))
- {
- HRESULT.ThrowLastError();
- }
- }
- public static void UnregisterClass(string lpClassName, IntPtr hInstance)
- {
- if (!_UnregisterClassName(lpClassName, hInstance))
- {
- HRESULT.ThrowLastError();
- }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", SetLastError = true, EntryPoint = "UpdateLayeredWindow")]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _UpdateLayeredWindow(
- IntPtr hwnd,
- SafeDC hdcDst,
- [In] ref POINT pptDst,
- [In] ref SIZE psize,
- SafeDC hdcSrc,
- [In] ref POINT pptSrc,
- int crKey,
- ref BLENDFUNCTION pblend,
- ULW dwFlags);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("user32.dll", SetLastError = true, EntryPoint = "UpdateLayeredWindow")]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool _UpdateLayeredWindowIntPtr(
- IntPtr hwnd,
- IntPtr hdcDst,
- IntPtr pptDst,
- IntPtr psize,
- IntPtr hdcSrc,
- IntPtr pptSrc,
- int crKey,
- ref BLENDFUNCTION pblend,
- ULW dwFlags);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static void UpdateLayeredWindow(
- IntPtr hwnd,
- SafeDC hdcDst,
- ref POINT pptDst,
- ref SIZE psize,
- SafeDC hdcSrc,
- ref POINT pptSrc,
- int crKey,
- ref BLENDFUNCTION pblend,
- ULW dwFlags)
- {
- if (!_UpdateLayeredWindow(hwnd, hdcDst, ref pptDst, ref psize, hdcSrc, ref pptSrc, crKey, ref pblend, dwFlags))
- {
- HRESULT.ThrowLastError();
- }
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- public static void UpdateLayeredWindow(
- IntPtr hwnd,
- int crKey,
- ref BLENDFUNCTION pblend,
- ULW dwFlags)
- {
- if (!_UpdateLayeredWindowIntPtr(hwnd, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, crKey, ref pblend, dwFlags))
- {
- HRESULT.ThrowLastError();
- }
- }
- #region Win7 declarations
- [DllImport("shell32.dll", EntryPoint = "SHAddToRecentDocs")]
- private static extern void _SHAddToRecentDocs_String(SHARD uFlags, [MarshalAs(UnmanagedType.LPWStr)] string pv);
- // This overload is required. There's a cast in the Shell code that causes the wrong vtbl to be used
- // if we let the marshaller convert the parameter to an IUnknown.
- [DllImport("shell32.dll", EntryPoint = "SHAddToRecentDocs")]
- private static extern void _SHAddToRecentDocs_ShellLink(SHARD uFlags, IShellLinkW pv);
- public static void SHAddToRecentDocs(string path)
- {
- _SHAddToRecentDocs_String(SHARD.PATHW, path);
- }
- // Win7 only.
- public static void SHAddToRecentDocs(IShellLinkW shellLink)
- {
- _SHAddToRecentDocs_ShellLink(SHARD.LINK, shellLink);
- }
- // #define DWM_SIT_DISPLAYFRAME 0x00000001 // Display a window frame around the provided bitmap
- [DllImport("dwmapi.dll", EntryPoint="DwmGetCompositionTimingInfo")]
- private static extern HRESULT _DwmGetCompositionTimingInfo(IntPtr hwnd, ref DWM_TIMING_INFO pTimingInfo);
- public static DWM_TIMING_INFO? DwmGetCompositionTimingInfo(IntPtr hwnd)
- {
- if (!Utility.IsOSVistaOrNewer)
- {
- // API was new to Vista.
- return null;
- }
- var dti = new DWM_TIMING_INFO { cbSize = Marshal.SizeOf(typeof(DWM_TIMING_INFO)) };
- HRESULT hr = _DwmGetCompositionTimingInfo(hwnd, ref dti);
- if (hr == HRESULT.E_PENDING)
- {
- // The system isn't yet ready to respond. Return null rather than throw.
- return null;
- }
- hr.ThrowIfFailed();
- return dti;
- }
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("dwmapi.dll", PreserveSig = false)]
- public static extern void DwmInvalidateIconicBitmaps(IntPtr hwnd);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("dwmapi.dll", PreserveSig = false)]
- public static extern void DwmSetIconicThumbnail(IntPtr hwnd, IntPtr hbmp, DWM_SIT dwSITFlags);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("dwmapi.dll", PreserveSig = false)]
- public static extern void DwmSetIconicLivePreviewBitmap(IntPtr hwnd, IntPtr hbmp, RefPOINT pptClient, DWM_SIT dwSITFlags);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("shell32.dll", PreserveSig = false)]
- public static extern void SHGetItemFromDataObject(IDataObject pdtobj, DOGIF dwFlags, [In] ref Guid riid, [Out, MarshalAs(UnmanagedType.Interface)] out object ppv);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("shell32.dll", PreserveSig = false)]
- public static extern HRESULT SHCreateItemFromParsingName([MarshalAs(UnmanagedType.LPWStr)] string pszPath, IBindCtx pbc, [In] ref Guid riid, [Out, MarshalAs(UnmanagedType.Interface)] out object ppv);
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("shell32.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool Shell_NotifyIcon(NIM dwMessage, [In] NOTIFYICONDATA lpdata);
- /// <summary>
- /// Sets the User Model AppID for the current process, enabling Windows to retrieve this ID
- /// </summary>
- /// <param name="AppID"></param>
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("shell32.dll", PreserveSig = false)]
- public static extern void SetCurrentProcessExplicitAppUserModelID([MarshalAs(UnmanagedType.LPWStr)] string AppID);
- /// <summary>
- /// Retrieves the User Model AppID that has been explicitly set for the current process via SetCurrentProcessExplicitAppUserModelID
- /// </summary>
- /// <param name="AppID"></param>
- [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- [DllImport("shell32.dll")]
- public static extern HRESULT GetCurrentProcessExplicitAppUserModelID([Out, MarshalAs(UnmanagedType.LPWStr)] out string AppID);
- #endregion
- }
- }
|