1

Тема: AHK: неактивная программа поверх браузера

В общем необходимо сделать маленькую программу, которая бы висела поверх браузера (хром)
и ждала пополнения буфера, после чего множила его на X.
Например:
я в браузере нахожу такое значение "2.900.000", обвожу его, жму Ctrl+C а в программе в этот момент выводится "14.500.000".
Подскажите в какую сторону копать.
Особенно волнует то, что необходимо множить числа разделенные точкой.

2 (изменено: Grey, 2011-10-06 13:45:42)

Re: AHK: неактивная программа поверх браузера

#IfWinActive, Google Chrome
SetTitleMatchMode, RegEx
Gosub, TrayMenu
Gosub, Settings
Hotkey, ~^vk43, Copy
Hotkey, vkC0 & Esc, Exit
Return

Read:
   If !RegExMatch(Mult, "\d")
      Gosub, Settings
   Return

Copy:
   ClipContent:=ClipboardAll
   Sleep, 500
   Result:=RegExReplace(Clipboard, "\.", "")*Mult
   TrayTip,, % "multiply: "Mult "`n"FixString(Result)
   Clipboard:=ClipContent
   Return

Settings:
Gui, +AlwaysOnTop -MinimizeBox
Gui, Add, Edit, vMult x6 y7 w90 h20 , Set multiplication
Gui, Add, Button, gSettingsConfirm x106 y7 w50 h20, &Confirm
Gui, Show, Center h34 w162, Settings
Return

SettingsConfirm:
   m:=0
   Gui, Submit
   Gui, Destroy
   Gosub, Read
   Return

TrayMenu:
   Menu, Tray, NoStandard
   Menu, Tray, Icon, shell32.dll, 172
   Menu, Tray, Tip, Multiplication
   Menu, Tray, Add, &Settings, Settings
   Menu, Tray, Add, &Exit (Tilde+Esc), Exit
   OnMessage(0x404, "WM_LBUTTONDOWN")
   Return

GuiClose:
Exit:
   Gui, Destroy
   ExitApp

WM_LBUTTONDOWN(uMsg, lParam)
{
   Global
   If m
      Return
   Else If (uMsg=0x404 And lParam=0x201) ; WM_USER+4, WM_LBUTTONDOWN
      SetTimer, Settings, -0, m:=1
}

FixString(str)
{
   Len:=StrLen(Str)
   Loop, Parse, Str
   {
      Result:=SubStr(Str, Len--, 1) . Result
      If (Mod(Counter+1, 3)=0
      And (Counter+1 != StrLen(Str))
      And Counter<6)
         Result:="." . Result
      Counter++
   }
   Return, Result
}

3

Re: AHK: неактивная программа поверх браузера

Grey, а зачем два раза Ctrl + C посылать?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4

Re: AHK: неактивная программа поверх браузера

Ну да, поставил задержку 500мс, чтобы успевало скопироваться.

5

Re: AHK: неактивная программа поверх браузера

Есть команда ClipWait.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: неактивная программа поверх браузера

Ясно, спасибо.

7

Re: AHK: неактивная программа поверх браузера

То, что доктор прописал! Grey, спасибо огромное!

8

Re: AHK: неактивная программа поверх браузера

Возникла проблема, копируемый текст в буфер, не возвращается в исходное положение, после вывода сообщения в трее.

Copy:
   ClipContent:=ClipboardAll
   Sleep, 500
   Result:=RegExReplace(Clipboard, "\.", "")*Mult
   TrayTip,, % "multiply: "Mult "`n"FixString(Result)
   Clipboard:=ClipContent
   Return

Например:
Я задаю множитель 5, после чего копирую цифру 200, в трей выводится 1000, а в буфере должно быть число 200, но его там нет.
В чем загвоздка?

9

Re: AHK: неактивная программа поверх браузера

...
Copy:
;   ClipContent:=ClipboardAll
   Sleep, 500
   Result:=RegExReplace(Clipboard, "\.", "")*Mult
   TrayTip,, % "multiply: "Mult "`n"FixString(Result)
;   Clipboard:=ClipContent
   Return
...

10

Re: AHK: неактивная программа поверх браузера

Спасибо, выручили.