示例#1
0
        void InternalPokeData(object form, string itemName, string strData)
        {
            Connection conn;

            if (m_connections.TryGetValue(form, out conn))
            {
                IntPtr  hszItem     = DDEML.DdeCreateStringHandle(m_idInst, itemName, DDEML.CP_WINANSI);
                byte [] data        = Encoding.GetBytes(strData);
                IntPtr  hszDat      = DDEML.DdeCreateDataHandle(m_idInst, data, data.Length, 0, hszItem, DDEML.CF_TEXT, 0);
                uint    returnFlags = 0;
                DDEML.DdeClientTransaction(hszDat, -1, conn.Conv, hszItem, DDEML.CF_TEXT, DDEML.XTYP_POKE, Timeout.Infinite, ref returnFlags);
                DDEML.DdeFreeStringHandle(m_idInst, hszItem);
            }
        }
示例#2
0
        void InternalExecuteMacro(object form, string strText)
        {
            Connection conn;

            if (m_connections.TryGetValue(form, out conn))
            {
                uint   idErr  = 0;
                byte[] data   = Encoding.GetBytes(strText);
                IntPtr hszDat = DDEML.DdeCreateDataHandle(m_idInst, data, data.Length, 0, IntPtr.Zero, DDEML.CF_TEXT, 0);
                if (hszDat == IntPtr.Zero)
                {
                    idErr = DDEML.DdeGetLastError(m_idInst);
                }
                uint returnFlags = 0;
                DDEML.DdeClientTransaction(hszDat, -1, conn.Conv, IntPtr.Zero, DDEML.CF_TEXT, DDEML.XTYP_EXECUTE, Timeout.Infinite, ref returnFlags);
            }
        }
示例#3
0
        public void InternalRequest(object form, string itemName, out byte[] data)
        {
            Connection conn;

            data = new byte[0];
            if (m_connections.TryGetValue(form, out conn))
            {
                IntPtr hszItem     = DDEML.DdeCreateStringHandle(m_idInst, itemName, DDEML.CP_WINANSI);
                uint   returnFlags = 0;
                IntPtr dataHandle  = DDEML.DdeClientTransaction(IntPtr.Zero, 0, conn.Conv, hszItem, DDEML.CF_TEXT, DDEML.XTYP_REQUEST, 1000, ref returnFlags);
                DDEML.DdeFreeStringHandle(m_idInst, hszItem);

                if (dataHandle != IntPtr.Zero)
                {
                    uint length = DDEML.DdeGetData(dataHandle, null, 0, 0);
                    data   = new byte[length];
                    length = DDEML.DdeGetData(dataHandle, data, (uint)data.Length, 0);

                    // Free the data handle created by the server.
                    DDEML.DdeFreeDataHandle(dataHandle);
                }
            }
        }