Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Скопировать фрагмент из другого окна... Добавлено: 26.02.07 22:46  

Автор вопроса:  Сергей
Возможно, это плёвое дело, но у меня не пошло. Ситуация следующая: прога висит в трее, а окно IE активно. В этом окне выделен фрагмент, который необходимо передать проге для поиска в совершенно других файлах. Вызов идёт HotKey-глобалкой.

В лоб, при помощи функции SendInput, нажать Ctrl + C мне не удалось :-(. А "одиночные" нажатия клавиш срабатывают. Я пробовал сначала "нажимать" Ctrl, потом "нажимать" и "отпускать" C, а после - "отпускать" Ctrl. Но IE это было по-барабану. Подозреваю, что и в других окнах ситуация будет аналогичной (Мозила, например, не попёрла).

Те, кто сталкивался с этой проблемой, откликнитесь! Может, и вправду что-то не то делаю... Но мне кажется, что этот вариант "мёртвый". Существует ли другой способ?

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 27.02.07 06:56
Существует ли другой способ?

Читать документацию?
Пошли окну WM_COPY.

Ответить

Номер ответа: 2
Автор ответа:
 Сергей



Вопросов: 4
Ответов: 15
 Профиль | | #2 Добавлено: 27.02.07 08:20
Привожу цитату из другого форума:

Мне нужно послать Ctrl+C окну или контроллу,
Я пробовал SendMessage(HWD,WM_COPY,0,0)
Но Это работает только для edit или combobox.


Адрес странички: http://forum.codenet.ru/showthread.php?threadid=17215

Как видите, проблема не такая уж простая :-). Попробовал SendMassageA - не катит, просто ничего в Clipboard не пишется.

Ответить

Номер ответа: 3
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 27.02.07 09:45
Пойщи примеры скриншота экрана, только не через принтскрин, а по нормлаьному, GetDC итд... в нём вместо DC хендела поставь дс твоего окна...

Ответить

Номер ответа: 4
Автор ответа:
 Сергей



Вопросов: 4
Ответов: 15
 Профиль | | #4 Добавлено: 27.02.07 12:03
Мне не всё понятно... Да, я получил контекст устройства (в данном случае, окна, в котором имеется выделенный фрагмент), но что делать дальше - не совсем понимаю. В найденых примерах использовалась BitBit - но мне не нужно изображение.

В справке вообще говорится, что пользоваться контекстом устройства можно для рисования и (посредством функции BitBit) копирования указанной области в Picturebox. Другие фукции не упоминаются.

DC, конечно, вещь необъятная, мог чего-нибудь пропустить, но пока решение проблемы откладывается :-(.

Вот пример использования DC & BitBit, который я нашёл на http://subscribe.ru/archive/comp.soft.prog.vbnewsadvices/200506/08104449.html:


Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As
Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Sub Form_Load()
     ;Dim DeskDС As Long
     ;DeskDС = GetDC(GetDesktopWindow)
     Picture1.Width = Screen.Width 'необходимо подогнать размер
     Picture1.Height = Screen.Height 'PictureBox'а по размер экрана
     BitBlt Picture1.hDC, 0, 0, Screen.Width / Screen.TwipsPerPixelX, Screen.Height / Screen.TwipsPerPixelY, DeskDС, 0, 0,
vbSrcCopy
     SavePicture Picture1.Image, "C:\pic.bmp"
End Sub


Что именно мне следует заменить (и на что), чтобы получить выделенный текст в окне IE в буфер, или же в обычную стринговую переменную?

P.S.: простите, если туплую :-).

Ответить

Номер ответа: 5
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #5 Добавлено: 27.02.07 20:24
Вовсе даже не тупишь, причем здесь DC ?!
Вряд-ли WM_COPY если я правильно понял вопрос.
Если в проводнике выделены файлы в SysListView32, то надо SendMessage ~LVM_GETITEM~ и пр.

Ответить

Номер ответа: 6
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #6 Добавлено: 27.02.07 21:27
А "одиночные" нажатия клавиш срабатывают

GetAsyncKeyState ?

Ответить

Номер ответа: 7
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #7 Добавлено: 27.02.07 21:29
GetAsyncKeyState

Sorry, не в тему.

Ответить

Номер ответа: 8
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #8 Добавлено: 28.02.07 05:27
IHTMLDocument
http://www.vbforums.com/showthread.php?t=357460

Ответить

Номер ответа: 9
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #9 Добавлено: 01.03.07 15:03
дык, я тодумал что тебе изображение надо а не текс :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам