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

Страницы: [1] 2 3 ... 10
1
Доброго всем времени суток, коллеги!
Имеется окно 1с с неким списком заданий. Запустить и заставить AutoIt добраться до этого окна получилось. Теперь вопрос: Как получить данные из этого окна (номер заявки, ФИО и наименование в частности) и передать в массив для дальнейшей обработки. Зачем? 1С на умеет автоматически обновляться! По тому нужно раз 20-30 минуть жамкать кнопку обновления и выискивать нужные мне заявки.
Иначе можно просто пропустить заявку.
Текста в frozen не видно.
Может есть какая возможность перехватывать приходящие данные.
В потрахах 1с не лазил ни разу.
Картинку окнон прикладываю для наглядносьти
2
Код: AutoIt [Выделить]
$word = "pai"
$find = StringRegExp(BinaryToString($str, 4), "(?i)\S*" & $word & "\S*", 3) ;ищем слова

3
Собираю сторонним софтом ссылки в файл. Из скрипта читаю и перехожу по ним.
Но как сделать чтобы сохранялись слова перед которыми есть символы например ищу "pai" находит "pairs",
"pair.." нужно чтобы находил ещё и "multipair". Как это сделать?
Код: AutoIt [Выделить]
#include <File.au3>
$oFile = FileOpen("lin.txt")
While 1
    $oURL = FileReadLine($oFile)
    If @error Then ExitLoop
$str = InetRead($oURL) ;читаем страницу https://www.forexfactory.com/showthread.php?t=526638
$find = StringRegExp(BinaryToString($str, 4), "(pai[^\h]*)\h", 3) ;ищем слова
If IsArray($find) And UBound($find) >= 3 Then ;если найдено 3 и более слов
    For $i in $find
        FileWriteLine(@ScriptDir & "\foundedwords1.txt", $i) ;записываем слова в файл foundedwords.txt
    Next
EndIf
Sleep(1000)
WEnd
FileClose($hFile)

4
Общие вопросы по AutoIt / Re: Контекстное меню для пунктов меню трея
« Последний ответ от Vanguger Отправлен Сегодня в 05:16:31 »
Как вариант

Благодарю InnI! Внимательно изучу этот вариант. Я то уже начал подумывать в сторону имитации контекстного меню, с нужным функционалом, без блокировки. Тоже уже набросал немного сырой, но работающий. С костылями, ну блин :stars:, хоть как-то уже, для себя пойдёт.

Код: AutoIt [Выделить]
#include <MouseOnEvent.au3>
#include <GuiMenu.au3>
Opt('TrayMenuMode', 3)

$m1 = TrayCreateMenu("M1")
$m1i1 = TrayCreateItem('M1I1', $m1)
$m1i2 = TrayCreateItem('M1I2', $m1)
$m1i3 = TrayCreateItem('M1I3', $m1)
$m2 = TrayCreateMenu("M2")
$m2i1 = TrayCreateItem('M2I1', $m2)
$m2i2 = TrayCreateItem('M2I2', $m2)
$m2i3 = TrayCreateItem('M2I3', $m2)
$i1 = TrayCreateItem('I1')
$i2 = TrayCreateItem('I2')
TrayCreateItem('')
$Exit = TrayCreateItem('Exit')

TraySetState()

$hMenu = TrayItemGetHandle(0)

_MouseSetOnEvent($MOUSE_SECONDARYUP_EVENT, "__ClickMouseR")

While 1
  Switch TrayGetMsg()
        Case $Exit
            Exit
    EndSwitch
    Sleep(10)
WEnd

Func __ClickMouseR()

