управление окнами терминала QUIK

управление окнами терминала QUIK
Atom
02.02.2010
Alex Lable


Добрый день! Оценил вашу библиотеку, здорово вышло, очень
полезная...Щас пытаюсь на ее основе накодить робота. Интересен еще тот
факт, что программно запускается экспорт DDE в квике. Очень интересно,
как это реализовано, если есть возможность, то просьба дать
исходник...

Заранее спасибо и огромный вам респект!

Теги:


Спасибо:


Mikhail Sukhov

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


А в чем проблема просто использовать библиотеку? Нет каких-то
возможностей?

Спасибо:

Alex Lable

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


Да нет, все хватает, все отлично...Это так сказать для собственного
развития, интересно, как это реализовано...или если есть возможно, то
пожалуйста поделитесь ссылкой, где об этом можно почитать.
Спасибо:

Mikhail Sukhov

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


Да без проблем. Хоть конкурента пишите =) Вот ссылка

http://msdn.microsoft.com/en-us/library/ms632590%28VS.85%29.aspx


Спасибо:

Alex Lable

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


Еще раз здравствуйте!
Я тут написал утилиту на QPILE по обработке текущих данных, которые
уже представлены мне в нужном виде, получилось что-то похожее на
таблицу текущих параметров, но видоизмененная...Теперь, при запуске
робота нужно данные выводить в DDE, пытаюсь смоделировать сочетание
клавиш ctrl+L. Получаю дескриптор окна утилиты, перевожу фокус на
него, потом получаю дескриптор таблицы,, нажимаю программно сочетание
клавиш, но все равно не работает:

IntPtr lK = (IntPtr)17; //код CTRL
IntPtr rK = (IntPtr)65; //код L

retValue = SendMessage(hWnd, WM_KEYDOWN, IntPtr.Zero, IntPtr.Zero);
retValue = SendMessage(hWnd, WM_CHAR, lK, IntPtr.Zero);
retValue = SendMessage(hWnd, WM_KEYDOWN, IntPtr.Zero, IntPtr.Zero);
retValue = SendMessage(hWnd, WM_CHAR, rK, IntPtr.Zero);
retValue = SendMessage(hWnd, WM_KEYUP, lK, IntPtr.Zero);
retValue = SendMessage(hWnd, WM_KEYUP, lK, IntPtr.Zero);

Просьба помочь, а то уже третий день с этими кнопками маюсь...

Спасибо:

Mikhail Sukhov

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


С этим надо разбираться. А времени свободного сейчас нет
катастрофически (хотя когда оно бывает). Лучше задать на
программерском форуме вопрос. Или ждите, когда я освобожусь (думаю,
после середины след. недели).

Спасибо:

Alex Lable

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


Да мне объяснять не надо..мне бы только кусок кода, где в вашей
библиотеке идет нажатие клавиш ctrl+L, очень бы помогли этим.
Спасибо:

Mikhail Sukhov

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


QuikTrader.StardDde =)

А если без шуток, то опять же, нужно влазить в код, открывать
исходник, смотреть, где оно там. Это время, которое я берегу для новой
версии. Тут не все так просто. Это в Вашем примере все строчки идут
друг за другом. А в чуть сложных программах появляется инкапсуляция,
абстракция, и все может быть размыто на несколько сотен строк. Весь
код отдавать по этическим соображениям не могу - на S# построены
другие проекты, где я не единственный автор. Библиотека такая, какая
она есть сейчас (и такая останется). Бесплатная, без ограничений в
использовании, но с закрытым кодом.

Спасибо:

Igor Sukhov

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


SendMessage это я так понимаю interop? Попробуй тогда keybd_event -
она попроще в использовании.

Спасибо:

Alex Lable

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


Вот реализация, но почему то она тоже не работает, хотя фокус на
таблице.

keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event((byte)'L', 0, 0, 0);
keybd_event((byte)'L', 0, WM_KEYUP, 0);
keybd_event(VK_CONTROL, 0, WM_KEYUP, 0);

Попробовал также чере SendKeys.Send(), для таблицы текущих параметров
работает только SendKeys.Send("{F2}") - выставление новой заявки, а
вот сочетание Ctrl+L SendKeys.Send("^L") не хочет(((

Спасибо:


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

loading
clippy