Beispiel #1
0
        /// <summary>
        /// Adds a selected handler to the control
        /// </summary>
        /// <param name="ptrMessage">A pointer to the message</param>
        unsafe private void AddGenericWalkerSelectedHandler(Message *ptrMessage)
        {
            m_GenericWalkerControl = GetObjectFromDatastore(ptrMessage->SourceStore);
            m_GenericWalkerParent  = GetParameterIntPtr(ptrMessage, 0);

            m_GenericWalkerSelected = false;

            if (m_GenericWalkerControl != null)
            {
                if (m_GenericWalkerSelectedHandler == null)
                {
                    MethodInfo genericWalkerSelectedMethodInfo = this.GetType().GetMethod("GenericWalkerSelectedHandler", BindingFlags.NonPublic | BindingFlags.Instance);
                    if (genericWalkerSelectedMethodInfo == null)
                    {
                        throw new Exception("Failed to find method GenericWalkerSelectedHandler");
                    }
                    m_GenericWalkerSelectedEventInfo = m_GenericWalkerControl.GetType().GetEvent("Selected");
                    if (m_GenericWalkerSelectedEventInfo == null)
                    {
                        throw new Exception("Failed to find event Selected");
                    }
                    m_GenericWalkerSelectedHandler = Delegate.CreateDelegate(m_GenericWalkerSelectedEventInfo.EventHandlerType, this, genericWalkerSelectedMethodInfo);
                }

                m_GenericWalkerSelectedEventInfo.AddEventHandler(m_GenericWalkerControl, m_GenericWalkerSelectedHandler);
            }

            CleanUpMessage(ptrMessage);
        }
Beispiel #2
0
        private unsafe void DumpActiveX(Message *ptrMessage, int messageNumber)
        {
            //must be first message
            if (messageNumber != 1)
            {
                throw new Exception("DumpActiveX must be first message");
            }

            CleanUpMessage(ptrMessage);

            StringBuilder dump = new StringBuilder();

            if (Ax.Items.Count > 0)
            {
                lock (Ax.AxItemsLock)
                {
                    int items = Ax.Items.Count;
                    for (int item = 0; item < items; item++)
                    {
                        dump.Append("Name: " + Ax.Items[item].Name);
                        dump.Append(" TypeName: " + Ax.Items[item].TypeName);
                        dump.Append(" TypeNameSpace: " + Ax.Items[item].TypeNameSpace);
                        dump.Append(" UniqueId: " + Ax.Items[item].UniqueId);
                        dump.Append(" Handle: " + Ax.Items[item].Handle.ToString());
                        dump.Append(" Parent: " + Ax.Items[item].ParentHandle.ToString());
                        dump.Append(" ContainerUniqueId: " + Ax.Items[item].ContainerUniqueId);
                        dump.Append(" Rendered: " + Ax.Items[item].Rendered.ToString());
                        dump.AppendLine();
                    }
                }
            }

            AddReturnValue(new Parameter(this, dump.ToString()));
        }
