передать горячую клавишу...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

передать горячую клавишу...

Сообщение drronnie » 26.10.2004 (Вт) 1:07

Господа, как передать активному окну клавишу типа Ctrl+Insert (надо скопировать в буфер обмена то, что там сейчас)...?
Компиляция - перевод словесного поноса в машинный код.

timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Сообщение timsoft » 26.10.2004 (Вт) 9:29

SendKeys "^{INSERT}", True не работает?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.10.2004 (Вт) 10:50

Мож не заниматья извращениями и послать сразу WM_COPY? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 28.10.2004 (Чт) 7:06

Спасибо!
Компиляция - перевод словесного поноса в машинный код.

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 30.10.2004 (Сб) 11:55

вот пишу call sendmessage (getforegroundwindow(),wm_copy,0,0)
а оно... болт!
Что не так?
Компиляция - перевод словесного поноса в машинный код.

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 01.11.2004 (Пн) 7:58

Прошу прощения за то, что реанимирую неинтересную тему....
Господа, ну подскажите.... очень нужно.....
Компиляция - перевод словесного поноса в машинный код.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.11.2004 (Пн) 11:30

Ты посылаешь переднему окну, а должен его текстбоксу :)
Юзай функцию GetGUIThreadInfo, чтобы сразу получить хэндл текстбокса...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 02.11.2004 (Вт) 0:50

GSerg писал(а):Ты посылаешь переднему окну, а должен его текстбоксу :)
Юзай функцию GetGUIThreadInfo, чтобы сразу получить хэндл текстбокса...
Правильно, в принципе, но в примере из API-Guide возвращается хэндл активного контрола только в том случае, если он принадлежит моему окну, а если нет - возвращает 0 :( Что делать?
Компиляция - перевод словесного поноса в машинный код.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 02.11.2004 (Вт) 2:46

FindWindow() по имени класса окна с известным тебе стартовым окном - MainEnemyWindow.hWnd. Рано или поздно (зависит от количества текстбоксов во вражеском объекте) получишь указатель на цель.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.11.2004 (Вт) 10:12

GetGUIThreadInfo возвращает всё и всегда, независимо ни от чего...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 02.11.2004 (Вт) 10:33

Ennor, а рано или поздно это как? Не всем же подряд передавать нужную комманду...
GSerg, должно возвращать.... а возвращает 0... Может я что-то торможу... но если я делаю текстбокс на своей форме - всё ок... Но на вражеской - болт...

Может быть сделаешь примерчик...
Не пойми не правильно, я вроде б как не чайник, но что-то нескладуха какая-то....
Сделай, плз, если не трудно....
Например, чтоб в Debug окно добавлялось по таймеру....
Т.е., сначала wm_copy активному окну, а затем из clipboard'а в debug... OK?
Компиляция - перевод словесного поноса в машинный код.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.11.2004 (Вт) 10:43

Код: Выделить всё
Option Explicit

Private Declare Function GetGUIThreadInfo Lib "user32.dll" (ByVal idThread As Long, ByRef pgui As GUITHREADINFO) As Long

Private Type RECT
  l As Long
  t As Long
  r As Long
  b As Long
End Type

Private Type GUITHREADINFO
  cbSize As Long
  flags As Long
  hwndActive As Long
  hwndFocus As Long
  hwndCapture As Long
  hwndMenuOwner As Long
  hwndMoveSize As Long
  hwndCaret As Long
  rcCaret As RECT
End Type

Private Sub Form_Load()
  Me.AutoRedraw = True
End Sub

Private Sub Timer1_Timer()
  Dim g As GUITHREADINFO
 
  g.cbSize = Len(g)
  GetGUIThreadInfo 0, g
  Me.Cls
  Me.Print g.hwndFocus
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 02.11.2004 (Вт) 16:50

GSerg, спасибо!
Понял в чём трабла... вместо 0 я юзул GetCurrentThreadId... Только посмотрел, её описание и въехал, а тут и ты ответил.... Спасибо!
Не думал, что с 0 она будет возвращать хэндл активного контрола окна активного треда....
Компиляция - перевод словесного поноса в машинный код.

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 02.11.2004 (Вт) 17:29

Ладно с копированием и вставкой разобрались... Но всё равно трабла возникает: Значит копирую текст, издеваюсь над ним и вставляю....
а вместо "Миранда" получаю "Ìèðàíäà" Что нужно сделать с текстом перед вставкой в буфер обмена... или вставлять надо как-то по-особенному, через АПИ например? Я просто делаю.
Код: Выделить всё
Clipboard.Clear
Clipboard.SetText...


Что тут не-так? Может в кодировку какую-то хитрую надо перевести? В koi-8r например?
Компиляция - перевод словесного поноса в машинный код.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.11.2004 (Вт) 18:56

Мож явно в формате vbcftext вставлять?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 02.11.2004 (Вт) 20:25

Всё-равно не получается...
Я ещё вот, что заметил:
Если сейчас стоит английская раскладка клавиатуры и я в Эксплорере копирую русский текст, а потом вставляю в код - то вставляются все русские символы как "?", а если при копированиее стоит русская раскладка - всё ОК...
Какая тут зависимость?
Компиляция - перевод словесного поноса в машинный код.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.11.2004 (Вт) 21:23

Зависимость в юникоде или в отсутствии оного.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 03.11.2004 (Ср) 1:34

А как в юникод перекодить? У меня примерчик есть - попробовал, не получается...
Компиляция - перевод словесного поноса в машинный код.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.11.2004 (Ср) 2:19

strconv не помогает?
Тогда попробуй сделать то, что мы делали для лечения корявого копипастинга из IDE. Поищи в Трёпе тему "Как копипастить... Ну, из этой... Ну, вы поняли..."
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 03.11.2004 (Ср) 8:08

Не нашёл....
Компиляция - перевод словесного поноса в машинный код.

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 03.11.2004 (Ср) 23:09

GSerg, а можно конкретнее.... а то я не нашёл то, о чём ты говорил...
Компиляция - перевод словесного поноса в машинный код.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.11.2004 (Чт) 10:20

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 06.11.2004 (Сб) 1:37

Спасибо!
Правда респект!
Компиляция - перевод словесного поноса в машинный код.


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 2

    TopList