PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   АвтоЗвук (http://pccar.ru/forumdisplay.php?f=16)
-   -   сборка/тема foobar 2000 для CarPС (http://pccar.ru/showthread.php?t=19671)

120705 14.01.2017 21:25

Цитата:

Сообщение от duzzy (Сообщение 379660)
seriousstas

Проблема с ...

скорее всего из за АНК...
Потому как на разных компах и системах он ведет себя абсолютно по разному.
Где то работает а где то нет.
Я поэтому и решил уйти на Автоит, теперь сложностей со скриптами в сборке нет.
+ в нем синтаксис человеческий.

Перекомпелить AHK в Автоит, мож. поможет. Или так нельзя?

seriousstas 15.01.2017 06:10

duzzy
Цитата:

Я поэтому и решил уйти на Автоит, теперь сложностей со скриптами в сборке нет.
Цитата:

Хочу проверить работу.
тоже хочу ..
На Автоит вообще не нашел прокрутки колеса в нужном окне , как на AHK , одной строчкой через ControlClick -
только отдельно и это не решает задачу .

duzzy 15.01.2017 16:07

seriousstas

Да похоже в Автоит с прокруткой колесом в окне печаль...

Можно по DllCall() и $WM_MOUSEWHEEL(через дельту) но в окне ВУметра не работает прокрутка, а в других программах крутит без проблем.
Любое окно F8(крутим вниз)
Выход Esc
Код:

#include
#include
#include

HotKeySet("{ESC}", "_Quit")
HotKeySet("{F8}", "_MouseWheelPlusTest")

Opt("WinTitleMatchMode", 2)

Global $f_Dir = False

While 1
    Sleep(100)
WEnd

Func _MouseWheelPlusTest()
    ;$f_Dir = Not $f_Dir
    ;If $f_Dir Then
        ;_MouseWheelPlus("Analog VU Meter", "up", 1)
  ; Else
        _MouseWheelPlus("", "down", 0)
    ;EndIf
EndFunc  ;==>_MouseWheelPlusTest

Func _MouseWheelPlus($Window, $direction, $clicks)
    $MouseCoord = MouseGetPos()
    $wdow = WinGetHandle('[CLASS:#32770]','')
        ControlFocus($wdow,'','')
        $X = $MouseCoord[0]
    $Y = $MouseCoord[1]
    If $direction = "up" Then
        $WheelDelta = 120
    Else
        $WheelDelta = -220
    EndIf
    For $i = 0 To $clicks
        $aRET = DllCall("user32.dll", "int", "SendMessage", _
                "hwnd", ControlGetHandle(WinGetHandle($Window),'',''), _
                "int", $WM_MOUSEWHEEL, _
                "long", _MakeLong(0, $WheelDelta), _
                "long", _MakeLong($X, $Y))
        ;MsgBox(0, @error, $aRET[0])
                ;MsgBox(0, '', $Window)
                ConsoleWrite($Window&'  '&$aRET[0] & @CRLF)
    Next
EndFunc  ;==>_MouseWheelPlus

Func _MakeLong($LoWord, $HiWord)
    Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
EndFunc  ;==>_MakeLong

Func _Quit()
    Exit
EndFunc

----------------------------------------------------------------------------------------

Можно сделать так, установить в авто комп AHK и компилить уже в авто
Код:

#NoTrayIcon
#SingleInstance force
ControlClick,{88D33FF9-8199-4332-B69C-6B99D67A24C9}2,,Analog VU Meter, WheelDown, 2
ExitApp

У меня меняется только --- Instance: 1 (отметил жирным красным что менять)
http://jpegshare.net/thumbs/45/a0/45...42a5748917.jpg

seriousstas 15.01.2017 17:59

duzzy
Да - тож пробовал по всякому ..
Цитата:

У меня меняется только --- Instance: 1
32-битка ?

120705
Евген_21

Проверте такой :

Код:

#include
#include
#include
If @OSArch = "X86" Then
    $CLASSNN = "{88D33FF9-8199-4332-B69C-6B99D67A24C9}1"
    Else
    $CLASSNN = "{88D33FF9-8199-4332-B69C-6B99D67A24C9}2"
    Endif

$iCount = -2 ; количество прокруток (минус - вниз, плюс - вверх)

$hCtrl = ControlGetHandle("[CLASS:{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}]", "", $CLASSNN)
_SendMessage($hCtrl, $WM_MOUSEWHEEL, _WinAPI_MakeLong(0, $iCount * 120))


seriousstas 15.01.2017 19:11

Цитата:

Автоит, теперь сложностей со скриптами в сборке нет.
+ в нем синтаксис человеческий.
Цитата:

Да похоже в Автоит с прокруткой колесом в окне печаль...
Тут начиная от замены самого сабя , контроля копий , до элементарных
задач - Автоит проигрывает вчистую .. пример :
http://autoit-script.ru/index.php?to...4476#msg134476
Цитата:

В ahk это выглядит самым примитивным образом....
У AHK - другие недостатки )

duzzy 15.01.2017 21:03

seriousstas

Цитата:

32-битка ?
Ты про ОС ?
ОС 64-ка где меняется, я еще с NEON намучился при использовании АНК, все скрипты с дом.компа не работали пока в машине не перекомпилишь.

Цитата:

Тут начиная от замены самого сабя , контроля копий , до элементарных
задач - Автоит проигрывает вчистую ..
Я бы так не сказал... скорее так... у всего есть свое предназначение :)

