1 (изменено: Вася Пупкин, 2011-10-16 20:22:22)

Тема: AHK: AutoIt3 Window Info Spy

В комплекте с AutoHotkey есть прога которая называется:
AutoIt3 Window Info Spy
Я не как не могу реализовать свои идеи, которые основаны на данных,
полученные из этой проги: AutoIt3 Window Info Spy.

http://img-fotki.yandex.ru/get/4522/46394254.0/0_72540_91af9055_L.jpg

Например:
Я открыл блокнот, тыкнул ЛКМ по заголовку блокнота,
и эта прога вывела мне данные по этому окну. (см. картинку)
Конкретно мне нужные данные я выделил красным
(Active Window Position).
Вот я хочу, к примеру, что бы у меня блокнот всегда запускался
с параметрами отображенными на картинки, т.е.:
left: 169
top: 144
width: 666
height: 359

Примерная схема скрипта (скрипт не работает):

run notepad.exe ; Запуск блокнота

left: 169 ; Изменить положение  и координаты окна блокнота
top: 144
width: 666
height: 359

Вопрос: Как мне сделать, что бы открылось окно с конкретно нужными мне координатами?

2

Re: AHK: AutoIt3 Window Info Spy

Примерно так:

X = 169
Y = 144
W = 666
H = 359
DetectHiddenWindows, On
SetWinDelay 0
Run, notepad.exe,, Hide, PID
WinWait, ahk_pid %PID%
WinMove,,, X, Y, W, H
WinShow

Но, Вася Пупкин, я ей-богу не понял, зачем сюда нужно было приплетать AutoIt3 Window Info Spy, тем более в заголовке темы. Достаточно было

Вася Пупкин пишет:

Как мне сделать, что бы открылось окно с конкретно нужными мне координатами?

Освежи знания о том, как озаглавливать темы.

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

3

Re: AHK: AutoIt3 Window Info Spy

За скрипт большое спасибо, работает!

teadrinker пишет:

зачем сюда нужно было приплетать AutoIt3 Window Info Spy

Вася Пупкин пишет:

Я не как не могу реализовать свои идеи, которые основаны на данных,
полученные из этой проги: AutoIt3 Window Info Spy.

Создал тему с заделом на будущее
Думаю в будущем появятся ещё много вопросов по этой интересной проге.
Всё вопросы я хотел собрать в этой теме.
Так же, возможно у людей появятся вопросы по этой проге,
которые они так же могут добавить сюда.

4 (изменено: Вася Пупкин, 2011-10-21 23:41:44)

Re: AHK: AutoIt3 Window Info Spy

Хочу продолжить разговор про AutoIt3 Window Info Spy.
Кароче нужно решить новую задачу.

http://img-fotki.yandex.ru/get/5412/46394254.0/0_72a9b_d0189b9e_L.jpg

Я этот вопрос уже задавал в этой теме:
http://forum.script-coding.com/viewtopic.php?pid=52573
Но там мне не помогли. И у меня появилась идея решить проблему другим образом.

Задача такая:
Как мне в браузере (Опера) дождать полной загрузки страницы,
и после чего выполнить какую либо функцию?

См. картинку:
1 на рисунке. Во время загрузки страницы в опере можно сделать,
что бы появлялась полоса загрузки. Она исчезает после полной загрузки страницы!
2 и 3 на рисунке. При подводе курсора к этой полосе загрузке AutoIt3 Window Info Spy выдаёт цвет и координаты.

Идея заключается в следующем:
Нужно написать скрипт который постоянно считывает цвет (2 на рисунке) в заданных координатах (3 на рисунке). И как этот цвет измениться на какой нибудь другой (т.е. полоса загрузки исчезнет) (т.е. страница в браузере полностью загрузится) то можно будет выполнить какую либо функцию, что я и просил в начале поста (Заголовок "Задача").

Может кто нибудь мне поможет это реализовать?

5

Re: AHK: AutoIt3 Window Info Spy

Что-то мне подсказывает, что нужно использовать PixelGetColor...