Local $sPMLine = "" & @CRLF
    $sPMLine &= "#include <WindowsConstants.au3>" & @CRLF
    $sPMLine &= "#include <GuiMenu.au3>" & @CRLF
    $sPMLine &= "Local $hDlg, $cDummy, $nContextMenu, $hContextMenu, $nHide_MItem, $nExit_MItem, $hTimer, $aMousePos, $nResult" & @CRLF
    $sPMLine &= "$hDlg = GUICreate('', 1, 1, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW)" & @CRLF
    $sPMLine &= "$cDummy = GUICtrlCreateDummy()" & @CRLF
    $sPMLine &= "$nContextMenu = GUICtrlCreateContextMenu($cDummy)" & @CRLF
    $sPMLine &= "$hContextMenu = GUICtrlGetHandle($nContextMenu)" & @CRLF
    $sPMLine &= "$nHide_MItem = GUICtrlCreateMenuItem('Пункт1', $nContextMenu)" & @CRLF
    $sPMLine &= "$nShowMsg_MItem = GUICtrlCreateMenuItem('Пункт2', $nContextMenu)" & @CRLF
    $sPMLine &= "GUISetState(@SW_SHOW, $hDlg)" & @CRLF
    $sPMLine &= "$aMousePos = MouseGetPos()" & @CRLF
    $sPMLine &= "$nResult = _GUICtrlMenu_TrackPopupMenu($hContextMenu, $hDlg, $aMousePos[0]-50, $aMousePos[1]-10, 1, 1, 2)" & @CRLF
    $sPMLine &= "Switch $nResult" & @CRLF
    $sPMLine &= "   Case $nShowMsg_MItem" & @CRLF
    $sPMLine &= "       MsgBox(64, 'Заголовок', 'Сообщение')" & @CRLF
    $sPMLine &= "EndSwitch" & @CRLF
    $sPMLine &= "GUIDelete($hDlg)" & @CRLF
    $sPMLine &= "FileDelete(@ScriptFullPath)" & @CRLF
    $sPMLine &= "Exit" & @CRLF

    Local $hFile = FileOpen(@ScriptDir & '\consoleMenu.tmp', 2)
    FileWrite($hFile, $sPMLine)
    FileClose($hFile)

    Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & @ScriptDir & '\consoleMenu.tmp"')

EndFunc   ;==>_ShowPopupMenu_Proc
 



Добавлено: Сегодня в 07:41:44
В общем, всё у меня получилось. Так как список приложений для меню у меня отдаёт модуль(отдельный скрипт) и он же обрабатывает клики, то ему я и поручил создавать дополнительное контекстное меню. Ядро в этом случае просто говорит модулю, что клик правой кнопкой и отдаёт ему параметры клика. Получилось так как нужно и даже менюха не закрывается  :ok:

Нажмите для отображения изображения в оригинальном размере.

InnI, спасибо за подсказки!
5
Общие вопросы по AutoIt / Re: Контекстное меню для пунктов меню трея
« Последний ответ от InnI Отправлен Сегодня в 02:50:08 »
Как вариант
Код: AutoIt [Выделить]
#include <WindowsConstants.au3>
#include <TrayConstants.au3>
#include <SendMessage.au3>
#include <WinAPISys.au3>
#include <GuiMenu.au3>
#include <Timers.au3>
#include <Misc.au3>

Opt("TrayMenuMode", 3)
Opt("WinWaitDelay", 11)

$MainItemName = ""
$ShowPopup = False

$GUI = GUICreate("", 0, 0, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW)
GUISetState()

$MainDummy = GUICtrlCreateDummy()
$MainPopup = GUICtrlCreateContextMenu($MainDummy)
$M1 = GUICtrlCreateMenu("M1", $MainPopup)
$M11 = GUICtrlCreateMenuItem("M11", $M1)
$M12 = GUICtrlCreateMenuItem("M12", $M1)
$M2 = GUICtrlCreateMenu("M2", $MainPopup)
$M21 = GUICtrlCreateMenuItem("M21", $M2)
$M22 = GUICtrlCreateMenuItem("M22", $M2)
$M3 = GUICtrlCreateMenuItem("M3", $MainPopup)
$M4 = GUICtrlCreateMenuItem("M4", $MainPopup)

$cDummy = GUICtrlCreateDummy()
$nContextMenu = GUICtrlCreateContextMenu($cDummy)
$nHide_MItem = GUICtrlCreateMenuItem("Пункт1", $nContextMenu)
$nShowMsg_MItem = GUICtrlCreateMenuItem("Пункт2", $nContextMenu)
GUICtrlCreateMenuItem("", $nContextMenu)
$nExit_MItem = GUICtrlCreateMenuItem("Выход", $nContextMenu)

While 1
  Switch TrayGetMsg()
    Case $TRAY_EVENT_SECONDARYUP
      $Timer = _Timer_SetTimer($GUI, 33, "Timer")
      _GUICtrlMenu_TrackPopupMenu(GUICtrlGetHandle($MainPopup), $GUI)
  EndSwitch
  Switch GUIGetMsg()
    Case $M11
      MsgBox(0, "", "Выбран пункт M11")
    Case $M12
      MsgBox(0, "", "Выбран пункт M12")
    Case $M21
      MsgBox(0, "", "Выбран пункт M21")
    Case $M22
      MsgBox(0, "", "Выбран пункт M22")
    Case $M3
      MsgBox(0, "", "Выбран пункт M3")
    Case $M4
      MsgBox(0, "", "Выбран пункт M4")
    Case $nHide_MItem
      MsgBox(0, "", "Пункт1 вызван для " & $MainItemName)
    Case $nShowMsg_MItem
      MsgBox(0, "", "Пункт2 вызван для " & $MainItemName)
    Case $nExit_MItem
      Exit
  EndSwitch
  If $ShowPopup Then
    $ShowPopup = False
    _GUICtrlMenu_TrackPopupMenu(GUICtrlGetHandle($nContextMenu), $GUI)
  EndIf