Beispiel #3
0
        private unsafe void GetComboBoxExItemText(Message *ptrMessage, int messageNumber)
        {
            //must be first message
            if (messageNumber != 1)
            {
                throw new Exception("GetComboBoxExItemText must be first message");
            }

            IntPtr handle      = GetParameterIntPtr(ptrMessage, 0);
            int    index       = GetParameterInt32(ptrMessage, 1);
            string description = GetParameterString(ptrMessage, 2);

            CleanUpMessage(ptrMessage);

            IntPtr sendResult;
            IntPtr messageResult;

            //Work out if the control is unicode or not
            bool ASCII = false;

            sendResult = NM.SendMessageTimeout(handle, NM.CBEM_GETUNICODEFORMAT, IntPtr.Zero, IntPtr.Zero, NM.SendMessageTimeoutFlags.SMTO_NORMAL, this.TimeOut, out messageResult);
            if (sendResult == IntPtr.Zero) //Failed
            {
                throw new Exception("Failed to get the character format of the " + description);
            }
            if (messageResult == IntPtr.Zero)
            {
                ASCII = true;
            }

            //Get the item text
            NM.ComboBoxExItem item = new NM.ComboBoxExItem();
            item.iItem      = new IntPtr(index);
            item.mask       = NM.CBEIF_TEXT;
            item.pszText    = new string(' ', 1001);
            item.cchTextMax = 1000;

            if (ASCII)
            {
                sendResult = NM.SendMessageTimeout(handle, NM.CBEM_GETITEMA, IntPtr.Zero, ref item, NM.SendMessageTimeoutFlags.SMTO_NORMAL, this.TimeOut, out messageResult);
                if (sendResult == IntPtr.Zero || messageResult == IntPtr.Zero) //Failed
                {
                    throw new Exception("Failed to get the text of the item in the " + description);
                }

                byte[] bytes = Encoding.Unicode.GetBytes(item.pszText);
                string ascii = Encoding.ASCII.GetString(bytes);
                AddReturnValue(new Parameter(this, ascii.Substring(0, ascii.IndexOf('\0'))));
            }
            else
            {
                sendResult = NM.SendMessageTimeout(handle, NM.CBEM_GETITEMW, IntPtr.Zero, ref item, NM.SendMessageTimeoutFlags.SMTO_NORMAL, this.TimeOut, out messageResult);
                if (sendResult == IntPtr.Zero || messageResult == IntPtr.Zero) //Failed
                {
                    throw new Exception("Failed to get the text of the item in the " + description);
                }

                AddReturnValue(new Parameter(this, item.pszText.Substring(0, item.pszText.IndexOf('\0'))));
            }
        }
Beispiel #4
0
        public Parameter(APEIPC instance, string param)
        {
            Message *PtrMessage = instance.GetPointerToNextMessage();

            if (param != null)
            {
                int length = param.Length * 2;  //UTF16 charcter: For a 4 byte surrogate pair, length actually returns 2 somewhat confusingly although its convenient for us here, so we can just use length * 2
                CheckSize(instance, length);
                fixed(void *PtrString = param)
                {
                    NM.CopyMemory(instance.m_IntPtrMemoryMappedFileViewStringStore + instance.m_StringStoreOffset, (IntPtr)PtrString, (UIntPtr)(length));
                }

                PtrMessage->Parameter.StringOffset[PtrMessage->NumberOfParameters] = instance.m_StringStoreOffset;
                PtrMessage->Parameter.StringLength[PtrMessage->NumberOfParameters] = param.Length;
                instance.m_StringStoreOffset = instance.m_StringStoreOffset + (param.Length * 2);
            }
            else
            {
                PtrMessage->Parameter.StringOffset[PtrMessage->NumberOfParameters] = -1;
                PtrMessage->Parameter.StringLength[PtrMessage->NumberOfParameters] = -1;
            }

            PtrMessage->Parameter.TypeCode[PtrMessage->NumberOfParameters]      = (int)ApeTypeCode.String;
            PtrMessage->Parameter.ParameterType[PtrMessage->NumberOfParameters] = (int)ParameterType.In;
            PtrMessage->TypeCodeKey += ((PtrMessage->NumberOfParameters * OneLargerThanApeTypeCodeEnumMax * 2) + (int)ApeTypeCode.String) + ((PtrMessage->NumberOfParameters * OneLargerThanApeTypeCodeEnumMax * 2) + OneLargerThanApeTypeCodeEnumMax + (int)ParameterType.In);
            PtrMessage->NumberOfParameters++;
        }
Beispiel #5
0
        /// <summary>
        /// Waits for the handler to set the mouse click variable to true then removes the handler
        /// </summary>
        /// <param name="ptrMessage">A pointer to the message</param>
        unsafe private void WaitForAndRemoveMouseClickHandler(Message *ptrMessage)
        {
            if (m_MouseClickControl != null)
            {
                try
                {
                    Stopwatch timer = Stopwatch.StartNew();
                    while (true)
                    {
                        if (m_MouseClicked || m_MouseClickControl.Disposing || m_MouseClickControl.IsDisposed)
                        {
                            break;
                        }

                        if (timer.ElapsedMilliseconds > m_TimeOut)
                        {
                            throw new Exception("Failed to detect mouse event");
                        }

                        Thread.Sleep(15);
                    }
                }
                finally
                {
                    m_MouseClickControl.MouseClick -= m_MouseClick;
                    m_MouseClickControl.MouseUp    -= m_MouseClick;
                    m_MouseClickControl.MouseDown  -= m_MouseClick;
                    m_MouseClickControl             = null;
                }
            }

            CleanUpMessage(ptrMessage);
        }
