Что нового

Выполнение последовательности операций, по списку файлов - в файле txt

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
Версия AutoIt: 3.3.14.2

Описание:

Добрый день, уважаемые программисты.

Как реализовать при помощи autoit - следующий алгоритм?
В папке лежит файл Список.txt и файл Итог.txt

Требуется открытие программой по умолчанию - уже существующего файла Итог.txt
Затем поочередное открытие - файлов из списка и перенос информации из них в файл Итог.txt.

(Открытие первого файла из списка, Ctrl+A, Ctrl+C, переход в файл Итог.txt , Ctrl+A, End, Ctrl+V, закрытие первого файла из списка, открытие второго файла из списка)
Закрытие файла Итог.txt с сохранением.

В итоге файл Итог - должен заполнится содержимым из файлов в списке - в той последовательности, в которой они там приведены.

Важно именно решение при помощи поочередного открытия файлов и использования горячих клавиш.

Примечания:
 

Вложения

  • 1.rar
    294 байт · Просмотры: 6

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
RipVanWinkel сказал(а):
Важно именно решение при помощи поочередного открытия файлов и использования горячих клавиш.

Все таки вам нужно это чудо которое вы предлагали сделать для объединения DOC файлов

Код:
#include <WinAPIProc.au3>
HotKeySet("{ESC}", "_Exit")

Global $sPathList = "Список.txt", $sOutTxt = "Итог.txt", $aList, $aWnds, $iOutPID, $hOutWnd, $iPID, $hWnd

$aList = FileReadToArray($sPathList)
If @error Then Exit MsgBox(16, "", "Ошибка списка.")

If Not FileExists($sOutTxt) Then Exit MsgBox(16, "", "Итог не существует.")
$iOutPID = ShellExecute($sOutTxt)
If Not $iOutPID Then
	MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
	$hOutWnd = WinGetHandle("[ACTIVE]")
