Подключение к Quik и запуск DDE
Atom
24.01.2011


vvt

Фотография
Пробую подключение к Quik и запуск DDE из примеров (Sample, SampleSMA).
Все происходит очень медленно, поискал по форуму, есть несколько сообщений с такими же проблемами.
Железо вроде не самое слабое (Phenom II X2 555/8Gb/SSD), система Windows 7 Ultimate 64bit.
Запускаются Quik и примеры от имени администратора.
Хотелось бы все-таки с помощью Михаила докопаться до возможных причин таких тормозов.

В связи с этим первый вопрос:
после установки соединения с Квиком через QuikTrader.Connect() и поступления события Connected секунд где-то через 10 в Квике появляется окно "Выбор активных счетов и задание их очередности", которое висит и пропадает где-то через 30 секунд.
Так и должно быть?


Вот код этого консольного приложения:
Код
            Console.WriteLine("Запуск...");

            try
            {
                var waitHandle = new AutoResetEvent(false);

                // создаем шлюз к Quik-у
                var trader = new QuikTrader(@"C:\FinamJunior\info.exe");

                // подписываемся на событие успешного подключения
                // все действия необходимо производить только после подключения
                trader.Connected += () =>
                {
                    Console.WriteLine("Подключение было произведено успешно.");

                    // извещаем об успешном соединени
                    waitHandle.Set();
                };

                Console.WriteLine("Производим подключение...");

                trader.Connect();

                // дожидаемся события об успешном соединении
                waitHandle.WaitOne();
                Console.ReadKey();

                trader.Dispose();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                Console.ReadKey();
            }

Теги:


Спасибо:


< 1 2 3 4 5  > >>
Alexander

Фотография
Дата: 14.07.2011
Ответить


AllToplevelWindows - это уже свойство в ManagedApi.dll
Спасибо:

dart

Фотография
Дата: 14.07.2011
Ответить


Кстати по теме. В W7 х64 ДДЕ достаточно быстро запускается. Почти как в ХР.
Версия 2.6.2
Спасибо:

Артем_2

Фотография
Дата: 14.07.2011
Ответить


Цитата:
Артём, спасибо.
Посмотрю сегодня чего да как.

Кроме тебя ни у кого нет доступа к этим методам, поэтому названия остальным мало что скажут :)


Да, у меня тоже собственно не было... Располагал только классом QuikTrminal[confused]. Я думал
ManagedWinapi.dll заимствованная библиотека:

http://mwinapi.sourcefor...AllDescendantWindows.htm
Спасибо:

Alexander

Фотография
Дата: 14.07.2011
Ответить


Артем_2 Перейти
Цитата:
Артём, спасибо.
Посмотрю сегодня чего да как.

Кроме тебя ни у кого нет доступа к этим методам, поэтому названия остальным мало что скажут :)


Да, у меня тоже собственно не было... Располагал только классом QuikTrminal[confused]. Я думал
ManagedWinapi.dll заимствованная библиотека:

http://mwinapi.sourcefor...AllDescendantWindows.htm



Верно, так и есть.
Только http://mwinapi.sourcefor..._AllToplevelWindows.htm - вот как раз AllToplevelWindows.
Не совсем понял откуда взялось FilterToplevelWindows в выводах
Спасибо:

Артем_2

Фотография
Дата: 14.07.2011
Ответить


Цитата:
Дата: меньше минуты назад
Артем_2;8981 написал:
Цитата:
Артём, спасибо.
Посмотрю сегодня чего да как.

Кроме тебя ни у кого нет доступа к этим методам, поэтому названия остальным мало что скажут :)


Да, у меня тоже собственно не было... Располагал только классом QuikTrminal. Я думал
ManagedWinapi.dll заимствованная библиотека:

http://mwinapi.sourcefor...AllDescendantWindows.htm



Верно, так и есть.
Только http://mwinapi.sourcefor..._AllToplevelWindows.htm - вот как раз AllToplevelWindows.
Не совсем понял откуда взялось FilterToplevelWindows в выводах


Это я залез через задний так сказать проход внутрь AllToplevelWindows и определил, что
Код

        public static SystemWindow[] AllToplevelWindows
        {
            get
            {
                return SystemWindow.FilterToplevelWindows(new Predicate<SystemWindow>(SystemWindow.ALL.Invoke));
            }
        }
Спасибо:

Alexander

Фотография
Дата: 14.07.2011
Ответить


Есть предложения как от этой функции уйти?
Спасибо:

Артем_2

Фотография
Дата: 14.07.2011
Ответить


Увы, мои спосбности на этом этапе исчерпали себя[crying] Пока никаких предложений нету. Эта функция делает следующее:

Код

public static SystemWindow[] FilterToplevelWindows(Predicate<SystemWindow> predicate)
        {
            List<SystemWindow> wnds = new List<SystemWindow>();
            SystemWindow.EnumWindows((SystemWindow.EnumWindowsProc)((hwnd, lParam) =>
            {
                SystemWindow local_0 = new SystemWindow(hwnd);
                if (predicate(local_0))
                    wnds.Add(local_0);
                return 1;
            }), new IntPtr(0));
            return wnds.ToArray();
        }


Чего с этим делать пока непонятно
Спасибо:

Артем_2

Фотография
Дата: 14.07.2011
Ответить


А EnumWindows - это Api
Код

    [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static bool EnumWindows(SystemWindow.EnumWindowsProc lpEnumFunc, IntPtr lParam);
Спасибо:

Mikhail Sukhov

Фотография
Дата: 14.07.2011
Ответить


Артем_2 Перейти
Увы, мои спосбности на этом этапе исчерпали себя[crying] Пока никаких предложений нету.

...

Чего с этим делать пока непонятно


Предлагаю задать вопрос на сайте rsdn.ru и уже там дальше провести разбор полетов Это форум для программистов. Боюсь своими силами проблему не решить.
Спасибо:

Артем_2

Фотография
Дата: 14.07.2011
Ответить


Да, вот я думаю, может быть можно как-то кэшировать окна, а не производить посик каждый раз по всему списку открытых окон. На rsdn, конечно, тоже надо будет написать
Спасибо:
< 1 2 3 4 5  > >>

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy