Что нового

Нужна помощь с выделением и копированием

Duffy

Новичок
Сообщения
18
Репутация
0
Всем привет, проблема такая , мой код открывает нотпад копирует все что в нём и оставляем в буфере обмена. Так вот все сделал , все работает, только вот мне надо чтобы он в фоновом или хотябы в свернутом режиме работал . Вот код
Код:
$pp = Run("notepad.exe", @SW_HIDE)
WinWait("[CLASS:NotePad]", "","")
sleep(300)
Send("^a")
Send("^ф")
sleep(300)
Send("^с")
Send("^c")

Как сделать чтобы команды Send работали именно в нотпаде а не в виндовсе.
Прога должна открыть нотпад скопировать все из не го и все, но чтобы не влияло на другие процессы в виндовсе. Желательно чтобы я таде не видел как это происходит, помогите плс доделать
 
Автор
D

Duffy

Новичок
Сообщения
18
Репутация
0
Да и забыл, простите может уже есть такие темы но поиск на сайте не позволяет найти!
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
А не проще напрямую из файла читать?
Код:
FileRead()
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Код:
clipput
- функция для вставки в буфер обмена
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Duffy
Ваш подход необычный. Попробуйте функцию
Код:
ControlGetText
она прочитает текст в переменную. Или попробуйте эту функцию
Код:
WinGetText
, потом из переменной через clipput поместите в буфер
 
Автор
D

Duffy

Новичок
Сообщения
18
Репутация
0
inververs сказал(а):
Duffy
Ваш подход необычный. Попробуйте функцию
Код:
ControlGetText
она прочитает текст в переменную. Или попробуйте эту функцию
Код:
WinGetText
, потом из переменной через clipput поместите в буфер
не подходят ControlGet не работает
winget копирует но не то что надо
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Хотелось бы взглянуть на ваш код, на результатах которого вы делаете свои выводы.
 
Автор
D

Duffy

Новичок
Сообщения
18
Репутация
0
inververs сказал(а):
Хотелось бы взглянуть на ваш код, на результатах которого вы делаете свои выводы.
смотрите код, просто надо чтобы скопировал все или вот я придумал, сделать чтобы команды Send именно в этом проуессе вводились


Добавлено:
Сообщение автоматически объединено:

Duffy сказал(а):
inververs сказал(а):
Хотелось бы взглянуть на ваш код, на результатах которого вы делаете свои выводы.
смотрите код, просто надо чтобы скопировал все или вот я придумал, сделать чтобы команды Send именно в этом проуессе вводились

Код:
$pp = Run("любой файл ворд, эксель и т.д",@SW_HIDE)
WinWait("[CLASS:любой файл ворд, эксель и т.д]", "","")
sleep(300)
Send("^a")
Send("^ф")
sleep(300)
Send("^с")
Send("^c")
sleep(1000)



Добавлено:
Сообщение автоматически объединено:

InnI сказал(а):
А не проще напрямую из файла читать?
Код:
FileRead()
Это не файл а программа
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
смотрите пример из функции
Код:
ControlGetText
 
Автор
D

Duffy

Новичок
Сообщения
18
Репутация
0
inververs сказал(а):
смотрите пример из функции
Код:
ControlGetText
она не помогает, можно ли сделать так вот запустить наприер нотпад и сохранить все что там есть и все что там написано в какойто файл хотябы?
я пользуюсь не нотпадом а программой для бухгалтера, она открывается и надо чтобы сохранял отчет в буфере обмена или же в другом файле, есть такая вот кнопка но она не выделяет весь отчет а только 1 строку а мне надо чтобы все строчки + не знаю как сделать чтобы кликало на эти кнопки
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
Duffy
1. Далеко не каждую программу можно запустить скрытой.
2. Send работает только с активными окнами.
3. Для работы с неактивными и скрытыми окнами можно использовать ControlSend, но для этого нужно знать информацию об элементе, содержащем текст.

запустить наприер нотпад и сохранить все что там есть
Код:
Run("notepad.exe " & @ScriptFullPath, "", @SW_HIDE)
$hWnd = WinWait("[class:Notepad]")
$Text = ControlGetText($hWnd, "", "Edit1")
FileWrite("script.txt", $Text)
WinClose($hWnd)
 
Автор
D

Duffy

Новичок
Сообщения
18
Репутация
0
InnI сказал(а):
Duffy
1. Далеко не каждую программу можно запустить скрытой.
2. Send работает только с активными окнами.
3. Для работы с неактивными и скрытыми окнами можно использовать ControlSend, но для этого нужно знать информацию об элементе, содержащем текст.

запустить наприер нотпад и сохранить все что там есть
Код:
Run("notepad.exe " & @ScriptFullPath, "", @SW_HIDE)
$hWnd = WinWait("[class:Notepad]")
$Text = ControlGetText($hWnd, "", "Edit1")
FileWrite("script.txt", $Text)
WinClose($hWnd)

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

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Чего вы сразу не сказали что у вас не блокнот?
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
Duffy
я пользуюсь не нотпадом а программой для бухгалтера
Ну а что вы тогда голову морочите... нотпад, любой файл ворд, эксель

Определите с помощью Au3Info элемент, в который нужно отправить нажатие клавиши, и используйте ControlSend.
 
Автор
D

Duffy

Новичок
Сообщения
18
Репутация
0
InnI сказал(а):
Duffy
я пользуюсь не нотпадом а программой для бухгалтера
Ну а что вы тогда голову морочите... нотпад, любой файл ворд, эксель

Определите с помощью Au3Info элемент, в который нужно отправить нажатие клавиши, и используйте ControlSend.
controlsend слишком тяжело , не понимаю, можете дать код который сенд будет работать именно в этой программе в свернутом виде или как есть пофиг , главное чтобы именно в этой программе
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
Duffy
код который сенд будет работать именно в этой программе
Для этого нужна информация об окне и элементе. Запустите Au3Info, перетащите мишень на элемент, в который вам нужно отправить нажатия, и скопируйте информацию с последней вкладки Summary.
 
Автор
D

Duffy

Новичок
Сообщения
18
Репутация
0
InnI сказал(а):
Duffy
код который сенд будет работать именно в этой программе
Для этого нужна информация об окне и элементе. Запустите Au3Info, перетащите мишень на элемент, в который вам нужно отправить нажатия, и скопируйте информацию с последней вкладки Summary.
я не настолько хорошо знаю код, все сделал как вы сказали а дальше что делать с информацией этой, куда и какой код писать. помогите сделать точно такой е код как начале темы только , чтобы сенд именно в моей проге работал
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
Duffy
что делать с информацией этой
Выкладывайте её сюда. Или можете попробовать сами заполнить
Код:
ControlSend("Title", "", "ClassnameNN", "^a")

Вместо Title и ClassnameNN подставьте соответствующие данные из Au3Info.
 
Автор
D

Duffy

Новичок
Сообщения
18
Репутация
0
InnI сказал(а):
Duffy
что делать с информацией этой
Выкладывайте её сюда. Или можете попробовать сами заполнить
Код:
ControlSend("Title", "", "ClassnameNN", "^a")

Вместо Title и ClassnameNN подставьте соответствующие данные из Au3Info.
Благодарю все прошло на ура, вы мой кумир =) поставил репу
 
Верх