Beispiel #6
0
        /// <summary>
        /// Adds a selected handler to the control
        /// </summary>
        /// <param name="ptrMessage">A pointer to the message</param>
        unsafe private void AddToolStripItemEnteredHandler(Message *ptrMessage)
        {
            m_ToolStripItemControl   = GetObjectFromDatastore(ptrMessage->SourceStore);
            m_ToolStripControlHandle = GetParameterIntPtr(ptrMessage, 0);

            m_ToolStripItemEntered = false;

            if (m_ToolStripItemControl != null)
            {
                if (m_ToolStripItemEnteredHandler == null)
                {
                    MethodInfo toolStripItemEnteredMethodInfo = this.GetType().GetMethod("ToolStripItemEnteredHandler", BindingFlags.NonPublic | BindingFlags.Instance);
                    if (toolStripItemEnteredMethodInfo == null)
                    {
                        throw new Exception("Failed to find method ToolStripItemEnteredHandler");
                    }
                    m_ToolStripItemEnteredEventInfo = m_ToolStripItemControl.GetType().GetEvent("MouseEnter");
                    if (m_ToolStripItemEnteredEventInfo == null)
                    {
                        throw new Exception("Failed to find event MouseEnter");
                    }
                    m_ToolStripItemEnteredHandler = Delegate.CreateDelegate(m_ToolStripItemEnteredEventInfo.EventHandlerType, this, toolStripItemEnteredMethodInfo);
                }

                m_ToolStripItemEnteredEventInfo.AddEventHandler(m_ToolStripItemControl, m_ToolStripItemEnteredHandler);
            }

            CleanUpMessage(ptrMessage);
        }
Beispiel #7
0
        private unsafe void ScrollControlIntoView(Message *ptrMessage, int messageNumber)
        {
            //must be first message
            if (messageNumber != 1)
            {
                throw new Exception("ScrollControlIntoView must be first message");
            }

            // p1  = handle
            IntPtr handle = GetParameterIntPtr(ptrMessage, 0);

            WF.Control childControl = WF.Control.FromHandle(handle);
            if (childControl != null)
            {
                WF.Control control = childControl.Parent;
                while (control != null)
                {
                    if (control.GetType().IsSubclassOf(m_ScrollableControl))
                    {
                        ((WF.ScrollableControl)control).ScrollControlIntoView(childControl);
                    }

                    control = control.Parent;
                }
            }
            //TODO WPF etc
        }
Beispiel #8
0
        /// <summary>
        /// Gets the parameters from the message then adds a mouse hook to the specified thread
        /// </summary>
        /// <param name="ptrMessage">A pointer to the message</param>
        /// <param name="messageNumber">The message number</param>
        private unsafe void AddMouseHook(Message *ptrMessage, int messageNumber)
        {
            if (messageNumber != 1)
            {
                throw new Exception("AddMouseHook must be the first message");
            }

            IntPtr handle = GetParameterIntPtr(ptrMessage, 0);

            CleanUpMessage(ptrMessage);

            int threadId = NM.GetWindowThreadProcessId(handle, IntPtr.Zero);

            m_HookWindow = handle;

            // Add the mouse hook
            DebugLogging.WriteLog("Adding Mouse hook");
            m_hMouseHook = NM.SetWindowsHookEx(NM.WH_MOUSE, MouseHookProcedure, IntPtr.Zero, threadId);
            if (m_hMouseHook == 0)
            {
                throw new Exception("SetWindowsHookEx failed to add mouse hook");
            }
            DebugLogging.WriteLog("Added Mouse hook");

            ClearMouseState();
        }
