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


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

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

Теги:


Спасибо:



Именинники: SOBAKA27

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