Недавние сообщения

Страницы: [1] 2 3 ... 10
1
ребят, хелп. может не совсем по адресу, но пишу скрипт для работы с файлами с помощью функции FileOpenDialog, так вот, возник затык, при выборе одного файла, все хоршо, он копируется куда надо, но стоит выбрать несколько файлов в диалоге, то ничего не происходит. Не знаю как решить задачку, через какой цикл или с помощью массива? подскажите

Код: AutoIt [Выделить]
Func OPNDLG() ; если шара не подключилась, открываю выбор вручную
$sFilePath = FileOpenDialog('Нет подключения к шаре, покажи где файлы', '\', "(*.ndk;*.nsf;*.id)" ,4) ;
If @error Then
    MsgBox(4096, "", "Не выбрано ни одного файла")
Else
    FileCopy($sFilePath, @DesktopDir)
EndIf
EndFunc
 

2
Стол заказов / Re: переключать последовательно на следующее окно
« Последний ответ от InnI Отправлен Сегодня в 00:16:36 »
endpoints
Цитировать
Смысл в запуске данного скрипта по хоткею
Запуск скрипта означает, что скрипт НЕ работает. При работающем скрипте по горячей клавише запускается функция. Это совсем не одно и то же. Если вам нужно переключать окна именно при запуске скрипта, то проблемы я описал выше.

Предлагаю такой вариант. При запущенном скрипте клавиша F2 переключает на следующее окно после активного. Если активного нет, то активируется то, которое последним было активно. При попытке переключения на несуществующее окно вся цепочка будет обновлена автоматически и переключится на следующее окно (при наличии) в новой цепочке. Если будете добавлять новые окна, то нужно принудительно обновить цепочку (F3), иначе новые окна не будут учитываться. Также, по F3, можете обновить последовательность окон в любой момент. Горячие клавиши, естественно, можете изменить. 
(нажмите для показа/скрытия)
3
NickSpirit,  тоже не работает

1.Запускаю скрипт.
2.Тут же автоматически запускается файл 222.doc
3.Тут же - в начало строки файла 222.doc автоматически вставляется текст "ac" и  предлагается сохранить файл 222.doc перед закрытием.
4.Я сохраняю и закрываю файл 222.doc
5.После закрытия файла 222.doc - открываю файл 111.doc
6.Находясь в файле 111.doc  при нажатии клавиши Insert - вставляется символ "v".

Возможно в вашем коде команды Send("^a",0) Send("^c",0) Send("^v") - не являются командами Ctrl+a, Ctrl+c, Ctrl+v
Потому что выдает - просто буквы "a", "c" и "v" - а не как сочетания клавиш в связке с Ctrl
4
Смею предположить что из-за различия версий - ну да ладно.

Код: AutoIt [Выделить]
#RequireAdmin
#include <File.au3>
#include <Word.au3>
Opt("WinTitleMatchMode", 2)
Global $buffer
$oWordApp = _Word_Create("")
$oDoc = _Word_DocOpen ($oWordApp, @ScriptDir & "\222.doc")
$oDoc = _Word_DocOpen ($oWordApp, @ScriptDir & "\222.doc")
WinWaitActive("222")
Send("^a",0)
Sleep(100)
Send("^c",0)
$buffer=ClipGet()
WinClose("222")
HotKeySet("{Insert}", "_StartInsert")
HotKeySet("{End}","_Exit")
While 1
   Sleep(100)
WEnd

Func _StartInsert()
        ClipPut($buffer)
    Send("^v")
EndFunc

Func _Exit()
    Exit 0
EndFunc
 

5
joiner, теперь все ясно.
Спасибо за помощь.
6
это дескрипторы окон, по которому ты кликнул
ты можешь вставить свое сообщение. К примеру, привет Вася, или любое другое)))
то есть
Код: AutoIt [Выделить]
MsgBox(64, 'Process 2.exe', 'Здесь твое сообщение')

7
joiner , вроде все понятно.

Подскажите только - почему вместо слов "Process 2.exe" и "Process 3.exe" - выводятся необычные кодированные сообщения ?
(я так понимаю - дело возможно в кодировке русского языка)
8
NickSpirit , долго пытался записать процесс на видео (так чтобы был небольшой размер).
Но сайт все равно не позволил загрузить даже 3Мб видеофайл (написал 413 Request Entity Too Large).
Поэтому выкладываю ссылку на файлообменник  dropmefiles.com/Bgu38

Процесс работы скрипта.
(все скрипты лежат в одной папке с файлами 111.doc и 222.doc)

1.Открываю первую версию скрипта.
2.Тут же открывается файл 222.doc - ничего не происходит. Просто открытый файл 222.doc.
3.Открываю файл 111.doc. При нажатии на кнопку Insert - ничего не происходит.

Процесс действия второй версии скрипта в точности такой же.

У меня операционная система Win7, MS Word 2003, MS Word 2013.
9
получить дескрипторы окон каждого процесса
Код: AutoIt [Выделить]
и отслеживать клик мыши. клик приводит окно в активность
получаем дескриптор активного окна
Код: AutoIt [Выделить]
WinGetHandle("[ACTIVE]")

сверяем с имеющимися дескрипторами окон процессов.
выводим сообщение

вот общий пример
Код: AutoIt [Выделить]
#include <Misc.au3>
Local $hwnd, $thw, $hDLL = DllOpen("user32.dll")
While 1
    If _IsPressed('01', $hDLL) Then
        $hwnd = WinGetHandle("[ACTIVE]")
        If $hwnd <> $thw And $hwnd <> 0 Then
            MsgBox(64, 'Handle', $hwnd)
            $thw = $hwnd
        EndIf
    EndIf
    Sleep(10)
WEnd



Добавлено: Вчера в 21:05:19
к твоему случаю пример.
все приблизительно, можно и по другому сделать
проверок на ошибки нет. имена процессов подставишь сам
Код: AutoIt [Выделить]
#include <Misc.au3>
#include <WinAPIProc.au3>
Local $pl1 = ProcessList('1.exe')
Local $pl2 = ProcessList('2.exe')
Local $wp1 = _WinAPI_EnumProcessWindows($pl1[1][1])
Local $wp2 = _WinAPI_EnumProcessWindows($pl2[1][1])
Local $hwnd,  $hDLL = DllOpen("user32.dll")
While 1
    If _IsPressed('01', $hDLL) Then
        $hwnd = WinGetHandle("[ACTIVE]")
        If $hwnd = $wp1[1][0] Then
            MsgBox(64, 'Process 1.exe', $hwnd)
        ElseIf $hwnd = $wp2[1][0] Then
            MsgBox(64, 'Process 2.exe', $hwnd)
        EndIf
    EndIf
    Sleep(10)
WEnd

10
Добрый вечер.
Помогите советом.

Запущены две похожие программы.
Title этих окон одинаковый - "Form".
Диспетчер задач показывает эти процессы по-разному "2.exe" и "3.exe".

Как заставить скрипт - при щелчке левой кнопки мышки по окну процесса "2.exe" - выдавать простое сообщение "сигнал два", а при щелчке левой кнопки мышки по окну процесса "3.exe" - выдавать сообщение "сигнал три".

То есть речь идет не о щелчке по окну программы с определенным Title  (поскольку он у обоих программ одинаков), а как-то учитывать название процесса (у обоих программ он разный).
Страницы: [1] 2 3 ... 10