Замена самого себя... это как ???

Контроль копий --- ты про запуск одной копии скрипта ? если да то это элементарно...
Код:

If _Singleton(@ScriptName, 1) = 0 Then ;single process
        Exit
EndIf

Цитата:

Автоит проигрывает вчистую .. пример :
MouseDown ( "button" ) :smile2:

seriousstas 15.01.2017 22:58

duzzy
Цитата:

Замена самого себя... это как ???
так :
#SingleInstance force
и просто переключаешь - гениально - и не нужно ничего городить с условиями :
#SingleInstance ignore
#SingleInstance off

на автоитовский _Singleton читал много жалоб - придумывают другие варианты с временной переменной и тд ..
AHK :#Persistent - удерживать
вместо циклов - есть return ..
- Сильно упрощает жизь )
Цитата:

Можно по DllCall() и $WM_MOUSEWHEEL(через дельту)
совсем не простой метод ..
попробуй - работает-ли скрипт , что выше ?

Евген_21 16.01.2017 14:20

duzzy
Цитата:

Можно сделать так, установить в авто комп AHK и компилить уже в авто
Попробовал, твой вариант. Не вышло.
seriousstas
Цитата:

Проверте такой :
Спасибо, заработало без проблем.:yes2::smile1:

duzzy 16.01.2017 15:58

seriousstas

Цитата:

#SingleInstance force
Да это тоже самое что и If _Singleton(@ScriptName, 1)... просто в более красивой обертке.
С _Singleton у меня проблем не было вообще.
Циклы удобней в разы, а Return есть и в Автоит.

Цитата:

совсем не простой метод ..
попробуй - работает-ли скрипт , что выше ?
Это тоже самое что и в твоем скрипте...
_SendMessage --- это враппер(упращенный вариант функции) для DllCall - SendMessage. Это можно сделать с любой другой функцией.

Пример обертки:

_Моя_новая_функ(параметр, параметр, параметр)
DllCall(параметр, параметр, параметр)
конец функции

Вот пример простой обертки в обертке :)
Твой скрипт...
Код:

#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=C:\Program Files (x86)\AutoIt3\Aut2Exe\Icons\AutoIt_Main_v10_48x48_RGB-A.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Add_Constants=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include
#include
#include

Func _MouseWheel($iCount) ; количество прокруток ((-2) минус - вниз, (2)плюс - вверх)
        If @OSArch = "X86" Then
                $CLASSNN = "1"
        Else
                $CLASSNN = "2"
        EndIf
        $hCtrl = ControlGetHandle("[CLASS:{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}]", "", "{88D33FF9-8199-4332-B69C-6B99D67A24C9}" & $CLASSNN)
        _SendMessage($hCtrl, $WM_MOUSEWHEEL, _WinAPI_MakeLong(0, $iCount * 120))
EndFunc  ;==>_MouseWheel


_MouseWheel(2);2 раза вверх

_MouseWheel(-2);2 раза вниз

Более обобщенный вариант для любых окон... :whistle:
Код:

#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=C:\Program Files (x86)\AutoIt3\Aut2Exe\Icons\AutoIt_Main_v10_48x48_RGB-A.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Add_Constants=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include
#include
#include

$window_Class ="[CLASS:{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}]"
$control_Class ="{88D33FF9-8199-4332-B69C-6B99D67A24C9}2"

Func _MouseWheel($wClass, $cClass, $iCount) ;$wClass - класс окна, $cClass - что конролим, количество прокруток ((-2) минус - вниз, (2)плюс - вверх)
        $hCtrl = ControlGetHandle($wClass, "", $cClass)
        _SendMessage($hCtrl, $WM_MOUSEWHEEL, _WinAPI_MakeLong(0, $iCount * 120))
EndFunc  ;==>_MouseWheel


_MouseWheel($window_Class,$control_Class, 2);2 раза вверх

_MouseWheel($window_Class,$control_Class, -2);2 раза вниз

Евген_21
Цитата:

Попробовал, твой вариант. Не вышло.
Да там выходить то нечему скрипт в одну строку, и поменять нужно всего одну цифру в нем.
AU3_Spy.exe запустил навел на окно ВУметра и посмотрел меняется ли параметр
http://jpegshare.net/thumbs/29/ab/29...63dfab19c0.jpg

или в такой же утилите Автоита...
http://jpegshare.net/thumbs/87/c3/87...70aeae338e.jpg

изменил цифру перекомпилил скрипт.

Евген_21 16.01.2017 16:25

duzzy
Цитата:

Да там выходить то нечему скрипт в одну строку, и поменять нужно всего одну цифру в нем.
AU3_Spy.exe запустил навел на окно ВУметра и посмотрел меняется ли параметр
Да, это первое что сделал. Все то же самое что у тебя .
Но, не работает.


Часовой пояс GMT +4, время: 20:59.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot