Автор Тема: [Мышь, клавиатура] Сколько раз нажата Ф5  (Прочитано 6832 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн StarEdik [?]

  • Благодарен всем за поддержку
  • Новичок
  • *
  • Сообщений: 365
  • Репутация: 4
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Версия AutoIt: 3.3.6.1

Описание:
Привет всем.Некая программа запускается с помошью клав Ф5.Надо подсчитать сколько раз была нажата эта горячая клавиша.Нужен пример скрипта который на системном трее показывал это количества,который  при каждой  нажатии увеличивается на раз.


Примечания:
чтоб на трее вместо иконки AutoItа показывался количество нажатий
Скорблю и помню.

Знать одно, но знать и помогать не каждому дано.
ОН всегда всем помогал. Сделал добро и ушел, но остался в памяти у многих

Русское сообщество AutoIt

[Мышь, клавиатура] Сколько раз нажата Ф5
« Отправлен: Июль 31, 2011, 15:23:25 »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7789
  • Репутация: 2313
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
StarEdik  [?]
Цитировать
чтоб на трее вместо иконки AutoIt'а показывался количество нажатий
Без иконки
Код: AutoIt [Выделить]
#include <Misc.au3>

HotKeySet('{Esc}', '_Exit')
$iCount = 0
$iCountOld = 0
While 1
    If _IsPressed(74) Then
        While _IsPressed(74)
            Sleep(10)
        WEnd
        $iCount += 1
    EndIf
    Sleep(10)
    If $iCountOld <> $iCount Then
        $iCountOld = $iCount
        TrayTip('Контроль F5', 'F5 - количество нажатий: ' & $iCountOld, 5, 17)
    EndIf
WEnd

Func _Exit()
    Exit
EndFunc   ;==>_Exit

С иконкой возиться лениво :)

Оффлайн StarEdik [?]

  • Благодарен всем за поддержку
  • Новичок
  • *
  • Сообщений: 365

  • Автор темы
  • Репутация: 4
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
madmasles
Жаль но у меня ничего не получается.Спомошью Ф5  в редакторе VS vb6 запускается прожект на исполнения (Run -> Start - F5)
Запустил ваш скрипт потом в редакторе нажал Ф5 прога запустилась но в трее нет информации.И так несколько раз.Может я что та не так делаю.
Точно так RAM Saver Pro в трее показывает свободную память


« Последнее редактирование: Июль 31, 2011, 17:58:03 от StarEdik, Причина: Объединение сообщений »

