Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Воздействие на стороннее приложение, Ввести и получить данные 
V
    Опции темы
BoomeR
Дата 14.5.2010, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 24.12.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Добрый день!

Есть задачка : существует кем-то, когда-то написанное приложение на Delphi, в которое зашиты атрибуты подключения к интересующей БД. Оно может свободно с этой БД взаимодействовать, путём ввода запроса в ListBox и выбора в ComboBox'e, и возвращения результатов в TextBox. Как мне программно осуществлять такое взаимодействие (C# предпочтителен  smile ).

Заранее спасибо.
PM MAIL WWW ICQ Skype   Вверх
A5uKa
Дата 14.5.2010, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: нет
Всего: 16



Надо написать простую Базу данных или взломать приложение на Delphi ? 

Не понимаю.
PM   Вверх
BoomeR
Дата 14.5.2010, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 24.12.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Нет, ничего не надо взламывать, а создать такую базу я не могу, т.к. не имею доступа к данным.

Опишу по-другому, есть приложение на Delphi оно обращается к БД с запросом и выводит ответ на экран. В ручную всё ясно, но мне нужно организовать "выкачку" данных, т.е. необходимо программно обращаться к этой программе и воздействовать на её контролы. Вот и вся задача.
PM MAIL WWW ICQ Skype   Вверх
GoldFinch
Дата 14.5.2010, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



PostMessage и GetWindowText - самый простой способ
PM MAIL ICQ   Вверх
BoomeR
Дата 14.5.2010, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 24.12.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



GoldFinch, раскажи подробнее, откуда эти функции?
PM MAIL WWW ICQ Skype   Вверх
GoldFinch
Дата 14.5.2010, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



BoomeR, из msdn. msdn из гугла.
PM MAIL ICQ   Вверх
BoomeR
Дата 16.5.2010, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 24.12.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Порывшись в сети и манах, пришёл к следующему решению :
Код

            System.Diagnostics.Process Duty = new System.Diagnostics.Process();
            Duty.StartInfo.FileName = @"C:\info.EXE";
            Duty.Start();
            System.Threading.Thread.Sleep(1000);

            IntPtr hWnd = FindWindow("TForm1", null);
            
            IntPtr hWnd2 = FindWindowEx(hWnd, IntPtr.Zero, "TGroupBox", null);
            hWnd = FindWindowEx(hWnd2, IntPtr.Zero, "TButton", null);
            SendMessage(hWnd, WM_LBUTTONDOWN, 0, null);
            SendMessage(hWnd, WM_LBUTTONUP, 0, null);
//Тут приложение перестаёт выполнятся до тех пор, пока не будет закрыто открывшееся по клику окно, как этого избежать? Мне надо с ним работать...
            hWnd = FindWindow("TFormOwner", null);
            hWnd2 = FindWindowEx(hWnd, IntPtr.Zero, "TMemo", null);
            SendMessage(hWnd, WM_SETTEXT, 0, "400   2631");


Как бороться?
PM MAIL WWW ICQ Skype   Вверх
Exception
Дата 16.5.2010, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Привет! Ты нашёл хороший пример, а с проблемой тоже можно справиться с помощью гугла.
http://www.google.com/search?q=sendmessage...ks+execution+c#
http://www.codeguru.com/forum/archive/inde...p/t-341896.html

И конкретно: SendMessage блокирует твою нить до обработки сообщения, а PostMessage возвращает контроль немедленно. Поскольку в твоём случае нажатие на кнопку вызывает модальное окно, имеет смысл использовать RostMessage, а потом организовать цикл, проверяющий, создалось ли новое окошко и делающий небольшую паузу на каждой итерации.
Всего хорошего!
PM   Вверх
BoomeR
Дата 17.5.2010, 06:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 24.12.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Exception, спасибо большое  smile  Осилил свою задачку  smile 
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.