Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / UIAutomation / UIAutomationClient / MS / Win32 / UnsafeNativeMethods.cs / 1305600 / UnsafeNativeMethods.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Unsafe P/Invokes used by UIAutomation // // History: // 05/29/2003 : BrendanM removed commented out code which wasn't very // useful. Will instead add in as-needed from our old Win32.cs // file. // //--------------------------------------------------------------------------- using System.Threading; using System; using System.Runtime.InteropServices; using System.Collections; using System.IO; using System.Text; using Accessibility; using Microsoft.Win32.SafeHandles; namespace MS.Win32 { // This class *MUST* be internal for security purposes internal static class UnsafeNativeMethods { public static readonly IntPtr INVALID_HANDLE_VALUE = new IntPtr(-1); // // CloseHandle // [DllImport("kernel32.dll", SetLastError = true)] public static extern bool CloseHandle(IntPtr handle); // // OpenProcess // public const int PROCESS_VM_READ = 0x0010; public const int PROCESS_DUP_HANDLE = 0x0040; public const int PROCESS_QUERY_INFORMATION = 0x0400; [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern IntPtr OpenProcess( int dwDesiredAccess, bool fInherit, int dwProcessId ); [DllImport("kernel32.dll")] public static extern void SetLastError(int dwErrCode); // // SendInput related // public const int VK_SHIFT = 0x10; public const int VK_CONTROL = 0x11; public const int VK_MENU = 0x12; public const int KEYEVENTF_EXTENDEDKEY = 0x0001; public const int KEYEVENTF_KEYUP = 0x0002; public const int KEYEVENTF_UNICODE = 0x0004; public const int KEYEVENTF_SCANCODE = 0x0008; public const int MOUSEEVENTF_VIRTUALDESK = 0x4000; [StructLayout(LayoutKind.Sequential)] public struct INPUT { public int type; public INPUTUNION union; }; [StructLayout(LayoutKind.Explicit)] public struct INPUTUNION { [FieldOffset(0)] public MOUSEINPUT mouseInput; [FieldOffset(0)] public KEYBDINPUT keyboardInput; }; [StructLayout(LayoutKind.Sequential)] public struct MOUSEINPUT { public int dx; public int dy; public int mouseData; public int dwFlags; public int time; public IntPtr dwExtraInfo; }; [StructLayout(LayoutKind.Sequential)] public struct KEYBDINPUT { public short wVk; public short wScan; public int dwFlags; public int time; public IntPtr dwExtraInfo; }; public const int INPUT_MOUSE = 0; public const int INPUT_KEYBOARD = 1; [DllImport("user32.dll", SetLastError = true)] public static extern int SendInput( int nInputs, ref INPUT mi, int cbSize ); [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern int MapVirtualKey(int nVirtKey, int nMapType); [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern short GetAsyncKeyState(int nVirtKey); // // Hotkeys // [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool RegisterHotKey( NativeMethods.HWND hWnd, int id, int fsModifiers, int vk ); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool UnregisterHotKey( NativeMethods.HWND hWnd, int id ); // // Foreground window // [DllImport("user32.dll")] public static extern void SwitchToThisWindow(NativeMethods.HWND hwnd, bool fAltTab); // // IAccessible / OLEACC / WinEvents // public const int CHILDID_SELF = 0; public const int STATE_SYSTEM_UNAVAILABLE = 0x00000001; public const int STATE_SYSTEM_FOCUSED = 0x00000004; public const int OBJID_CARET = -8; public const int OBJID_CLIENT = -4; public const int OBJID_MENU = -3; public const int OBJID_SYSMENU = -1; public const int OBJID_WINDOW = 0; [DllImport("oleacc.dll")] public static extern int AccessibleObjectFromEvent ( IntPtr hwnd, int idObject, int idChild, ref IAccessible ppvObject, ref Object varChild ); [DllImport("oleacc.dll")] public static extern int WindowFromAccessibleObject ( IAccessible acc, ref IntPtr hwnd ); [DllImport("oleacc.dll", SetLastError = true)] internal static extern IntPtr GetProcessHandleFromHwnd(IntPtr hwnd); [DllImport("user32.dll")] internal static extern IntPtr SetWinEventHook(int eventMin, int eventMax, IntPtr hmodWinEventProc, NativeMethods.WinEventProcDef WinEventReentrancyFilter, uint idProcess, uint idThread, int dwFlags); [DllImport("user32.dll")] internal static extern bool UnhookWinEvent(IntPtr winEventHook); private struct POINTSTRUCT { public int x; public int y; public POINTSTRUCT(int x, int y) { this.x = x; this.y = y; } } [DllImport("user32.dll", EntryPoint = "WindowFromPoint", ExactSpelling = true, CharSet = CharSet.Auto)] private static extern IntPtr IntWindowFromPoint(POINTSTRUCT pt); [DllImport("user32.dll", EntryPoint = "WindowFromPhysicalPoint", ExactSpelling = true, CharSet = CharSet.Auto)] private static extern IntPtr IntWindowFromPhysicalPoint(POINTSTRUCT pt); public static IntPtr WindowFromPhysicalPoint(int x, int y) { POINTSTRUCT ps = new POINTSTRUCT(x, y); if (System.Environment.OSVersion.Version.Major >= 6) return IntWindowFromPhysicalPoint(ps); else return IntWindowFromPoint(ps); } // // SendMessage and related // public const int SMTO_ABORTIFHUNG = 2; [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern IntPtr SendMessageTimeout( NativeMethods.HWND hwnd, int Msg, IntPtr wParam, IntPtr lParam, int flags, int uTimeout, out IntPtr pResult ); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern IntPtr SendMessageTimeout( NativeMethods.HWND hwnd, int Msg, IntPtr wParam, ref MINMAXINFO lParam, int flags, int uTimeout, out IntPtr pResult ); // Overload for use with WM_GETTEXT. StringBuilder is the type that P/Invoke maps to an output TCHAR*, see // see MSDN .Net docs on P/Invoke for more details. [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern IntPtr SendMessageTimeout( NativeMethods.HWND hwnd, int Msg, IntPtr wParam, StringBuilder lParam, int flags, int uTimeout, out IntPtr pResult); public const int PM_REMOVE = 0x0001; [StructLayout(LayoutKind.Sequential)] public struct MSG { public NativeMethods.HWND hwnd; public int message; public IntPtr wParam; public IntPtr lParam; public int time; public int pt_x; public int pt_y; } [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern int GetMessage( ref MSG msg, NativeMethods.HWND hwnd, int nMsgFilterMin, int nMsgFilterMax); [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern bool PeekMessage( ref MSG msg, NativeMethods.HWND hwnd, int nMsgFilterMin, int nMsgFilterMax, int wRemoveMsg); [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern bool TranslateMessage( ref MSG msg); [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern IntPtr DispatchMessage( ref MSG msg); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool PostMessage( NativeMethods.HWND hWnd, int nMsg, IntPtr wParam, IntPtr lParam); // // Messages and related structs / constants // public const int WM_NULL = 0x0000; public const int WM_GETTEXT = 0x000D; public const int WM_GETTEXTLENGTH = 0x000E; public const int WM_QUIT = 0x0012; public const int WM_GETMINMAXINFO = 0x0024; [StructLayout(LayoutKind.Sequential)] public struct MINMAXINFO { public NativeMethods.POINT ptReserved; public NativeMethods.POINT ptMaxSize; public NativeMethods.POINT ptMaxPosition; public NativeMethods.POINT ptMinTrackSize; public NativeMethods.POINT ptMaxTrackSize; }; public const int WM_GETOBJECT = 0x003D; public const int WM_NCHITTEST = 0x0084; public static readonly IntPtr HTTRANSPARENT = new IntPtr(-1); public static readonly IntPtr HTCLIENT = new IntPtr(1); public const int WM_SYSCOMMAND = 0x0112; public const int WM_MDIACTIVATE = 0x0222; public const int SC_SIZE = 0xF000; public const int SC_MOVE = 0xF010; public const int SC_MINIMIZE = 0xF020; public const int SC_MAXIMIZE = 0xF030; public const int SC_CLOSE = 0xF060; public const int SC_RESTORE = 0xF120; public const int WM_HOTKEY = 0x0312; public const int LB_GETCURSEL = 0x0188; // // MsgWaitForMultipleObjects... // public const int QS_KEY = 0x0001, QS_MOUSEMOVE = 0x0002, QS_MOUSEBUTTON = 0x0004, QS_POSTMESSAGE = 0x0008, QS_TIMER = 0x0010, QS_PAINT = 0x0020, QS_SENDMESSAGE = 0x0040, QS_HOTKEY = 0x0080, QS_ALLPOSTMESSAGE = 0x0100, QS_MOUSE = QS_MOUSEMOVE | QS_MOUSEBUTTON, QS_INPUT = QS_MOUSE | QS_KEY, QS_ALLEVENTS = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY, QS_ALLINPUT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE; public const int INFINITE = unchecked((int)0xFFFFFFFF); [DllImport("user32.dll", SetLastError = true)] public static extern int MsgWaitForMultipleObjects(int nCount, IntPtr[] handles, bool fWaitAll, int dwMilliseconds, int dwWakeMask); public const int WAIT_FAILED = unchecked((int)0xFFFFFFFF); public const int WAIT_TIMEOUT = 0x00000102; // // Window Placement // public const int WPF_SETMINPOSITION = 0x0001; public const int SW_RESTORE = 0x0009; public const int SWP_NOACTIVATE = 0x0010; [StructLayout(LayoutKind.Sequential)] public struct WINDOWPLACEMENT { public int length; public int flags; public int showCmd; public NativeMethods.POINT ptMinPosition; public NativeMethods.POINT ptMaxPosition; public NativeMethods.RECT rcNormalPosition; }; [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool SetWindowPlacement( NativeMethods.HWND hwnd, ref WINDOWPLACEMENT wp ); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool GetWindowPlacement( NativeMethods.HWND hwnd, ref WINDOWPLACEMENT wp ); public const int SWP_NOSIZE = 0x0001; public const int SWP_NOZORDER = 0x0004; [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] internal static extern bool SetWindowPos(NativeMethods.HWND hWnd, NativeMethods.HWND hWndInsertAfter, int x, int y, int cx, int cy, int flags); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] internal static extern int MapWindowPoints(NativeMethods.HWND hWndFrom, NativeMethods.HWND hWndTo, [In, Out] ref NativeMethods.POINT pt, int cPoints); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] internal static extern int MapWindowPoints(NativeMethods.HWND hWndFrom, NativeMethods.HWND hWndTo, [In, Out] ref NativeMethods.RECT rc, int cPoints); [DllImport("user32.dll", SetLastError = true)] public static extern bool GetMenuBarInfo(IntPtr hwnd, int idObject, uint idItem, ref MENUBARINFO mbi); [DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)] internal static extern int GetMenuState(IntPtr hMenu, int uId, int uFlags); internal const int MF_BYCOMMAND = 0x00000000; internal const int MF_BYPOSITION = 0x00000400; internal const int MF_GRAYED = 0x00000001; internal const int MF_DISABLED = 0x00000002; [StructLayout(LayoutKind.Sequential)] internal struct MENUBARINFO { internal int cbSize; internal NativeMethods.RECT rcBar; internal IntPtr hMenu; internal NativeMethods.HWND hwndMenu; internal int focusFlags; } // // GDI // [DllImport("gdi32.dll", CharSet = CharSet.Auto, SetLastError = true)] internal static extern bool DeleteObject(IntPtr hrgn); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Unsafe P/Invokes used by UIAutomation // // History: // 05/29/2003 : BrendanM removed commented out code which wasn't very // useful. Will instead add in as-needed from our old Win32.cs // file. // //--------------------------------------------------------------------------- using System.Threading; using System; using System.Runtime.InteropServices; using System.Collections; using System.IO; using System.Text; using Accessibility; using Microsoft.Win32.SafeHandles; namespace MS.Win32 { // This class *MUST* be internal for security purposes internal static class UnsafeNativeMethods { public static readonly IntPtr INVALID_HANDLE_VALUE = new IntPtr(-1); // // CloseHandle // [DllImport("kernel32.dll", SetLastError = true)] public static extern bool CloseHandle(IntPtr handle); // // OpenProcess // public const int PROCESS_VM_READ = 0x0010; public const int PROCESS_DUP_HANDLE = 0x0040; public const int PROCESS_QUERY_INFORMATION = 0x0400; [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern IntPtr OpenProcess( int dwDesiredAccess, bool fInherit, int dwProcessId ); [DllImport("kernel32.dll")] public static extern void SetLastError(int dwErrCode); // // SendInput related // public const int VK_SHIFT = 0x10; public const int VK_CONTROL = 0x11; public const int VK_MENU = 0x12; public const int KEYEVENTF_EXTENDEDKEY = 0x0001; public const int KEYEVENTF_KEYUP = 0x0002; public const int KEYEVENTF_UNICODE = 0x0004; public const int KEYEVENTF_SCANCODE = 0x0008; public const int MOUSEEVENTF_VIRTUALDESK = 0x4000; [StructLayout(LayoutKind.Sequential)] public struct INPUT { public int type; public INPUTUNION union; }; [StructLayout(LayoutKind.Explicit)] public struct INPUTUNION { [FieldOffset(0)] public MOUSEINPUT mouseInput; [FieldOffset(0)] public KEYBDINPUT keyboardInput; }; [StructLayout(LayoutKind.Sequential)] public struct MOUSEINPUT { public int dx; public int dy; public int mouseData; public int dwFlags; public int time; public IntPtr dwExtraInfo; }; [StructLayout(LayoutKind.Sequential)] public struct KEYBDINPUT { public short wVk; public short wScan; public int dwFlags; public int time; public IntPtr dwExtraInfo; }; public const int INPUT_MOUSE = 0; public const int INPUT_KEYBOARD = 1; [DllImport("user32.dll", SetLastError = true)] public static extern int SendInput( int nInputs, ref INPUT mi, int cbSize ); [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern int MapVirtualKey(int nVirtKey, int nMapType); [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern short GetAsyncKeyState(int nVirtKey); // // Hotkeys // [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool RegisterHotKey( NativeMethods.HWND hWnd, int id, int fsModifiers, int vk ); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool UnregisterHotKey( NativeMethods.HWND hWnd, int id ); // // Foreground window // [DllImport("user32.dll")] public static extern void SwitchToThisWindow(NativeMethods.HWND hwnd, bool fAltTab); // // IAccessible / OLEACC / WinEvents // public const int CHILDID_SELF = 0; public const int STATE_SYSTEM_UNAVAILABLE = 0x00000001; public const int STATE_SYSTEM_FOCUSED = 0x00000004; public const int OBJID_CARET = -8; public const int OBJID_CLIENT = -4; public const int OBJID_MENU = -3; public const int OBJID_SYSMENU = -1; public const int OBJID_WINDOW = 0; [DllImport("oleacc.dll")] public static extern int AccessibleObjectFromEvent ( IntPtr hwnd, int idObject, int idChild, ref IAccessible ppvObject, ref Object varChild ); [DllImport("oleacc.dll")] public static extern int WindowFromAccessibleObject ( IAccessible acc, ref IntPtr hwnd ); [DllImport("oleacc.dll", SetLastError = true)] internal static extern IntPtr GetProcessHandleFromHwnd(IntPtr hwnd); [DllImport("user32.dll")] internal static extern IntPtr SetWinEventHook(int eventMin, int eventMax, IntPtr hmodWinEventProc, NativeMethods.WinEventProcDef WinEventReentrancyFilter, uint idProcess, uint idThread, int dwFlags); [DllImport("user32.dll")] internal static extern bool UnhookWinEvent(IntPtr winEventHook); private struct POINTSTRUCT { public int x; public int y; public POINTSTRUCT(int x, int y) { this.x = x; this.y = y; } } [DllImport("user32.dll", EntryPoint = "WindowFromPoint", ExactSpelling = true, CharSet = CharSet.Auto)] private static extern IntPtr IntWindowFromPoint(POINTSTRUCT pt); [DllImport("user32.dll", EntryPoint = "WindowFromPhysicalPoint", ExactSpelling = true, CharSet = CharSet.Auto)] private static extern IntPtr IntWindowFromPhysicalPoint(POINTSTRUCT pt); public static IntPtr WindowFromPhysicalPoint(int x, int y) { POINTSTRUCT ps = new POINTSTRUCT(x, y); if (System.Environment.OSVersion.Version.Major >= 6) return IntWindowFromPhysicalPoint(ps); else return IntWindowFromPoint(ps); } // // SendMessage and related // public const int SMTO_ABORTIFHUNG = 2; [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern IntPtr SendMessageTimeout( NativeMethods.HWND hwnd, int Msg, IntPtr wParam, IntPtr lParam, int flags, int uTimeout, out IntPtr pResult ); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern IntPtr SendMessageTimeout( NativeMethods.HWND hwnd, int Msg, IntPtr wParam, ref MINMAXINFO lParam, int flags, int uTimeout, out IntPtr pResult ); // Overload for use with WM_GETTEXT. StringBuilder is the type that P/Invoke maps to an output TCHAR*, see // see MSDN .Net docs on P/Invoke for more details. [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern IntPtr SendMessageTimeout( NativeMethods.HWND hwnd, int Msg, IntPtr wParam, StringBuilder lParam, int flags, int uTimeout, out IntPtr pResult); public const int PM_REMOVE = 0x0001; [StructLayout(LayoutKind.Sequential)] public struct MSG { public NativeMethods.HWND hwnd; public int message; public IntPtr wParam; public IntPtr lParam; public int time; public int pt_x; public int pt_y; } [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern int GetMessage( ref MSG msg, NativeMethods.HWND hwnd, int nMsgFilterMin, int nMsgFilterMax); [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern bool PeekMessage( ref MSG msg, NativeMethods.HWND hwnd, int nMsgFilterMin, int nMsgFilterMax, int wRemoveMsg); [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern bool TranslateMessage( ref MSG msg); [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern IntPtr DispatchMessage( ref MSG msg); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool PostMessage( NativeMethods.HWND hWnd, int nMsg, IntPtr wParam, IntPtr lParam); // // Messages and related structs / constants // public const int WM_NULL = 0x0000; public const int WM_GETTEXT = 0x000D; public const int WM_GETTEXTLENGTH = 0x000E; public const int WM_QUIT = 0x0012; public const int WM_GETMINMAXINFO = 0x0024; [StructLayout(LayoutKind.Sequential)] public struct MINMAXINFO { public NativeMethods.POINT ptReserved; public NativeMethods.POINT ptMaxSize; public NativeMethods.POINT ptMaxPosition; public NativeMethods.POINT ptMinTrackSize; public NativeMethods.POINT ptMaxTrackSize; }; public const int WM_GETOBJECT = 0x003D; public const int WM_NCHITTEST = 0x0084; public static readonly IntPtr HTTRANSPARENT = new IntPtr(-1); public static readonly IntPtr HTCLIENT = new IntPtr(1); public const int WM_SYSCOMMAND = 0x0112; public const int WM_MDIACTIVATE = 0x0222; public const int SC_SIZE = 0xF000; public const int SC_MOVE = 0xF010; public const int SC_MINIMIZE = 0xF020; public const int SC_MAXIMIZE = 0xF030; public const int SC_CLOSE = 0xF060; public const int SC_RESTORE = 0xF120; public const int WM_HOTKEY = 0x0312; public const int LB_GETCURSEL = 0x0188; // // MsgWaitForMultipleObjects... // public const int QS_KEY = 0x0001, QS_MOUSEMOVE = 0x0002, QS_MOUSEBUTTON = 0x0004, QS_POSTMESSAGE = 0x0008, QS_TIMER = 0x0010, QS_PAINT = 0x0020, QS_SENDMESSAGE = 0x0040, QS_HOTKEY = 0x0080, QS_ALLPOSTMESSAGE = 0x0100, QS_MOUSE = QS_MOUSEMOVE | QS_MOUSEBUTTON, QS_INPUT = QS_MOUSE | QS_KEY, QS_ALLEVENTS = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY, QS_ALLINPUT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE; public const int INFINITE = unchecked((int)0xFFFFFFFF); [DllImport("user32.dll", SetLastError = true)] public static extern int MsgWaitForMultipleObjects(int nCount, IntPtr[] handles, bool fWaitAll, int dwMilliseconds, int dwWakeMask); public const int WAIT_FAILED = unchecked((int)0xFFFFFFFF); public const int WAIT_TIMEOUT = 0x00000102; // // Window Placement // public const int WPF_SETMINPOSITION = 0x0001; public const int SW_RESTORE = 0x0009; public const int SWP_NOACTIVATE = 0x0010; [StructLayout(LayoutKind.Sequential)] public struct WINDOWPLACEMENT { public int length; public int flags; public int showCmd; public NativeMethods.POINT ptMinPosition; public NativeMethods.POINT ptMaxPosition; public NativeMethods.RECT rcNormalPosition; }; [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool SetWindowPlacement( NativeMethods.HWND hwnd, ref WINDOWPLACEMENT wp ); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool GetWindowPlacement( NativeMethods.HWND hwnd, ref WINDOWPLACEMENT wp ); public const int SWP_NOSIZE = 0x0001; public const int SWP_NOZORDER = 0x0004; [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] internal static extern bool SetWindowPos(NativeMethods.HWND hWnd, NativeMethods.HWND hWndInsertAfter, int x, int y, int cx, int cy, int flags); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] internal static extern int MapWindowPoints(NativeMethods.HWND hWndFrom, NativeMethods.HWND hWndTo, [In, Out] ref NativeMethods.POINT pt, int cPoints); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] internal static extern int MapWindowPoints(NativeMethods.HWND hWndFrom, NativeMethods.HWND hWndTo, [In, Out] ref NativeMethods.RECT rc, int cPoints); [DllImport("user32.dll", SetLastError = true)] public static extern bool GetMenuBarInfo(IntPtr hwnd, int idObject, uint idItem, ref MENUBARINFO mbi); [DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)] internal static extern int GetMenuState(IntPtr hMenu, int uId, int uFlags); internal const int MF_BYCOMMAND = 0x00000000; internal const int MF_BYPOSITION = 0x00000400; internal const int MF_GRAYED = 0x00000001; internal const int MF_DISABLED = 0x00000002; [StructLayout(LayoutKind.Sequential)] internal struct MENUBARINFO { internal int cbSize; internal NativeMethods.RECT rcBar; internal IntPtr hMenu; internal NativeMethods.HWND hwndMenu; internal int focusFlags; } // // GDI // [DllImport("gdi32.dll", CharSet = CharSet.Auto, SetLastError = true)] internal static extern bool DeleteObject(IntPtr hrgn); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProfileInfo.cs
- DataGridTable.cs
- ScaleTransform.cs
- ListViewItemSelectionChangedEvent.cs
- Header.cs
- SiteMapDataSourceDesigner.cs
- MediaContext.cs
- EncryptedKeyIdentifierClause.cs
- Renderer.cs
- HttpRequest.cs
- ListView.cs
- XmlTextReaderImplHelpers.cs
- RegexWorker.cs
- CannotUnloadAppDomainException.cs
- HtmlMeta.cs
- TextHidden.cs
- PerspectiveCamera.cs
- FormsAuthenticationCredentials.cs
- RenderOptions.cs
- WorkerRequest.cs
- XmlSyndicationContent.cs
- AddingNewEventArgs.cs
- AssemblyBuilder.cs
- StaticContext.cs
- MetadataArtifactLoaderResource.cs
- DateTimeFormatInfo.cs
- SuppressedPackageProperties.cs
- dataobject.cs
- UserCancellationException.cs
- ChameleonKey.cs
- CodeGeneratorAttribute.cs
- CustomError.cs
- XMLSchema.cs
- figurelengthconverter.cs
- FormViewDeleteEventArgs.cs
- _LocalDataStore.cs
- BooleanExpr.cs
- QilXmlReader.cs
- AlignmentYValidation.cs
- JobPageOrder.cs
- CmsUtils.cs
- ContentFileHelper.cs
- UnknownBitmapEncoder.cs
- ChannelTerminatedException.cs
- XmlDocument.cs
- Label.cs
- InlineCollection.cs
- LocalizationParserHooks.cs
- ParallelTimeline.cs
- TreeViewImageKeyConverter.cs
- AnonymousIdentificationSection.cs
- TextRenderer.cs
- WmfPlaceableFileHeader.cs
- Parsers.cs
- WhereQueryOperator.cs
- StandardTransformFactory.cs
- MetadataUtil.cs
- TraceXPathNavigator.cs
- FamilyCollection.cs
- MultiTrigger.cs
- DataServiceOperationContext.cs
- ControlType.cs
- ErrorItem.cs
- UiaCoreApi.cs
- Formatter.cs
- KeyGestureValueSerializer.cs
- RestClientProxyHandler.cs
- Canvas.cs
- FigureParaClient.cs
- BamlBinaryWriter.cs
- AutoGeneratedField.cs
- DefaultHttpHandler.cs
- CacheDependency.cs
- DataTableNameHandler.cs
- sqlinternaltransaction.cs
- Button.cs
- EditingScope.cs
- DragCompletedEventArgs.cs
- GPRECT.cs
- FacetChecker.cs
- BindingElement.cs
- LoggedException.cs
- HyperLinkColumn.cs
- ClickablePoint.cs
- Renderer.cs
- ControlPropertyNameConverter.cs
- TextPointerBase.cs
- TabPage.cs
- FormConverter.cs
- ProtocolsSection.cs
- EditorZoneAutoFormat.cs
- CompModSwitches.cs
- _TransmitFileOverlappedAsyncResult.cs
- Paragraph.cs
- HelloMessage11.cs
- ReceiveCompletedEventArgs.cs
- DesignerSerializationVisibilityAttribute.cs
- DocumentSchemaValidator.cs
- PropertyConverter.cs
- OrderByLifter.cs