Else
	Do
		Sleep(250)
		If Not ProcessExists($iOutPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
		$aWnds = _WinAPI_EnumProcessWindows($iOutPID)
	Until Not @error
	$hOutWnd = $aWnds[1][0]
EndIf

For $i = 0 To UBound($aList) - 1
	If Not FileExists($aList[$i]) Then ContinueLoop
	$iPID = ShellExecute($aList[$i])
	If Not $iOutPID Then
		MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
		$hWnd = WinGetHandle("[ACTIVE]")
	Else
		Do
			Sleep(250)
			If Not ProcessExists($iPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
			$aWnds = _WinAPI_EnumProcessWindows($iPID)
		Until Not @error
		$hWnd = $aWnds[1][0]
	EndIf
	WinActivate($hWnd)
	WinWaitActive($hWnd)
	ControlSend($hWnd, "", "", "^a^c")
	Sleep(250)
	WinActivate($hOutWnd)
	WinWaitActive($hOutWnd)
	ControlSend($hOutWnd, "", "", "^{END}^v")
	WinClose($hWnd)
	WinWaitClose($hWnd)
Next

ControlSend($hOutWnd, "", "", "^s")
Sleep(250)
WinClose($hOutWnd)

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 
Автор
R

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
Tempo , что-то не работает.

При запуске скрипта - открывается два файла Итог.txt и первый файл списка 12-4976.txt
Дальше ничего не происходит.
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
RipVanWinkel сказал(а):
Tempo , что-то не работает.

При запуске скрипта - открывается два файла Итог.txt и первый файл списка 12-4976.txt
Дальше ничего не происходит.

А в какой программе они у вас открываются? Это именно TXT файлы?


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

И еще у вас в примере пустые файлы так что рекомендую в них что-то написать
 
Автор
R

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
Tempo, ну вот те файлы которые я прикрепил - они открываются в обычной программе Блокнот (которая находится в Стандартных программах).

Насчет пустых файлов - разумеется я записал в них текст.
Но все равно не работает.
 

Вложения

  • 1.rar
    1.1 КБ · Просмотры: 2

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
RipVanWinkel сказал(а):
Но все равно не работает.

А с окнами которые открываются вы что-то делаете?

Убрал ожидание активности окна

Код:
#include <WinAPIProc.au3>
HotKeySet("{ESC}", "_Exit")

Global $sPathList = "Список.txt", $sOutTxt = "Итог.txt", $aList, $aWnds, $iOutPID, $hOutWnd, $iPID, $hWnd

$aList = FileReadToArray($sPathList)
If @error Then Exit MsgBox(16, "", "Ошибка списка.")

If Not FileExists($sOutTxt) Then Exit MsgBox(16, "", "Итог не существует.")
$iOutPID = ShellExecute($sOutTxt)
If Not $iOutPID Then
	MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
	$hOutWnd = WinGetHandle("[ACTIVE]")
Else
	Do
		Sleep(250)
		If Not ProcessExists($iOutPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
		$aWnds = _WinAPI_EnumProcessWindows($iOutPID)
	Until Not @error
	$hOutWnd = $aWnds[1][0]
EndIf

For $i = 0 To UBound($aList) - 1
	If Not FileExists($aList[$i]) Then ContinueLoop
	$iPID = ShellExecute($aList[$i])
	If Not $iOutPID Then
		MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
		$hWnd = WinGetHandle("[ACTIVE]")
	Else
		Do
			Sleep(250)
			If Not ProcessExists($iPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
			$aWnds = _WinAPI_EnumProcessWindows($iPID)
		Until Not @error
		$hWnd = $aWnds[1][0]
	EndIf
	WinActivate($hWnd)
	ControlSend($hWnd, "", "", "^a^c")
	Sleep(250)
	WinActivate($hOutWnd)
	ControlSend($hOutWnd, "", "", "^{END}^v")
	WinClose($hWnd)
	WinWaitClose($hWnd)
Next

ControlSend($hOutWnd, "", "", "^s")
Sleep(250)
WinClose($hOutWnd)

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 
Автор
R

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
Tempo, нет - с окнами ничего не делаю - дожидаюсь когда выполнится скрипт.

Сейчас скрипт работает так.
Сперва открывается файл Итог.txt
Затем открывается первый файл из списка.
Идет переключение на файл Итог.txt (но ничего не копируется)
Затем открывается первый файл из списка.
Опять идет переключение на файл Итог.txt (и опять ничего не копируется)
Потом то же происходит и с третьим файлом.

То есть происходит постепенное открытие и переключение между окнами, но файл Итог.txt - остается пустым.
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
RipVanWinkel сказал(а):
То есть происходит постепенное открытие и переключение между окнами, но файл Итог.txt - остается пустым.

А если так

Код:
#include <WinAPIProc.au3>
HotKeySet("{ESC}", "_Exit")

Global $sPathList = "Список.txt", $sOutTxt = "Итог.txt", $aList, $aWnds, $iOutPID, $hOutWnd, $iPID, $hWnd

$aList = FileReadToArray($sPathList)
If @error Then Exit MsgBox(16, "", "Ошибка списка.")

If Not FileExists($sOutTxt) Then Exit MsgBox(16, "", "Итог не существует.")
$iOutPID = ShellExecute($sOutTxt)
If Not $iOutPID Then
    MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
    $hOutWnd = WinGetHandle("[ACTIVE]")
Else
    Do
        Sleep(250)
        If Not ProcessExists($iOutPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
        $aWnds = _WinAPI_EnumProcessWindows($iOutPID)
    Until Not @error
    $hOutWnd = $aWnds[1][0]
EndIf

For $i = 0 To UBound($aList) - 1
    If Not FileExists($aList[$i]) Then ContinueLoop
    $iPID = ShellExecute($aList[$i])
    If Not $iOutPID Then
        MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
        $hWnd = WinGetHandle("[ACTIVE]")
    Else
        Do
            Sleep(250)
            If Not ProcessExists($iPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
            $aWnds = _WinAPI_EnumProcessWindows($iPID)
        Until Not @error
        $hWnd = $aWnds[1][0]
    EndIf
    WinActivate($hWnd)
    ControlSend($hWnd, "", "", "^a")
    Sleep(250)
    ControlSend($hWnd, "", "", "^c")
    Sleep(250)
    WinActivate($hOutWnd)
    ControlSend($hOutWnd, "", "", "^{END}")
	Sleep(250)
	ControlSend($hOutWnd, "", "", "^v")
	Sleep(250)
    WinClose($hWnd)
    WinWaitClose($hWnd)
Next

ControlSend($hOutWnd, "", "", "^s")
Sleep(250)
WinClose($hOutWnd)

Func _Exit()
    Exit
EndFunc   ;==>_Exit


И еще вариант

Код:
#include <WinAPIProc.au3>
HotKeySet("{ESC}", "_Exit")

Global $sPathList = "Список.txt", $sOutTxt = "Итог.txt", $aList, $aWnds, $iOutPID, $hOutWnd, $iPID, $hWnd

$aList = FileReadToArray($sPathList)
If @error Then Exit MsgBox(16, "", "Ошибка списка.")

If Not FileExists($sOutTxt) Then Exit MsgBox(16, "", "Итог не существует.")
$iOutPID = ShellExecute($sOutTxt)
If Not $iOutPID Then
    MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
    $hOutWnd = WinGetHandle("[ACTIVE]")
Else
    Do
        Sleep(250)
        If Not ProcessExists($iOutPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
        $aWnds = _WinAPI_EnumProcessWindows($iOutPID)
    Until Not @error
    $hOutWnd = $aWnds[1][0]
EndIf

For $i = 0 To UBound($aList) - 1
    If Not FileExists($aList[$i]) Then ContinueLoop
    $iPID = ShellExecute($aList[$i])
    If Not $iOutPID Then
        MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
        $hWnd = WinGetHandle("[ACTIVE]")
    Else
        Do
            Sleep(250)
            If Not ProcessExists($iPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
            $aWnds = _WinAPI_EnumProcessWindows($iPID)
        Until Not @error
        $hWnd = $aWnds[1][0]
    EndIf
    WinActivate($hWnd)
    Send("^a")
    Sleep(250)
    Send("^c")
    Sleep(250)
    WinActivate($hOutWnd)
     Send("^{END}") 
	Sleep(250)
	Send("^v")
	Sleep(250)
    WinClose($hWnd)
    WinWaitClose($hWnd)
Next

Send("^s")
Sleep(250)
WinClose($hOutWnd)

Func _Exit()
    Exit
EndFunc   ;==>_Exit
 
Автор
R

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
Tempo , сейчас открываются только Итог.txt и первый файл из списка.
Дальше ничего не происходит.
(у обоих вариантов такой эффект)
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Код:
#include <WinAPIProc.au3>
HotKeySet("{ESC}", "_Exit")

Global $sPathList = "Список.txt", $sOutTxt = "Итог.txt", $aList, $aWnds, $iOutPID, $hOutWnd, $iPID, $hWnd

$aList = FileReadToArray($sPathList)
If @error Then Exit MsgBox(16, "", "Ошибка списка.")

If Not FileExists($sOutTxt) Then Exit MsgBox(16, "", "Итог не существует.")
$iOutPID = ShellExecute($sOutTxt)
If Not $iOutPID Then
    MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
    $hOutWnd = WinGetHandle("[ACTIVE]")
Else
    Do
        Sleep(250)
        If Not ProcessExists($iOutPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
        $aWnds = _WinAPI_EnumProcessWindows($iOutPID)
    Until Not @error
    $hOutWnd = $aWnds[1][0]
EndIf

For $i = 0 To UBound($aList) - 1
    If Not FileExists($aList[$i]) Then ContinueLoop
    $iPID = ShellExecute($aList[$i])
    If Not $iOutPID Then
        MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
        $hWnd = WinGetHandle("[ACTIVE]")
    Else
        Do
            Sleep(250)
            If Not ProcessExists($iPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
            $aWnds = _WinAPI_EnumProcessWindows($iPID)
        Until Not @error
        $hWnd = $aWnds[1][0]
    EndIf
    WinActivate($hWnd)
	ClipPut("")
	Do
		ControlSend($hWnd, "", "", "^a")
		Sleep(250)
		ControlSend($hWnd, "", "", "^c")
		Sleep(250)
	Until ClipGet()
	WinActivate($hOutWnd)
    ControlSend($hOutWnd, "", "", "^{END}")
	Sleep(250)
	ControlSend($hOutWnd, "", "", "^v")
	Sleep(250)
    WinClose($hWnd)
    WinWaitClose($hWnd)
Next

ControlSend($hOutWnd, "", "", "^s")
Sleep(250)
WinClose($hOutWnd)

Func _Exit()
    Exit
EndFunc   ;==>_Exit
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
RipVanWinkel [?]
(Открытие первого файла из списка, Ctrl+A, Ctrl+C, переход в файл Итог.txt , Ctrl+A, End, Ctrl+V, закрытие первого файла из списка, открытие второго файла из списка)
это зачем? зачем городить огород, если просто считать файлы и все вписать в один. там несколько строк кода
зачем эмулирование нажатия клавиш?
 
Автор
R

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
Tempo , то же самое.
Открываются только Итог.txt и первый файл из списка - больше ничего не происходит.
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
RipVanWinkel сказал(а):
Tempo , то же самое.
Открываются только Итог.txt и первый файл из списка - больше ничего не происходит.

У вас те окна что открываются активны или нет?

Код:
#include <WinAPIProc.au3>
HotKeySet("{ESC}", "_Exit")

Global $sPathList = "Список.txt", $sOutTxt = "Итог.txt", $aList, $aWnds, $iOutPID, $hOutWnd, $iPID, $hWnd

$aList = FileReadToArray($sPathList)
If @error Then Exit MsgBox(16, "", "Ошибка списка.")

If Not FileExists($sOutTxt) Then Exit MsgBox(16, "", "Итог не существует.")
$iOutPID = ShellExecute($sOutTxt)
If Not $iOutPID Then
    MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
    $hOutWnd = WinGetHandle("[ACTIVE]")
Else
    Do
        Sleep(250)
        If Not ProcessExists($iOutPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
        $aWnds = _WinAPI_EnumProcessWindows($iOutPID)
    Until Not @error
    $hOutWnd = $aWnds[1][0]
EndIf

For $i = 0 To UBound($aList) - 1
    If Not FileExists($aList[$i]) Then ContinueLoop
    $iPID = ShellExecute($aList[$i])
    If Not $iOutPID Then
        MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
        $hWnd = WinGetHandle("[ACTIVE]")
    Else
        Do
            Sleep(250)
            If Not ProcessExists($iPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
            $aWnds = _WinAPI_EnumProcessWindows($iPID)
        Until Not @error
        $hWnd = $aWnds[1][0]
    EndIf
    WinActivate($hWnd)
    Send("^a")
    Sleep(250)
    Send("^c")
    Sleep(250)
    WinActivate($hOutWnd)
     Send("^{END}") 
    Sleep(250)
    Send("^v")
    Sleep(250)
    WinClose($hWnd)
    WinWaitClose($hWnd)
Next

Send("^s")
Sleep(250)
WinClose($hOutWnd)

Func _Exit()
    Exit
EndFunc   ;==>_Exit



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

Еще вариант

Код:
#include <WinAPIProc.au3>
HotKeySet("{ESC}", "_Exit")

Global $sPathList = "Список.txt", $sOutTxt = "Итог.txt", $aList, $aWnds, $iOutPID, $hOutWnd, $iPID, $hWnd

$aList = FileReadToArray($sPathList)
If @error Then Exit MsgBox(16, "", "Ошибка списка.")

If Not FileExists($sOutTxt) Then Exit MsgBox(16, "", "Итог не существует.")
$iOutPID = ShellExecute($sOutTxt)
If Not $iOutPID Then
    MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
    $hOutWnd = WinGetHandle("[ACTIVE]")
Else
    Do
        Sleep(250)
        If Not ProcessExists($iOutPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
        $aWnds = _WinAPI_EnumProcessWindows($iOutPID)
    Until Not @error
    $hOutWnd = $aWnds[1][0]
EndIf

For $i = 0 To UBound($aList) - 1
    If Not FileExists($aList[$i]) Then ContinueLoop
    $iPID = ShellExecute($aList[$i])
    If Not $iOutPID Then
        MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
        $hWnd = WinGetHandle("[ACTIVE]")
    Else
        Do
            Sleep(250)
            If Not ProcessExists($iPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
            $aWnds = _WinAPI_EnumProcessWindows($iPID)
        Until Not @error
        $hWnd = $aWnds[1][0]
    EndIf
    WinActivate($hWnd)
	ControlSend($hWnd, "", "", "{CTRLDOWN}a{CTRLUP}")
	Sleep(250)
	ControlSend($hWnd, "", "", "{CTRLDOWN}c{CTRLUP}")
	Sleep(250)
	WinActivate($hOutWnd)
    ControlSend($hOutWnd, "", "", "{CTRLDOWN}{END}{CTRLUP}")
	Sleep(250)
	ControlSend($hOutWnd, "", "", "{CTRLDOWN}v{CTRLUP}")
	Sleep(250)
    WinClose($hWnd)
    WinWaitClose($hWnd)
Next

ControlSend($hOutWnd, "", "", "{CTRLDOWN}s{CTRLUP}")
Sleep(250)
WinClose($hOutWnd)

Func _Exit()
    Exit
EndFunc   ;==>_Exit

Код:
#include <WinAPIProc.au3>
HotKeySet("{ESC}", "_Exit")

Global $sPathList = "Список.txt", $sOutTxt = "Итог.txt", $aList, $aWnds, $iOutPID, $hOutWnd, $iPID, $hWnd

$aList = FileReadToArray($sPathList)
If @error Then Exit MsgBox(16, "", "Ошибка списка.")

If Not FileExists($sOutTxt) Then Exit MsgBox(16, "", "Итог не существует.")
$iOutPID = ShellExecute($sOutTxt)
If Not $iOutPID Then
    MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
    $hOutWnd = WinGetHandle("[ACTIVE]")
Else
    Do
        Sleep(250)
        If Not ProcessExists($iOutPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
        $aWnds = _WinAPI_EnumProcessWindows($iOutPID)
    Until Not @error
    $hOutWnd = $aWnds[1][0]
EndIf

For $i = 0 To UBound($aList) - 1
    If Not FileExists($aList[$i]) Then ContinueLoop
    $iPID = ShellExecute($aList[$i])
    If Not $iOutPID Then
        MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
        $hWnd = WinGetHandle("[ACTIVE]")
    Else
        Do
            Sleep(250)
            If Not ProcessExists($iPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
            $aWnds = _WinAPI_EnumProcessWindows($iPID)
        Until Not @error
        $hWnd = $aWnds[1][0]
    EndIf
    WinActivate($hWnd)
	Send("{CTRLDOWN}a{CTRLUP}")
	Sleep(250)
	Send("{CTRLDOWN}c{CTRLUP}")
	Sleep(250)
	WinActivate($hOutWnd)
    Send("{CTRLDOWN}{END}{CTRLUP}")
	Sleep(250)
	Send"{CTRLDOWN}v{CTRLUP}")
	Sleep(250)
    WinClose($hWnd)
    WinWaitClose($hWnd)
Next

Send("{CTRLDOWN}s{CTRLUP}")
Sleep(250)
WinClose($hOutWnd)

Func _Exit()
    Exit
EndFunc   ;==>_Exit
 
Автор
R

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
Tempo, первый скрипт в каждом открытом файле (из списка) - в первой строчке написал буквы "ac", а в файле Итог.txt образовалась строчка "vvvs"

Второй код поочередно открывает окна файлов из списка, периодически переключает активность окна на Итог.txt (но ничего не копирует)
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
RipVanWinkel сказал(а):
Tempo, первый скрипт в каждом открытом файле (из списка) - в первой строчке написал буквы "ac", а в файле Итог.txt образовалась строчка "vvvs"

Это значит что Send эмулирует нажатия без CTRL (три раза CTRL+V и для сохранения CTRL+S) и пока что у меня нет идей почему у вас это происходит именно так
У меня работают все варианты :scratch:


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

Этот вариант пробовали?

Код:
#include <WinAPIProc.au3>
HotKeySet("{ESC}", "_Exit")

Global $sPathList = "Список.txt", $sOutTxt = "Итог.txt", $aList, $aWnds, $iOutPID, $hOutWnd, $iPID, $hWnd

$aList = FileReadToArray($sPathList)
If @error Then Exit MsgBox(16, "", "Ошибка списка.")

If Not FileExists($sOutTxt) Then Exit MsgBox(16, "", "Итог не существует.")
$iOutPID = ShellExecute($sOutTxt)
If Not $iOutPID Then
    MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
    $hOutWnd = WinGetHandle("[ACTIVE]")
Else
    Do
        Sleep(250)
        If Not ProcessExists($iOutPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
        $aWnds = _WinAPI_EnumProcessWindows($iOutPID)
    Until Not @error
    $hOutWnd = $aWnds[1][0]
EndIf

For $i = 0 To UBound($aList) - 1
    If Not FileExists($aList[$i]) Then ContinueLoop
    $iPID = ShellExecute($aList[$i])
    If Not $iOutPID Then
        MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
        $hWnd = WinGetHandle("[ACTIVE]")
    Else
        Do
            Sleep(250)
            If Not ProcessExists($iPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
            $aWnds = _WinAPI_EnumProcessWindows($iPID)
        Until Not @error
        $hWnd = $aWnds[1][0]
    EndIf
    WinActivate($hWnd)
    Send("{CTRLDOWN}a{CTRLUP}")
    Sleep(250)
    Send("{CTRLDOWN}c{CTRLUP}")
    Sleep(250)
    WinActivate($hOutWnd)
    Send("{CTRLDOWN}{END}{CTRLUP}")
    Sleep(250)
    Send"{CTRLDOWN}v{CTRLUP}")
    Sleep(250)
    WinClose($hWnd)
    WinWaitClose($hWnd)
Next

Send("{CTRLDOWN}s{CTRLUP}")
Sleep(250)
WinClose($hOutWnd)

И еще

Код:
#include <WinAPIProc.au3>
HotKeySet("{ESC}", "_Exit")

Global $sPathList = "Список.txt", $sOutTxt = "Итог.txt", $aList, $aWnds, $iOutPID, $hOutWnd, $iPID, $hWnd

$aList = FileReadToArray($sPathList)
If @error Then Exit MsgBox(16, "", "Ошибка списка.")

If Not FileExists($sOutTxt) Then Exit MsgBox(16, "", "Итог не существует.")
$iOutPID = ShellExecute($sOutTxt)
If Not $iOutPID Then
    MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
    $hOutWnd = WinGetHandle("[ACTIVE]")
Else
    Do
        Sleep(250)
        If Not ProcessExists($iOutPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
        $aWnds = _WinAPI_EnumProcessWindows($iOutPID)
    Until Not @error
    $hOutWnd = $aWnds[1][0]
EndIf

For $i = 0 To UBound($aList) - 1
    If Not FileExists($aList[$i]) Then ContinueLoop
    $iPID = ShellExecute($aList[$i])
    If Not $iOutPID Then
        MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
        $hWnd = WinGetHandle("[ACTIVE]")
    Else
        Do
            Sleep(250)
            If Not ProcessExists($iPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
            $aWnds = _WinAPI_EnumProcessWindows($iPID)
        Until Not @error
        $hWnd = $aWnds[1][0]
    EndIf
    WinActivate($hWnd)
	Send("{CTRLDOWN}")
	Sleep(250)
	Send("a")
	Sleep(250)
	Send("c")
	Sleep(250)
	Send("{CTRLUP}")
	Sleep(250)
	WinActivate($hOutWnd)
    Send("{CTRLDOWN}")
	Sleep(250)
	Send("{END}")
	Sleep(250)
	Send("v")
	Sleep(250)
	Send("{CTRLUP}")
	Sleep(250)
    WinClose($hWnd)
    WinWaitClose($hWnd)
Next

Send("{CTRLDOWN}")
Sleep(250)
Send("s")
Sleep(250)
Send("{CTRLUP}")
Sleep(250)
WinClose($hOutWnd)

Func _Exit()
    Exit
EndFunc   ;==>_Exit


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

И еще

Код:
#include <WinAPIProc.au3>
#include <WinAPISys.au3>
#include <WinAPIvkeysConstants.au3>
HotKeySet("{ESC}", "_Exit")

Global $sPathList = "Список.txt", $sOutTxt = "Итог.txt", $aList, $aWnds, $iOutPID, $hOutWnd, $iPID, $hWnd

$aList = FileReadToArray($sPathList)
If @error Then Exit MsgBox(16, "", "Ошибка списка.")

If Not FileExists($sOutTxt) Then Exit MsgBox(16, "", "Итог не существует.")
$iOutPID = ShellExecute($sOutTxt)
If Not $iOutPID Then
	MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
	$hOutWnd = WinGetHandle("[ACTIVE]")
Else
	Do
		Sleep(250)
		If Not ProcessExists($iOutPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
		$aWnds = _WinAPI_EnumProcessWindows($iOutPID)
	Until Not @error
	$hOutWnd = $aWnds[1][0]
EndIf

For $i = 0 To UBound($aList) - 1
	If Not FileExists($aList[$i]) Then ContinueLoop
	$iPID = ShellExecute($aList[$i])
	If Not $iOutPID Then
		MsgBox(48, "", "Нажмите ОК когда появится нужное окно.")
		$hWnd = WinGetHandle("[ACTIVE]")
	Else
		Do
			Sleep(250)
			If Not ProcessExists($iPID) Then Exit MsgBox(16, "", "Ошибка запуска.")
			$aWnds = _WinAPI_EnumProcessWindows($iPID)
		Until Not @error
		$hWnd = $aWnds[1][0]
	EndIf
	WinActivate($hWnd)
	_WinAPI_Keybd_Event($VK_CONTROL, 0)
	Sleep(250)
	_WinAPI_Keybd_Event($VK_A, 0)
	Sleep(100)
	_WinAPI_Keybd_Event($VK_A, $KEYEVENTF_KEYUP)
	Sleep(250)
	_WinAPI_Keybd_Event($VK_C, 0)
	Sleep(100)
	_WinAPI_Keybd_Event($VK_C, $KEYEVENTF_KEYUP)
	Sleep(250)
	_WinAPI_Keybd_Event($VK_CONTROL, $KEYEVENTF_KEYUP)
	Sleep(250)
	WinActivate($hOutWnd)
	_WinAPI_Keybd_Event($VK_CONTROL, 0)
	Sleep(250)
	_WinAPI_Keybd_Event($VK_END, 0)
	Sleep(100)
	_WinAPI_Keybd_Event($VK_END, $KEYEVENTF_KEYUP)
	Sleep(250)
	_WinAPI_Keybd_Event($VK_V, 0)
	Sleep(100)
	_WinAPI_Keybd_Event($VK_V, $KEYEVENTF_KEYUP)
	Sleep(250)
	_WinAPI_Keybd_Event($VK_CONTROL, $KEYEVENTF_KEYUP)
	Sleep(250)
	WinClose($hWnd)
	WinWaitClose($hWnd)
Next

_WinAPI_Keybd_Event($VK_CONTROL, 0)
Sleep(250)
_WinAPI_Keybd_Event($VK_S, 0)
Sleep(100)
_WinAPI_Keybd_Event($VK_S, $KEYEVENTF_KEYUP)
Sleep(250)
_WinAPI_Keybd_Event($VK_CONTROL, $KEYEVENTF_KEYUP)
Sleep(250)
WinClose($hOutWnd)

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 
Автор
R

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
Tempo , первые два - опять выводят текст - ac vvvs
А вот последний - заработал как надо.
Огромное вам спасибо.
 
Верх