Автор Тема: Копирование файлов в буфер и эмуляция Ctrl+V  (Прочитано 1387 раз)

0 Пользователей и 1 Гость просматривают эту тему.

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

Оффлайн mv6677 [?]

  • Новичок
  • *
  • Сообщений: 93
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Версия AutoIt: 3.3.14.0

Описание:
Здравствуйте.
Помогите решить задачу с быстрым однотипным копированием.

В папке "C:\каталог файлов\"    лежат файлы 1.jpg, 1.doc и 1.xls
Как скриптом autoit - скопировать эти файлы -  в буфер обмена и тут же сэмулировать нажатие клавиш Ctrl+V  ?

Примечания:

Русское сообщество AutoIt

Копирование файлов в буфер и эмуляция Ctrl+V
« Отправлен: Май 12, 2019, 20:36:45 »

Онлайн ra4o [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 958
  • Репутация: 176
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Относительно "тут же" не совсем понял , но скопировать и вставить в папку со скриптом можно так :
Код: AutoIt [Выделить]
#include <Misc.au3>
$FileDir='C:\Каталог файлов\'
$sFile=$FileDir&'1.jpg|'&$FileDir&'1.doc|'&$FileDir&'1.xls'
_ClipPutFile($sFile)
ShellExecuteWait(@ScriptDir)
Send('^v')

« Последнее редактирование: Май 13, 2019, 21:10:37 от ra4o »

Оффлайн mv6677 [?]

  • Новичок
  • *
  • Сообщений: 93

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
ra4o
Спасибо, но почему-то не работает.

Файлы помещаются в буфер обмена, но не происходит эмуляции Ctrl+V
Вместо этого открывается папка (где лежит запущенный скрипт) в Проводнике. И все.

Русское сообщество AutoIt

Re: Копирование файлов в буфер и эмуляция Ctrl+V
« Ответ #2 Отправлен: Май 13, 2019, 20:30:22 »

Онлайн ra4o [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 958
  • Репутация: 176
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Цитировать
открывается папка (где лежит запущенный скрипт) в Проводнике
Я не совсем понял - куда нужно копировать файлы , вот и копирую их в папку со скриптом...

Оффлайн mv6677 [?]

  • Новичок
  • *
  • Сообщений: 93

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
ra4o
Так в этом и заключается вопрос.
У этих файлов нет точного конечного пути копирования.

Они должны с помощью Ctrl+V вставиться в ту папку или окно, которое активно на текущий момент.
В окно Тотал Коммандера, или в какую-то папку Проводника, которая на момент запуска скрипта - активна.

(Я запускаю скрипт не щелчком мыши по нему)

Русское сообщество AutoIt

Re: Копирование файлов в буфер и эмуляция Ctrl+V
« Ответ #4 Отправлен: Май 13, 2019, 21:24:39 »

Онлайн ra4o [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 958
  • Репутация: 176
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Cделал всавку по HotKey "q" :
Код: AutoIt [Выделить]
#include <Misc.au3>
HotKeySet('q', 'Go')

$FileDir = 'C:\Каталог файлов\'
$sFile = $FileDir & '1.jpg|' & $FileDir & '1.docx|' & $FileDir & '1.xlsx'
_ClipPutFile($sFile)

While 1
    Sleep(200)
WEnd

Func Go()
    $hwnd = WinGetHandle("[ACTIVE]")
    If IsHWnd($hwnd) Then
        ControlSend('', '',$hwnd,'^v')
    EndIf
EndFunc  


Оффлайн mv6677 [?]

  • Новичок
  • *
  • Сообщений: 93

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
ra4o
А как работает этот скрипт ?

Он ошибки - не выдает, но непонятно что он делает.

Я его запускаю - ничего не происходит.
Нажимаю на клавишу "q" - тоже ничего не происходит.
« Последнее редактирование: Май 13, 2019, 23:10:43 от mv6677 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Код: AutoIt [Выделить]
#include <Misc.au3>
#include <Array.au3>
#include <WinAPIEx.au3>

_FixAccelHotKeyLayout()

HotKeySet('+v', '_Paste')
HotKeySet('{ESC}', '_Exit')

Global $sDir = 'C:\Каталог файлов'
Global $aFiles[] = _
    [ _
        $sDir & '\1.jpg', _
        $sDir & '\1.docx', _
        $sDir & '\1.xlsx' _
    ]

Global $sFiles = _ArrayToString($aFiles)
_ClipPutFile($sFiles)

While 1
    Sleep(10)
WEnd

Func _Exit()
    Exit
EndFunc

Func _Paste()
    ControlSend('[ACTIVE]', '', '', '+{ins}')
EndFunc

Func _FixAccelHotKeyLayout()
    Static $iKbrdLayout, $aKbrdLayouts
   
    If Execute('@exitMethod') <> '' Then
        Local $iUnLoad = 1
       
        For $i = 1 To Ubound($aKbrdLayouts) - 1
            If Hex($iKbrdLayout) = Hex('0x' & StringRight($aKbrdLayouts[$i], 4)) Then
                $iUnLoad = 0
                ExitLoop
            EndIf
        Next
       
        If $iUnLoad Then
            _WinAPI_UnloadKeyboardLayout($iKbrdLayout)
        EndIf
       
        Return
    EndIf
   
    $iKbrdLayout = 0x0409
    $aKbrdLayouts = _WinAPI_GetKeyboardLayoutList()
    _WinAPI_LoadKeyboardLayout($iKbrdLayout, $KLF_ACTIVATE)
   
    OnAutoItExitRegister('_FixAccelHotKeyLayout')
EndFunc


Вставка по Shift + v.


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Русское сообщество AutoIt

Re: Копирование файлов в буфер и эмуляция Ctrl+V
« Ответ #7 Отправлен: Май 13, 2019, 23:03:28 »

Оффлайн mv6677 [?]

  • Новичок
  • *
  • Сообщений: 93

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
CreatoR
Этот скрипт производит копирование - по нажатию двух клавиш : Shift + v

Я имел ввиду автоматическое Ctrl+v (без моего участия) - при запуске скрипта.
То есть скрипт запускается, сам делает Ctrl+v, и тут же закрывается.
« Последнее редактирование: Май 13, 2019, 23:19:48 от mv6677 »

Онлайн ra4o [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 958
  • Репутация: 176
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Цитировать
А как работает этот скрипт ?
Запускаете скрипт и при нажатии горячей клавиши "q" скрипт будет копировать файлы из списка $sFile в активное окно.

Оффлайн mv6677 [?]

  • Новичок
  • *
  • Сообщений: 93

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
xXx
Тоже не работает.
Даже в буфер обмена файлы не отправляет.


Добавлено: Май 14, 2019, 02:55:36
ra4o  [?]
Цитировать
Запускаете скрипт и при нажатии горячей клавиши "q" скрипт будет копировать файлы из списка $sFile в активное окно.

Скрипт запустил.
Он только скопировал файлы в буфер обмена.
На нажатие кнопки q - не реагирует.

Но я спрашивал - как автоматически копировать, не нажимая кнопки q.


Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
mv6677  [?]
Цитировать
скрипт запускается, сам делает Ctrl+v, и тут же закрывается

Код: AutoIt [Выделить]
#include <Misc.au3>
#include <Array.au3>

Global $sDir = 'C:\Каталог файлов'
Global $aFiles[] = _
    [ _
        $sDir & '\1.jpg', _
        $sDir & '\1.docx', _
        $sDir & '\1.xlsx' _
    ]

_ClipPutFile(_ArrayToString($aFiles))
ControlSend('[ACTIVE]', '', '', '+{ins}')
 


А как будет запускаться скрипт? если не из каталога куда нужно произвести копирование, то это тоже не сработает.

Онлайн ra4o [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 958
  • Репутация: 176
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Цитировать
Но я спрашивал - как автоматически копировать, не нажимая кнопки q.
А как Вы будете определять момент , когда именно нужно копировать ? Уберите HotKey и Цикл, бутет так , как Вы хотите:
Код: AutoIt [Выделить]
#include <Misc.au3>

$FileDir = 'C:\Каталог файлов\'
$sFile = $FileDir & '1.jpg|' & $FileDir & '1.docx|' & $FileDir & '1.xlsx'
_ClipPutFile($sFile)
$hwnd = WinGetHandle("[ACTIVE]")
If IsHWnd($hwnd) Then
    ControlSend('', '', $hwnd, '^v')
EndIf

У меня работает .

Оффлайн mv6677 [?]

  • Новичок
  • *
  • Сообщений: 93

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
ra4o
Я запускаю ваш скрипт из total commander.
Происходит копирование указанных файлов в буфер обмена.

Но ctrl+V не происходит.
Не действует эта команда.
Ничего не добавляется в папку.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
mv6677  [?]
Цитировать
Не действует эта команда.
Скорее всего раскладка по умолчанию в системе установлена как Русская.

Русское сообщество AutoIt

Re: Копирование файлов в буфер и эмуляция Ctrl+V
« Ответ #14 Отправлен: Май 15, 2019, 19:59:46 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
9 Ответов
18351 Просмотров
Последний ответ Июль 25, 2010, 14:14:43
от DOZOMIGAMIUS
1 Ответов
3483 Просмотров
Последний ответ Ноябрь 02, 2011, 15:47:07
от Redline
3 Ответов
9742 Просмотров
Последний ответ Май 31, 2013, 22:09:04
от Kaster
2 Ответов
2620 Просмотров
Последний ответ Октябрь 21, 2013, 23:53:57
от britanec74
0 Ответов
1392 Просмотров
Последний ответ Февраль 12, 2014, 22:10:59
от MrGep
8 Ответов
1929 Просмотров
Последний ответ Сентябрь 17, 2015, 22:26:15
от PoZiTiF
0 Ответов
818 Просмотров
Последний ответ Июль 19, 2016, 14:11:09
от nargoseo
3 Ответов
719 Просмотров
Последний ответ Декабрь 05, 2017, 13:21:55
от joiner
9 Ответов
690 Просмотров
Последний ответ Май 25, 2018, 11:34:03
от InnI
2 Ответов
290 Просмотров
Последний ответ Август 28, 2018, 10:20:52
от Hulk777