Beispiel #9
0
        private unsafe void GetTabRect(Message *ptrMessage)
        {
            object sourceObject = GetObjectFromDatastore(ptrMessage->SourceStore);

            CleanUpMessage(ptrMessage);

            int left   = -1;
            int top    = -1;
            int width  = -1;
            int height = -1;

            object[] parameters = { left, top, width, height };

            ParameterModifier modifiers = new ParameterModifier(4);

            modifiers[0] = true;
            modifiers[1] = true;
            modifiers[2] = true;
            modifiers[3] = true;
            ParameterModifier[] modifiersArray = { modifiers };

            sourceObject.GetType().InvokeMember("GetPositionPix", BindingFlags.InvokeMethod, null, sourceObject, parameters, modifiersArray, null, null);

            AddReturnValue(new Parameter(this, (int)parameters[0]));
            AddReturnValue(new Parameter(this, (int)parameters[1]));
            AddReturnValue(new Parameter(this, (int)parameters[2]));
            AddReturnValue(new Parameter(this, (int)parameters[3]));
        }
Beispiel #10
0
 /// <summary>
 /// Resets the message parameters back to a fresh state
 /// </summary>
 /// <param name="ptrMessage">A pointer to the message</param>
 unsafe private void CleanUpMessage(Message *ptrMessage)
 {
     ptrMessage->TypeCodeKey        = 0;
     ptrMessage->NumberOfParameters = 0;
     ptrMessage->NameOffset         = 0;
     ptrMessage->NameLength         = 0;
     ptrMessage->Action             = MessageAction.None;
 }
Beispiel #11
0
        /// <summary>To be documented.</summary>
        public readonly unsafe int GetMessageA(ulong MessageIndex, Message *pMessage, uint *pMessageByteLength)
        {
            var @this = (ID3D12InfoQueue *)Unsafe.AsPointer(ref Unsafe.AsRef(in this));
            int ret   = default;

            ret = ((delegate * unmanaged[Cdecl] < ID3D12InfoQueue *, ulong, Message *, uint *, int >)LpVtbl[5])(@this, MessageIndex, pMessage, pMessageByteLength);
            return(ret);
        }
Beispiel #12
0
        public static unsafe void AllocateSomeStuffOnStack(int limit)
        {
            Message *messages = stackalloc Message[limit];

            for (int i = 0; i < limit; i++)
            {
                messages[i] = new Message(i);
            }
        }
Beispiel #13
0
        public Parameter(APEIPC instance, DateTime param)
        {
            Message *PtrMessage = instance.GetPointerToNextMessage();

            PtrMessage->Parameter.DateTimeBinary[PtrMessage->NumberOfParameters] = param.ToBinary();
            PtrMessage->Parameter.TypeCode[PtrMessage->NumberOfParameters]       = (int)ApeTypeCode.DateTime;
            PtrMessage->Parameter.ParameterType[PtrMessage->NumberOfParameters]  = (int)ParameterType.In;
            PtrMessage->TypeCodeKey += ((PtrMessage->NumberOfParameters * OneLargerThanApeTypeCodeEnumMax * 2) + (int)ApeTypeCode.DateTime) + ((PtrMessage->NumberOfParameters * OneLargerThanApeTypeCodeEnumMax * 2) + OneLargerThanApeTypeCodeEnumMax + (int)ParameterType.In);
            PtrMessage->NumberOfParameters++;
        }
Beispiel #14
0
        public Parameter(APEIPC instance, Char param)
        {
            Message *PtrMessage = instance.GetPointerToNextMessage();

            PtrMessage->Parameter.Char[PtrMessage->NumberOfParameters]          = param;
            PtrMessage->Parameter.TypeCode[PtrMessage->NumberOfParameters]      = (int)ApeTypeCode.Char;
            PtrMessage->Parameter.ParameterType[PtrMessage->NumberOfParameters] = (int)ParameterType.In;
            PtrMessage->TypeCodeKey += ((PtrMessage->NumberOfParameters * OneLargerThanApeTypeCodeEnumMax * 2) + (int)ApeTypeCode.Char) + ((PtrMessage->NumberOfParameters * OneLargerThanApeTypeCodeEnumMax * 2) + OneLargerThanApeTypeCodeEnumMax + (int)ParameterType.In);
            PtrMessage->NumberOfParameters++;
        }