WEnd

Func Timer($hWnd, $iMsg, $iIDTimer, $iTime)
  If _IsPressed("02") Then
    _Timer_KillTimer($GUI, $Timer)
    While _IsPressed("02")
      Sleep(11)
    WEnd
    $MainItemName = ""
    Local $tPoint = _WinAPI_GetMousePos()
    Local $PopUp = _WinAPI_WindowFromPoint($tPoint)
    If _WinAPI_GetClassName($PopUp) = "#32768" Then
      Local $hMenu = _SendMessage($PopUp, $MN_GETHMENU)
      $MainItemName = _GUICtrlMenu_GetItemText($hMenu, _GUICtrlMenu_MenuItemFromPoint($PopUp, $hMenu))
      $ShowPopup = True
    EndIf
    WinActivate("[class:#32768]")
  EndIf
EndFunc

6
Дни рождения / С днём рождения Nazgul666, Tuxzer92!
« Последний ответ от Представитель Сообщества Отправлен Сегодня в 01:05:35 »
От имени всего Русского сообщества AutoIt поздравляем Вас Nazgul666, Tuxzer92 с днём рождения!



Цитировать
Пусть все мечты исполнятся,
Пусть все желанья сбудутся,
Пусть радости запомнятся,
А горести забудутся.

Здоровье будет крепкое,
В делах всегда согласие,
Любовь навеки верная —
Без ссор и разногласия.

Зарплата только вовремя,
Стабильная, высокая.
Работа будет лёгкая
И не совсем далёкая.

Пусть жизнь Вам дарит самые
Прекрасные мгновения.
Желаем только радости
И счастья, с днем рождения!
7
Общие вопросы по AutoIt / Re: Цикл внутри цикла
« Последний ответ от InnI Отправлен Сегодня в 00:20:52 »
cdjsend  [?]
Цитировать
при выполнении основного цикла While 1 надо как-то отсчитывать время и обновлять ту самую переменную
Код: AutoIt [Выделить]
AdlibRegister("Refresh", 1000) ; каждую секунду обновляет $Var

$Var = 1

While 1
  Sleep(777)
  If Mod($Var, 2) Then ConsoleWrite($Var & " ") ; если $Var нечётная
WEnd

Func Refresh()
  $Var += 1
EndFunc

8
Общие вопросы по AutoIt / Цикл внутри цикла
« Последний ответ от cdjsend Отправлен Вчера в 20:46:19 »
суть вот в чем, есть у меня общий цикл While 1  "мой код" wend

задача внутрь этого while запихнуть еще 1 с переменной динамической которая каждые к примеру 10 минут получала новое значение, а это новое значение будет использовано далее в первом  while 1.. надеюсь вы меня поняли
возможно это можно назвать многопоточность

я пробовал так

while 1

while 2
wend

wend

но как только доходит до while 2 все что за ним сразу в While 1 идет уже не обрабатывается, а просто по кругу идет while 2... по этому судя по всему все нужно сделать 1 циклом, но как это сделать? команда sleep(10000) не подходит... внутри основного цикла

т.е.  при выполнении основного цикла While 1 надо как-то отсчитывать время и обновлять ту самую переменную по истичении 10 минут но при этом чтобы все его тело по кругу вертелось

можно сказать это мультипоток, я знаю что автоитом не поддерживается, но как-то же можно реализовать?

9
Общие вопросы по AutoIt / Re: Контекстное меню для пунктов меню трея
« Последний ответ от Vanguger Отправлен Вчера в 19:27:10 »
Для AutoIt отображение всплывающего меню такая же блокирующая операция, как вывод MsgBox.

Хорошо, тогда, как в данном примере, программно закрыть меню трея, чтобы после закрытия отобразилось контекстное? Я что-то не нашел способ, должен же он быть.
Мне для этой структуры нужен доп. функционал по правой:
Нажмите для отображения изображения в оригинальном размере.
10
Общие вопросы по AutoIt / Re: Контекстное меню для пунктов меню трея
« Последний ответ от InnI Отправлен Вчера в 14:47:17 »
Vanguger
Для AutoIt отображение всплывающего меню такая же блокирующая операция, как вывод MsgBox.
Страницы: [1] 2 3 ... 10