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

Подключение к Quik и запуск DDE
Atom
1/24/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();
			}


Tags:


Thanks:


< 1 2 3 4 5  > >>
Alexander

Avatar
Date: 7/14/2011
Reply


AllToplevelWindows - это уже свойство в ManagedApi.dll

Thanks:

dart

Avatar
Date: 7/14/2011
Reply


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

Thanks:

Артем_2

Avatar
Date: 7/14/2011
Reply


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

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

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

http://mwinapi.sourceforge.net/doc/html/P_ManagedWinapi_Windows_SystemWindow_AllDescendantWindows.htm

Thanks:

Alexander

Avatar
Date: 7/14/2011
Reply


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

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

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

http://mwinapi.sourceforge.net/doc/html/P_ManagedWinapi_Windows_SystemWindow_AllDescendantWindows.htm

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

Thanks:

Артем_2

Avatar
Date: 7/14/2011
Reply


Дата: меньше минуты назад Артем_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));
            }
        }

Thanks:

Alexander

Avatar
Date: 7/14/2011
Reply


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

Thanks:

Артем_2

Avatar
Date: 7/14/2011
Reply


Увы, мои спосбности на этом этапе исчерпали себя[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();
        }

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

Thanks:

Артем_2

Avatar
Date: 7/14/2011
Reply


А EnumWindows - это Api


    [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static bool EnumWindows(SystemWindow.EnumWindowsProc lpEnumFunc, IntPtr lParam);

Thanks:

Mikhail Sukhov

Avatar
Date: 7/14/2011
Reply


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

...

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

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

Thanks:

Артем_2

Avatar
Date: 7/14/2011
Reply


Да, вот я думаю, может быть можно как-то кэшировать окна, а не производить посик каждый раз по всему списку открытых окон. На rsdn, конечно, тоже надо будет написать

Thanks:
< 1 2 3 4 5  > >>

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy