Конференция "Начинающим" » Передать текстовые данные в поле сторонней программы [D7, WinXP]
 
  • Den (25.12.10 17:32) [0]
    Привт. У нас на работе используется Microsoft Communicator (картинка вот -> http://savepic.org/1004075.jpg). Есть также некая программа-справочник с сотрудниками (ФИО, тел, E-Mail? кабинет и т.д.). В Communicator можно выполнить поиск человека введя в соответствующее поле фамилию или E-Mail. Задача из программы-справочника скопировать например двойным кликом по строке с сотрудником его ФИО или мыло, не важно, в в строку поиска Communicator.

    Сначала видимо нужно скопировать в буфер значение определенной ячейки (ФИО например), потом вставить это значение в Communicator (предварительно запустив его если он не запущен). Вот тут и возникает вопрос как произвести вставку?
  • Rouse_ © (25.12.10 21:00) [1]

    > Вот тут и возникает вопрос как произвести вставку?

    WM_SETTEXT
  • Den (25.12.10 21:23) [2]

    > Rouse_ ©   (25.12.10 21:00) [1]

    А как определить какой именно программе предать содержимое? Ведь может еще что-то быть открыто у пользователя
  • Rouse_ © (25.12.10 21:26) [3]
    Ну тут уже сам думай как ты будешь детектировать нужное именно тебе приложение...
  • Den (25.12.10 21:44) [4]
    Я нашел такой пример:

    h:= FindWindow(nil, 'Оffice Communicator'); // Ищем окно
    SendMessage(h,WM_SETTEXT,0,LPARAM(PChar(Edit1.Text))); // сообщение



    Но в примере написано что это приведет к изменению заголовка найденного окна на содержимое эдита. А мне нужно вставить содержимое в эдит найденного овно а не менять его заголовок. Попробовать негде, на этом компе нет Дельфи
  • Rouse_ © (25.12.10 21:55) [5]
    Так ты найдешь просто окно программы, а не нужный тебе EDIT - почитай MSDN, там написано о организации окон...
  • tippa (25.12.10 22:08) [6]
    Den, тебе нужна програмка SPY++, через функции FindWindow и FindWindowEx ищешь хэндл нужного эдита и посылаешь в него текст через WM_SETTEXT.
  • Den (25.12.10 22:34) [7]

    > tippa   (25.12.10 22:08) [6]

    Не очень понял для чего мне SPY++, мне нужно все это реализовать в свой программе. Пока не могу разобраться как найти хендл контрола (эдита) нужного....
  • Германн © (26.12.10 03:32) [8]

    > Не очень понял для чего мне SPY++


    >  Пока не могу разобраться как найти хендл контрола (эдита)
    > нужного....
    >

    2+2 = 4
    В начинающие! :)
  • sniknik © (26.12.10 15:51) [9]
    > Не очень понял для чего мне SPY++
    это инструмент помогающий разобраться в структуре чужого приложения. грубо, в том, что на чем лежит.

    > мне нужно все это реализовать в свой программе.
    а посылать текст будешь на "деревню дедушке"?

    > Пока не могу разобраться как найти хендл контрола (эдита) нужного....
    сказали уже как...
    > через функции FindWindow и FindWindowEx ищешь хэндл нужного эдита ...
  • Curse © (27.12.10 07:47) [10]

    > Den, тебе нужна програмка SPY++, через функции FindWindow
    > и FindWindowEx ищешь хэндл нужного эдита и посылаешь в него
    > текст через WM_SETTEXT.


    Сейчас этот хэндл один, а после следующего запуска - другой. И Спай++ не поможет.
  • Palladin © (27.12.10 08:09) [11]
    и дейстивительно... на кой его придумали...
  • sniknik © (27.12.10 09:22) [12]
    точно! вслепую "тыкаться" гораздо интереснее... и в духе форумов, а то еще спрашивать не о чем будет.
  • Curse © (27.12.10 09:33) [13]
    Сорри, глупость сказал. Пойду читать Руссиновича, что о дескрипторах пишет.
 
Конференция "Начинающим" » Передать текстовые данные в поле сторонней программы [D7, WinXP]
Есть новые Нет новых   [134431   +13][b:0][p:0.001]