6 (изменено: Стас, 2011-10-24 16:18:05)

Re: AHK: AutoIt3 Window Info Spy

#`::   ; Запуск по Виндовс+консоль
CoordMode Pixel  ; Переключение режима поиска пикселя по монитору,а не по активному окну
w8Load:  ; Метка к которой будет возвращаться скрипт в ожидании полоски загрузки.
{
PixelSearch, Px, Py, 776, 338 , 776, 338 , 0x014601 , 3, Fast ; 0x014601 заменить на нужный цвет! Ищет пиксель загрузки
if ErrorLevel        ; Если не находит, сообщает и продолжает искать.
{
    MsgBox, Полоска загрузки в Опере не найдена. Продолжаю искать пиксель
    goto w8Load
}
else  ; НАШЕЛ! Полоску загрузки, ждет когда пропадет, то есть - загрузка страницы окончена.
{
    MsgBox, Вау!!! Появилась полоска загрузки по координатам X%Px% Y%Py%.
    loading:
    PixelSearch, Px, Py, 776, 338 , 776, 338 , 0x014601, 3, Fast ; 0x014601 заменить на нужный цвет!
    if ErrorLevel
    MsgBox Загрузка страницы окончена
    Else
    {
        MsgBox Все еще загружается!
    goto loading
}
}
}
Return

Координаты и пиксель взяты "от балды", замените на свои данные.

7 (изменено: Вася Пупкин, 2011-10-26 21:04:51)

Re: AHK: AutoIt3 Window Info Spy

Стас пишет:

Спасибо большое!
То что надо, работает на ура.
Я бы так не зашто не смог сделать

8

Re: AHK: AutoIt3 Window Info Spy

Продолжаем обсуждать AutoIt3 Window Info Spy
Вопрос №3.

http://img-fotki.yandex.ru/get/2708/46394254.0/0_7a183_fbdc293b_L.jpg

Окно Свойства системы. Информация которая отображется в этом окне под словом "Компьютер" отображатеся с задержкой. (См. 1 на рисунке).
Необходимо выполнить какую либо команду после полной прорисовки окна.

План:
1. Открываем Свойства системы
Я его так открываю:

%windir%\system32\rundll32.exe /d C:\WINDOWS.0\system32\shell32.dll,Control_RunDLL SYSDM.CPL

2. Ожидаем открытие Свойства системы
Я его так жду:

WinWait, Свойства системы, 
IfWinNotActive, Свойства системы, , WinActivate, Свойства системы, 
WinWaitActive, Свойства системы,

3. Ожидаем проявление информации о компе. (см. 1 на рисунке)

Вот тут то я не знаю что делать.

4. Выполняем какую либо команду.
Например это:

send !{F4}

Для выполнения третего пункта моего плана должна помочь прога AutoIt3 Window Info Spy.
Было замечено что в ней в разделе Visible Window Text (см. 2 на рисунке)
отображается таже самая информация, что и в окне Свойства системы (см. 1 на рисунке)

Вопрос:
Как мне дождать полной загрузки окна Свойства системы
с помощью кода?

9

Re: AHK: AutoIt3 Window Info Spy

Как мне дождать полной загрузки окна Свойства системы с помощью кода?

А что там есть до? Есть ли там элементы управления класса «Link Window» до появления информации? Если есть, но с пустым содержимым, то всё, что нужно — просто ожидать в цикле с задержкой в течение некоторого времени, пока в элементах «Link Window» не перестанут появляться значения.

P.S. Если нужно получить некую информацию о свойствах системы — есть варианты проще.

10

Re: AHK: AutoIt3 Window Info Spy

Вася Пупкин пишет:

Как мне дождать полной загрузки окна Свойства системы
с помощью кода?

Repeat:
Send, #{Pause}
Loop
{
   ControlGetText, CText, Link Window1, ahk_class #32770
   If % CText!=""
   {
      WinClose, ahk_class #32770
      MsgBox, 262212,, % "      Make choose:`n"
                     . "Yes - repeat, No - exit"
      IfMsgBox, Yes
         Gosub, Repeat
      Else
         ExitApp
   }
}
alexii пишет:

