2010年5月20日 星期四

NDde....

底下是我為了解決RealDDE Crack時的替代方案,可參考底下的連結. Ref: 談談 C#.NET 連結 DDE Server 的設計觀 C# DDE 用戶端(Client) 的範本(含源碼下載與說明) from : Kenming's 軟體設計思維 NDde Source Code Ref: NDde from NDde 主要原因在於RealDDE 會透過API Access 的方式存取 DDE Client, 但是我們並沒有任何 Luck, Event trigger的機制, 導致 sample/(s) 的次數過大時, 會造成 "Exceed Limit" 的狀態. 解決方式: 1. 把 sample ratio 調小 2.更改 DDE Client TimeOut 的時間 $Win32::DDE::Client::Timeout = 1000; -> $Win32::DDE::Client::Timeout = 6000; 3. combine NDde 2 Our Environment.... call "NDde.dll " use Perl Win32 api ... NDde Client 原理
//include lib:
using NDde.Client;

// Create a client that connects to XQFAP|Quote. 
DdeClient client = new DdeClient("XQFAP", "Quote");

// Subscribe to the Disconnected event
client.Disconnected += OnDisconnected;

// Connect to the server. 
client.Connect();

// Syncronous Request Operation
Console.WriteLine("Request: " + client.Request("FITX*1.TF-Price", 60000));

// Asynchronous Request Operation
client.BeginRequest("FITX*1.TF-Price", 1, OnRequestComplete, client);

// Advise Loop
client.StartAdvise("FITX*1.TF-Price", 1, true, 60000);
client.Advise += OnAdvise;

//
        private static void OnRequestComplete(IAsyncResult ar)
        {
            try
            {
                DdeClient client = (DdeClient)ar.AsyncState;
                byte[] data = client.EndRequest(ar);
                Console.WriteLine("OnRequestComplete: " + Encoding.ASCII.GetString(data));
            }
            catch (Exception e)
            {
                Console.WriteLine("OnRequestComplete: " + e.Message);
            }
        }
....

other NDde applications [C#][WinForm]利用程式使用DDE(Dynamic Data Exchange)來打開PDF or ExcelViewer自動列印PDF or Excel檔案 [Office][C#]使用動態資料交換 (DDE) 將 EXCEL 檔案輸出至印表機進行列印

沒有留言:

張貼留言