Оффлайн Zaramot [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1160
  • Репутация: 653
  • Пол: Мужской
  • I ♥ AutoIt
    • Награды
  • Версия AutoIt: 3.3.8.1
Это подойдёт ?:
Код: AutoIt [Выделить]
#NoTrayIcon
#include <Misc.au3>

HotKeySet('{F5}', '_GetF5')
HotKeySet('{ESC}', '_Exit')

Opt("TrayMenuMode",1)  

Global $var = 0

TraySetIcon('shell32.dll', 44)
TraySetState()

While 1
WEnd

Func _GetF5()
    $var = $var + 1
    TrayTip('', 'F5 нажата ' & $var & ' раз(а)', 1000)
EndFunc

Func _Exit()
    Exit
EndFunc


Русское сообщество AutoIt

Re: [Мышь, клавиатура] Сколько раз нажата Ф5
« Ответ #3 Отправлен: Июль 31, 2011, 23:12:54 »

Оффлайн VladUs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 618
  • Репутация: 180
  • Пол: Мужской
    • Награды
Zaramot
В Вашем коде, если  задержать на время нажатие кнопки (F5), то счетчик будет увеличиваться c неимоверной  скоростью
Делай что должен и  будь что будет

Оффлайн Zaramot [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1160
  • Репутация: 653
  • Пол: Мужской
  • I ♥ AutoIt
    • Награды
  • Версия AutoIt: 3.3.8.1
Re: [Мышь, клавиатура] Сколько раз нажата Ф5
« Ответ #5, Отправлен: Август 01, 2011, 00:29:39 »
Цитировать
Zaramot
В Вашем коде, если  задержать на время нажатие кнопки (F5), то счетчик будет увеличиваться c неимоверной  скоростью

А так ?:
Код: AutoIt [Выделить]
#NoTrayIcon
#include <Misc.au3>

HotKeySet('{ESC}', '_Exit')

Opt("TrayMenuMode",1)

Global $var = 0

TraySetIcon('shell32.dll', 44)
TraySetState()

While 1
    If _IsPressed('74') Then
        Do
        Until not _IsPressed('74')
        $var = $var + 1
        TrayTip('', 'F5 нажата ' & $var & ' раз(а)', 1)
    EndIf
WEnd

Func _Exit()
    Exit
EndFunc


Оффлайн VladUs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 618
  • Репутация: 180
  • Пол: Мужской
    • Награды
Re: [Мышь, клавиатура] Сколько раз нажата Ф5
« Ответ #6, Отправлен: Август 01, 2011, 00:38:33 »
Zaramot  [?]
Цитировать
А так ?:
Так лучше, но сильно напоминает код madmasles  :)


Оффлайн Zaramot [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1160
  • Репутация: 653
  • Пол: Мужской
  • I ♥ AutoIt
    • Награды
  • Версия AutoIt: 3.3.8.1
Re: [Мышь, клавиатура] Сколько раз нажата Ф5
« Ответ #7, Отправлен: Август 01, 2011, 00:49:34 »
Код: AutoIt [Выделить]
#include <Misc.au3>

$var = 0

Do
    If _IsPressed('74') Then ;F5 key
        Do
        Until not _IsPressed('74') ;F5 key
        $var = $var + 1
        TrayTip('', 'F5 нажата ' & $var & ' раз(а)', 1)
    EndIf
Until _IsPressed('1B') ;ESC key


Русское сообщество AutoIt

Re: [Мышь, клавиатура] Сколько раз нажата Ф5
« Ответ #7 Отправлен: Август 01, 2011, 00:49:34 »

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5349
  • Репутация: 2690
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: [Мышь, клавиатура] Сколько раз нажата Ф5
« Ответ #8, Отправлен: Август 01, 2011, 01:36:07 »
Код: AutoIt [Выделить]
#Include <FontConstants.au3>
#Include <HotKey.au3>
#Include <vkConstants.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)
Opt('TrayAutoPause', 0)

Global $hAutoIt = WinGetHandle(AutoItWinGetTitle())
Global $Count = 0, $hPrev = 0

_SetAutoItIcon(0)
_HotKeyAssign($VK_F5, '_Increment', BitOR($HK_FLAG_DEFAULT, $HK_FLAG_NOBLOCKHOTKEY))

While 1
    Sleep(1000)
WEnd

Func _Increment()
    $Count += 1
    If $Count > 99 Then
        $Count = 0
    EndIF
    _SetAutoItIcon($Count)
EndFunc   ;==>_Increment

Func _SetAutoItIcon($iCount)
   
    Local $hDC, $hBitmap, $hMask, $hIcon, $hFont, $tNID, $tRect
   
    $hDC = _WinAPI_CreateCompatibleDC(0)
    $hBitmap = _WinAPI_CreateSolidBitmap(0, 0xFFFFFF, 16, 16)
    $hMask = _WinAPI_CreateBitmap(16, 16, 1, 1)
    $hFont = _WinAPI_CreateFont(16, 0, 0, 0, $FW_NORMAL, 0, 0, 0, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $ANTIALIASED_QUALITY, $DEFAULT_PITCH, 'Tahoma')
    $tRect = _WinAPI_CreateRectEx(0, 0, 16, 16)
    _WinAPI_SelectObject($hDC, $hBitmap)
    _WinAPI_SelectObject($hDC, $hFont)
    _WinAPI_DrawText($hDC, $iCount, $tRect, BitOR($DT_CENTER, $DT_SINGLELINE, $DT_VCENTER))
    _WinAPI_DeleteDC($hDC)
    $hIcon = _WinAPI_CreateIconIndirect($hBitmap, $hMask)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteObject($hMask)
    _WinAPI_DeleteObject($hFont)
    $tNID = DllStructCreate($tagNOTIFYICONDATA)
    DllStructSetData($tNID, 'Size', DllStructGetSize($tNID))
    DllStructSetData($tNID, 'hWnd', $hAutoIt)
    DllStructSetData($tNID, 'Flags', $NIF_ICON)
    DllStructSetData($tNID, 'ID', 1)
    DllStructSetData($tNID, 'hIcon', $hIcon)
    _WinAPI_ShellNotifyIcon($NIM_MODIFY, $tNID)
    If $hPrev Then
        _WinAPI_DestroyIcon($hPrev)
    EndIf
    $hPrev = $hIcon
EndFunc   ;==>_SetAutoItIcon


HotKey.au3
vkConstants.au3
WinAPIEx.au3


Добавлено: Август 01, 2011, 01:46:01
Если нужно регистрировать нажатия только для конкретного приложения (окна), то это можно указать при вызове функции _HotKeyAssign() в четвертом параметре.
« Последнее редактирование: Август 01, 2011, 01:47:36 от Yashied, Причина: Объединение сообщений »


Думай, прежде чем говорить.

Оффлайн Zaramot [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1160
  • Репутация: 653
  • Пол: Мужской
  • I ♥ AutoIt
    • Награды
  • Версия AutoIt: 3.3.8.1
Re: [Мышь, клавиатура] Сколько раз нажата Ф5
« Ответ #9, Отправлен: Август 01, 2011, 02:09:07 »
OffTopicYashied, wow  :o :o :o

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7789
  • Репутация: 2313
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: [Мышь, клавиатура] Сколько раз нажата Ф5
« Ответ #10, Отправлен: Август 01, 2011, 09:39:55 »
Yashied,
Как всегда, супер. :thumbs_up:
Скажите, можно так добавить изменения цвета шрифта и подложки? У меня на XP работает.
Код: AutoIt [Выделить]
#include <FontConstants.au3>
#include <HotKey.au3>
#include <vkConstants.au3>
#include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)
Opt('TrayAutoPause', 0)

Global $hAutoIt = WinGetHandle(AutoItWinGetTitle())
Global $Count = 0, $hPrev = 0
HotKeySet('{Esc}', '_Exit')
_SetAutoItIcon($Count, 0xFF0000, 0xFFD700)
;_HotKeyAssign($VK_F5, '_Increment', BitOR($HK_FLAG_DEFAULT, $HK_FLAG_NOBLOCKHOTKEY))

While 1
    Sleep(100)
    _Increment()
WEnd

Func _Exit()
    Exit
EndFunc   ;==>_Exit

Func _Increment()
    $Count += 1
    If $Count > 999 Then
        $Count = 0
    EndIf
    _SetAutoItIcon($Count, 0xFF0000, 0xFFD700)
EndFunc   ;==>_Increment

Func _SetAutoItIcon($iCount, $iColor = 0x000000, $iBkColor = 0xFFFFFF)
    Local $hDC, $hBitmap, $hMask, $hIcon, $hFont, $tNID, $tRect

    $hDC = _WinAPI_CreateCompatibleDC(0)
    $hBitmap = _WinAPI_CreateSolidBitmap(0, $iBkColor, 16, 16)
    $hMask = _WinAPI_CreateBitmap(16, 16, 1, 1)
    $hFont = _WinAPI_CreateFont(18, 4, 0, 0, $FW_NORMAL, 0, 0, 0, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $ANTIALIASED_QUALITY, $DEFAULT_PITCH, 'Tahoma')
    $tRect = _WinAPI_CreateRectEx(1, 0, 15, 16)
    _WinAPI_SelectObject($hDC, $hBitmap)
    _WinAPI_SelectObject($hDC, $hFont)
    _WinAPI_SetTextColor($hDC, $iColor)
    _WinAPI_SetBkColor($hDC, _WinAPI_SwitchColor($iBkColor))
    _WinAPI_DrawText($hDC, $iCount, $tRect, BitOR($DT_CENTER, $DT_SINGLELINE, $DT_VCENTER))
    _WinAPI_DeleteDC($hDC)
    $hIcon = _WinAPI_CreateIconIndirect($hBitmap, $hMask)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteObject($hMask)
    _WinAPI_DeleteObject($hFont)
    $tNID = DllStructCreate($tagNOTIFYICONDATA)
    DllStructSetData($tNID, 'Size', DllStructGetSize($tNID))
    DllStructSetData($tNID, 'hWnd', $hAutoIt)
    DllStructSetData($tNID, 'Flags', $NIF_ICON)
    DllStructSetData($tNID, 'ID', 1)
    DllStructSetData($tNID, 'hIcon', $hIcon)
    _WinAPI_ShellNotifyIcon($NIM_MODIFY, $tNID)
    If $hPrev Then
        _WinAPI_DestroyIcon($hPrev)
    EndIf
    $hPrev = $hIcon
EndFunc   ;==>_SetAutoItIcon

« Последнее редактирование: Август 01, 2011, 10:16:22 от madmasles »

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5349
  • Репутация: 2690
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: [Мышь, клавиатура] Сколько раз нажата Ф5
« Ответ #11, Отправлен: Август 01, 2011, 09:48:33 »
Да.

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7789
  • Репутация: 2313
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: [Мышь, клавиатура] Сколько раз нажата Ф5
« Ответ #12, Отправлен: Август 01, 2011, 09:54:33 »
Yashied,
Спасибо.  :thanks:

Оффлайн StarEdik [?]

  • Благодарен всем за поддержку
  • Новичок
  • *
  • Сообщений: 365

  • Автор темы
  • Репутация: 4
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Мышь, клавиатура] Сколько раз нажата Ф5
« Ответ #13, Отправлен: Август 01, 2011, 12:28:45 »
Огромное спасибо Yashied
madmasles
Zaramot
VladUs
:-[Спаибо всем .Вы просто гении :thumbs_up:
Код: AutoIt [Выделить]
_HotKeyAssign($VK_F5, '_Increment', BitOR($HK_FLAG_DEFAULT, $HK_FLAG_NOBLOCKHOTKEY))

While 1
    Sleep(100)
   ; _Increment()
WEnd
 

Все ОК.

Русское сообщество AutoIt

Re: [Мышь, клавиатура] Сколько раз нажата Ф5
« Ответ #13 Отправлен: Август 01, 2011, 12:28:45 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
10 Ответов
8558 Просмотров
Последний ответ Март 14, 2016, 13:21:49
от InnI
4 Ответов
7115 Просмотров
Последний ответ Май 17, 2011, 03:13:07
от Alonwoolf_
1 Ответов
2986 Просмотров
Последний ответ Май 05, 2011, 16:26:56
от madmasles
7 Ответов
6010 Просмотров
Последний ответ Июль 20, 2011, 19:44:26
от F4nT0m
5 Ответов
3118 Просмотров
Последний ответ Июль 22, 2011, 10:58:45
от Zaramot
1 Ответов
1027 Просмотров
Последний ответ Март 03, 2015, 15:15:51
от InnI
2 Ответов
926 Просмотров
Последний ответ Июнь 22, 2015, 05:09:26
от Zalman1980
1 Ответов
1160 Просмотров
Последний ответ Август 10, 2016, 16:08:18
от InnI
0 Ответов
905 Просмотров
Последний ответ Август 27, 2016, 21:36:20
от m_hakk
3 Ответов
328 Просмотров
Последний ответ Январь 11, 2017, 15:23:59
от ra4o