...есть варианты проще.

SetFormat, FloatFast, 0.2
ComObjGet("winmgmts:").ExecQuery("Select Name From "
. "Win32_Processor")._NewEnum.next(x)
ComObjGet("winmgmts:").ExecQuery("Select TotalPhysicalMemory"
. " From Win32_ComputerSystem")._NewEnum.next(y)
Bool:=y.TotalPhysicalMemory<(1024*1024*1024)
MsgBox, % "CPU: "x.Name "`nMem: "y.TotalPhysicalMemory
      /(1024*1024*(Bool ? 1:1024))(Bool ? "MB":"GB")

11

Re: AHK: AutoIt3 Window Info Spy

Для общей информации.
Позавчера столкнулся с таким явлением, в вышеуказанном окне система не хочет выводить информацию о процессоре.

12

Re: AHK: AutoIt3 Window Info Spy

Помнится, был какой-то хотфикс для этого.

13

Re: AHK: AutoIt3 Window Info Spy

Grey пишет:
Вася Пупкин пишет:

Как мне дождать полной загрузки окна Свойства системы с помощью кода?

Спасибо! Работает да и ладно. Мне больше не чего не надо.

Grey пишет:
alexii пишет:

...есть варианты проще.

Ладно всё же скажу пару слов про второй способ (хотя он мне особо и не нужен).
Вот что этот скипт выводит:

---------------------------
6456.ahk
---------------------------
CPU: Процессор Intel Pentium III Xeon
Mem: 2.99GB
---------------------------
ОК   
---------------------------

1. Если это сравним со скриншотом в моём посте №8,
то заметим что процессор определился не правильно.
Там Core 2 Duo, a тута Pentium III Xeon.

2. Во вторых мне нужна не эта информация которая в окошке выводится,
а частота процессора, которая успешно выводится первым способом.

14

Re: AHK: AutoIt3 Window Info Spy

Информация о процессоре берётся из ветки реестра "HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0\", в частности "ProcessorNameString"- строка с полным наименованием, а "~MHz"- частота.

15

Re: AHK: AutoIt3 Window Info Spy

Вася Пупкин пишет:

1. Если это сравним со скриншотом в моём посте №8, то заметим что процессор определился не правильно. Там Core 2 Duo, a тута Pentium III Xeon.

Это говорит только о том, что у Вас установлены не все необходимые обновления. Наконец, помимо Wbem, можно пользовать вызов обычных функций WinAPI для определения аппаратных ресурсов.

Вася Пупкин пишет:

2. Во вторых мне нужна не эта информация которая в окошке выводится,  а частота процессора, которая успешно выводится первым способом.

См. комментарий к п.1.

16

Re: AHK: AutoIt3 Window Info Spy

Хотел в личку написать, но не нашёл как. Потому что не потеме.

alexii пишет:

Это говорит только о том, что у Вас установлены не все необходимые обновления.

Какие обнавления посоветуете?
Процессор Core 2 Duo T6570

17

Re: AHK: AutoIt3 Window Info Spy

Вася Пупкин, смотрите сами. Ключевые слова для поиска по Базе Знаний: название Вашей ОС, «WMI», название класса Wbem — «Win32_Processor».

Например, так: "Windows XP" "WMI" " Win32_Processor" site:support.microsoft.com - Поиск в Google. Что, соответственно, приводит нас к таким статьям, как:

The Win32_Processor class returns the incorrect Name property for the processor in a Windows XP-based computer that has an Intel Celeron processor installed
The Win32_Processor class returns the incorrect Name property for the processors on a computer that is running Windows XP or Windows Server 2003 and the computer has Intel Core 2 Duo processors installed

Кроме того можно увидеть и другие статьи на ту же тему, например:
The number of physical hyperthreading-enabled processors or the number of physical multicore processors is incorrectly reported in Windows XP
The L2CacheSize property of the Win32_Processor WMI class may not be populated correctly on specific types of processors