Beispiel #15
0
        public Parameter(APEIPC instance, UInt64 param, ParameterType apeParameterType)
        {
            Message *PtrMessage = instance.GetPointerToNextMessage();

            PtrMessage->Parameter.UInt64[PtrMessage->NumberOfParameters]        = param;
            PtrMessage->Parameter.TypeCode[PtrMessage->NumberOfParameters]      = (int)ApeTypeCode.UInt64;
            PtrMessage->Parameter.ParameterType[PtrMessage->NumberOfParameters] = (int)apeParameterType;
            PtrMessage->TypeCodeKey += ((PtrMessage->NumberOfParameters * OneLargerThanApeTypeCodeEnumMax * 2) + (int)ApeTypeCode.UInt64) + ((PtrMessage->NumberOfParameters * OneLargerThanApeTypeCodeEnumMax * 2) + OneLargerThanApeTypeCodeEnumMax + (int)apeParameterType);
            PtrMessage->NumberOfParameters++;
        }
Beispiel #16
0
        public Parameter(APEIPC instance, DataStores param)
        {
            Message *PtrMessage = instance.GetPointerToNextMessage();

            PtrMessage->Parameter.Int32[PtrMessage->NumberOfParameters]         = (Int32)param;
            PtrMessage->Parameter.TypeCode[PtrMessage->NumberOfParameters]      = (int)ApeTypeCode.DataStore;
            PtrMessage->Parameter.ParameterType[PtrMessage->NumberOfParameters] = (int)ParameterType.In;
            PtrMessage->TypeCodeKey += ((PtrMessage->NumberOfParameters * OneLargerThanApeTypeCodeEnumMax * 2) + (int)ApeTypeCode.DataStore) + ((PtrMessage->NumberOfParameters * OneLargerThanApeTypeCodeEnumMax * 2) + OneLargerThanApeTypeCodeEnumMax + (int)ParameterType.In);
            PtrMessage->NumberOfParameters++;
        }
Beispiel #17
0
        /// <summary>
        /// Shows a data column / row in the data grid view
        /// </summary>
        /// <param name="ptrMessage">A pointer to the message</param>
        unsafe private void DataGridViewShowCell(Message *ptrMessage)
        {
            object sourceObject    = GetObjectFromDatastore(ptrMessage->SourceStore);
            int    rowIndexData    = GetParameterInt32(ptrMessage, 0);
            int    columnIndexData = GetParameterInt32(ptrMessage, 1);

            object[] theParameters = { sourceObject, rowIndexData, columnIndexData };
            ((WF.Control)tempStore0).Invoke(DataGridViewShowCellDelegater, theParameters);

            CleanUpMessage(ptrMessage);
        }
Beispiel #18
0
 /// <summary>
 /// Gets the specified parameter from the message, validating it is the correct type
 /// </summary>
 /// <param name="ptrMessage">A pointer to the message</param>
 /// <param name="parameter">The parameter number (0 based)</param>
 /// <returns>The value in the mssage for the specified parameter</returns>
 unsafe private IntPtr GetParameterIntPtr(Message *ptrMessage, int parameter)
 {
     if ((ptrMessage->Parameter.TypeCode[parameter]) == (int)ApeTypeCode.IntPtr)
     {
         return((IntPtr)(void *)ptrMessage->Parameter.IntPtr[parameter]);
     }
     else
     {
         throw new Exception("Expected ApeTypeCode.IntPtr got ApeTypeCode." + (ptrMessage->Parameter.TypeCode[parameter]).ToString());
     }
 }
Beispiel #19
0
 /// <summary>
 /// Gets the specified parameter from the message, validating it is the correct type
 /// </summary>
 /// <param name="ptrMessage">A pointer to the message</param>
 /// <param name="parameter">The parameter number (0 based)</param>
 /// <returns>The value in the mssage for the specified parameter</returns>
 unsafe private bool GetParameterBoolean(Message *ptrMessage, int parameter)
 {
     if ((ptrMessage->Parameter.TypeCode[parameter]) == (int)ApeTypeCode.Boolean)
     {
         return(ptrMessage->Parameter.Boolean[parameter]);
     }
     else
     {
         throw new Exception("Expected ApeTypeCode.Boolean got ApeTypeCode." + (ptrMessage->Parameter.TypeCode[parameter]).ToString());
     }
 }
