Буфер обмена

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
oskolok_vatbI
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 112
Зарегистрирован: 07.07.2007 (Сб) 16:13
Откуда: г. Казань

Буфер обмена

Сообщение oskolok_vatbI » 23.08.2007 (Чт) 16:25

Здравствуйте, подскажите пожалуйста. У меня в буфере обмена находится путь и имя файла который нужно открыть сторонней программой. Как бы мне этот адресс в окно выбора файлов энтой самой программы запихать ? Единственное до чего дошел я сам - это SendKeys "^(V)", только почему-то не всегда срабатывает. Спасибо.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 23.08.2007 (Чт) 16:39

SetWindowText, предварительно найдя хэндл текстового поля диалога той программы.
Salus populi suprema lex

oskolok_vatbI
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 112
Зарегистрирован: 07.07.2007 (Сб) 16:13
Откуда: г. Казань

Сообщение oskolok_vatbI » 24.08.2007 (Пт) 13:34

Спасибо, с SetWindowText кажется немного разобрался. С хендлом поля труднее. Я использую FindWindow, ищу окно по заголовку ("Открыть"), нахожу, посылаю туда текст, который... конечно, встает в заголовок. Как узнать хендл нужного мне поля ввода в этом окне ?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.08.2007 (Пт) 13:41

FindWindowEx, с указанием полученного хэндла, как окна-родителя.
Lasciate ogni speranza, voi ch'entrate.

oskolok_vatbI
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 112
Зарегистрирован: 07.07.2007 (Сб) 16:13
Откуда: г. Казань

Сообщение oskolok_vatbI » 24.08.2007 (Пт) 14:22

Спасибо за быстрый ответ. Копаясь в форуме по поводу FindWindowEx пришел к выводу что для использования нужно знать название нужного поля ввода. Так это или нет ? И еще, отсылать текст в это поле можно той же SetWindowText ?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.08.2007 (Пт) 14:32

1) Это не так. Если знаешь его CtrlId, этого достаточно.
2) Можно той же.
Изображение

oskolok_vatbI
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 112
Зарегистрирован: 07.07.2007 (Сб) 16:13
Откуда: г. Казань

Сообщение oskolok_vatbI » 24.08.2007 (Пт) 15:15

Если FindWindowEx работает через CtrlId то нельзя ли попросить, хотя бы в двух словах рассказать об использовании ? Как узнать CtrlId строки ввода ?

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 24.08.2007 (Пт) 15:48

ResHacker, Restorator и прочие скажут его, если диалог этот в ресурсах смогут найти. Если же нет, то SpyXX может помочь
Изображение

oskolok_vatbI
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 112
Зарегистрирован: 07.07.2007 (Сб) 16:13
Откуда: г. Казань

Сообщение oskolok_vatbI » 24.08.2007 (Пт) 16:29

А в стандартном диалоге открытия файлов у строки "Имя файла" какой CtrlId ? Ибо развлечения с ResHacker доставили некоторое удовольствие, но получить желаемый результат не удалось.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 24.08.2007 (Пт) 20:37

А comdlg32.dll поковырять?
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.08.2007 (Сб) 14:14

oskolok_vatbI писал(а):А в стандартном диалоге открытия файлов у строки "Имя файла" какой CtrlId ?

&H47C
Изображение

oskolok_vatbI
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 112
Зарегистрирован: 07.07.2007 (Сб) 16:13
Откуда: г. Казань

Сообщение oskolok_vatbI » 26.08.2007 (Вс) 12:03

Что-то не работает у меня оно. Подскажите, пожалуйста, где я ошибаюсь:

hWin = FindWindow(vbNullString, "Открыть")
cWin = FindWindowEx(hWin, 0, "&H47C" , vbNullString)

Хотелось что-бы cWin был хендл нужной мне строки ввода. А в место этого – ноль.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 26.08.2007 (Вс) 12:32

FindWindowEx ищет по заголовку, а по идентификатору ищет GetDlgItem
Изображение

oskolok_vatbI
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 112
Зарегистрирован: 07.07.2007 (Сб) 16:13
Откуда: г. Казань

Сообщение oskolok_vatbI » 26.08.2007 (Вс) 13:49

Спасибо, почти заработало, для стандартного диалога открытия - работает совсем отлично. А вот у меня видимо он не совсем обычен. На vbzero.narod.ru нашел пример, показывающий хендл окон по координатам курсора мыши, задался вопросом - если известен хендл, то нельзя ли по нему определить имя или CtrlId элемента, который ему соответствует ?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 26.08.2007 (Вс) 14:03

GetDlgCtrlID
Изображение

oskolok_vatbI
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 112
Зарегистрирован: 07.07.2007 (Сб) 16:13
Откуда: г. Казань

Сообщение oskolok_vatbI » 26.08.2007 (Вс) 14:21

Большое спасибо, метод перебора - тоже тоже, конечно, принес результаты, но так наверное правильнее ))
Однако, нужный текст в строку не отправляется, я так понял только меняется имя строки ввода. Может нужно не SetWindowText использовать а что-то другое ?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 38

    TopList