Beispiel #20
0
 /// <summary>
 /// Gets the specified parameter from the message, validating it is the correct type
 /// </summary>
 /// <param name="ptrMessage">A pointer to the message</param>
 /// <param name="parameter">The parameter number (0 based)</param>
 /// <returns>The value in the mssage for the specified parameter</returns>
 unsafe private int GetParameterInt32(Message *ptrMessage, int parameter)
 {
     if ((ptrMessage->Parameter.TypeCode[parameter]) == (int)ApeTypeCode.Int32)
     {
         return(ptrMessage->Parameter.Int32[parameter]);
     }
     else
     {
         throw new Exception("Expected ApeTypeCode.Int32 got ApeTypeCode." + (ptrMessage->Parameter.TypeCode[parameter]).ToString());
     }
 }
Beispiel #21
0
 /// <summary>
 /// Gets the specified parameter from the message, validating it is the correct type
 /// </summary>
 /// <param name="ptrMessage">A pointer to the message</param>
 /// <param name="parameter">The parameter number (0 based)</param>
 /// <returns>The value in the mssage for the specified parameter</returns>
 unsafe private float GetParameterSingle(Message *ptrMessage, int parameter)
 {
     if ((ptrMessage->Parameter.TypeCode[parameter]) == (int)ApeTypeCode.Single)
     {
         return(ptrMessage->Parameter.Single[parameter]);
     }
     else
     {
         throw new Exception("Expected ApeTypeCode.Single got ApeTypeCode." + (ptrMessage->Parameter.TypeCode[parameter]).ToString());
     }
 }
Beispiel #22
0
        private unsafe void GetInvokeFormActiveX(Message *ptrMessage, int messageNumber)
        {
            //must be first message
            if (messageNumber != 1)
            {
                throw new Exception("GetInvokeFormActiveX must be first message");
            }

            PutObjectInDatastore(ptrMessage->DestinationStore, Ax.InvokeForm);
            CleanUpMessage(ptrMessage);
        }
Beispiel #23
0
        /// <summary>
        /// Removes the handler
        /// </summary>
        /// <param name="ptrMessage">A pointer to the message</param>
        unsafe private void RemoveGenericWalkerSelectedHandler(Message *ptrMessage)
        {
            if (m_GenericWalkerControl != null)
            {
                m_GenericWalkerSelectedEventInfo.RemoveEventHandler(m_GenericWalkerControl, m_GenericWalkerSelectedHandler);
                m_GenericWalkerControl = null;
                m_GenericWalkerParent  = IntPtr.Zero;
            }

            CleanUpMessage(ptrMessage);
        }
Beispiel #24
0
        /// <summary>
        /// Removes the handler
        /// </summary>
        /// <param name="ptrMessage">A pointer to the message</param>
        unsafe private void RemoveMouseClickHandler(Message *ptrMessage)
        {
            if (m_MouseClickControl != null)
            {
                m_MouseClickControl.MouseClick -= m_MouseClick;
                m_MouseClickControl.MouseUp    -= m_MouseClick;
                m_MouseClickControl.MouseDown  -= m_MouseClick;
                m_MouseClickControl             = null;
            }

            CleanUpMessage(ptrMessage);
        }
Beispiel #25
0
        unsafe public void AddFirstMessageGetInvokeFormActiveX(DataStores destinationStore)
        {
            FirstMessageInitialise();

            Message *ptrMessage = GetPointerToNextMessage();

            ptrMessage->DestinationStore = destinationStore;
            ptrMessage->Action           = MessageAction.GetInvokeFormActiveX;

            m_PtrMessageStore->NumberOfMessages++;
            m_DoneFind = true;
        }
Beispiel #26
0
        private unsafe void DumpControl(Message *ptrMessage, int messageNumber)
        {
            //must be first message
            if (messageNumber != 1)
            {
                throw new Exception("DumpControl must be first message");
            }

            CleanUpMessage(ptrMessage);

            StringBuilder dump = new StringBuilder();

            //Get the buckets
            Array hashBuckets = (Array)HashBucketsArrayFieldInfo.GetValue(null);

            for (int item = 0; item < hashBuckets.Length; item++)
            {
                IntPtr handle = (IntPtr)HashBucketHandleFieldInfo.GetValue(hashBuckets.GetValue(item));
                if (handle == IntPtr.Zero || handle == MinusOneIntPtr)
                {
                    //Nothing as not a real window handle
                }
                else
                {
                    Control control = Control.FromHandle(handle);
                    if (control == null)
                    {
                        GCHandle gcHandle    = (GCHandle)HashBucketGCHandleFieldInfo.GetValue(hashBuckets.GetValue(item));
                        Type     controlType = gcHandle.Target.GetType();
                        dump.Append("TypeName: " + controlType.Name);
                        dump.Append(" TypeNameSpace: " + controlType.Namespace);
                        dump.Append(" ModuleName: " + controlType.Module.Name);
                    }
                    else
                    {
                        dump.Append("Name: " + control.Name);
                        Type controlType = control.GetType();
                        dump.Append(" TypeName: " + controlType.Name);
                        dump.Append(" TypeNameSpace: " + controlType.Namespace);
                        dump.Append(" ModuleName: " + controlType.Module.Name);
                    }

                    //IntPtr parent = NM.GetAncestor(handle, NM.GetAncestorFlags.GetRoot);
                    IntPtr parent = NM.GetAncestor(handle, NM.GetAncestorFlags.GetParent);
                    dump.Append(" Handle: " + handle.ToString());
                    dump.Append(" Parent: " + parent.ToString());
                    dump.AppendLine();
                }
            }

            AddReturnValue(new Parameter(this, dump.ToString()));
        }
Beispiel #27
0
        /// <summary>
        /// Get the type information and puts it in the specified datastore
        /// </summary>
        /// <param name="ptrMessage">A pointer to the message</param>
        unsafe private void GetTypeInformationActiveX(Message *ptrMessage)
        {
            object sourceObject      = GetObjectFromDatastore(ptrMessage->SourceStore);
            object destinationObject = null;

            if (sourceObject != null)
            {
                destinationObject = GetObjectFullTypeName(sourceObject);
            }

            PutObjectInDatastore(ptrMessage->DestinationStore, destinationObject);
            CleanUpMessage(ptrMessage);
        }
Beispiel #28
0
        //
        //  GetTabRect
        //

        unsafe public void AddQueryMessageGetTabRect(DataStores sourceStore)
        {
            Message *ptrMessage = GetPointerToNextMessage();

            ptrMessage->SourceStore = sourceStore;

            ptrMessage->Action = MessageAction.GetTabRect;

            m_PtrMessageStore->NumberOfMessages++;
            m_DoneFind  = true;
            m_DoneQuery = true;
            m_DoneGet   = true;
        }
Beispiel #29
0
        unsafe public void AddFirstMessageDumpControl()
        {
            FirstMessageInitialise();

            Message *ptrMessage = GetPointerToNextMessage();

            ptrMessage->Action = MessageAction.DumpControl;

            m_PtrMessageStore->NumberOfMessages++;
            m_DoneFind  = true;
            m_DoneQuery = true;
            m_DoneGet   = true;
        }
Beispiel #30
0
        /// <summary>
        /// Calls the FlexgridGetAllRowsHeightInternal method on the correct thread storing the results
        /// in the specified datastore
        /// </summary>
        /// <param name="ptrMessage">A pointer to the message</param>
        unsafe private void FlexgridGetAllRowsHeight(Message *ptrMessage)
        {
            object sourceObject      = GetObjectFromDatastore(ptrMessage->SourceStore);
            object destinationObject = null;

            if (sourceObject != null)
            {
                object[] theParameters = { sourceObject };
                destinationObject = ((WF.Control)tempStore0).Invoke(m_FlexgridGetAllRowsHeightDelegater, theParameters);
            }

            PutObjectInDatastore(ptrMessage->DestinationStore, destinationObject);
            CleanUpMessage(ptrMessage);
        }