Здравствуйте я новенький на форуме.
Так получилось, что где то неделю назад я первый раз наткнулся на Autoit3 script.
И мне стало интересно, что это за зверь такой, :IL_AutoIt_1: познакомился и как говорится наваял. :laugh:
Выкладываю свою первую работу на все общее обозрение, чтобы понимающие люди посмотрели и указали на ошибки и недочеты в программе, а новички почерпнули из этого для себя, что то новое.
На точку с запитой в конце строк прошу не обращать внимание параллельно изучаю Паскаль, а
Autoit3 script это не как не вредит да и кто муже исключается ошибка при написании комментария.
И так начнем программа "Volume Control" управляет общей громкостью в Windows XP и Windows 7 тестировал на обеих ОС.
1. В программе присутствует перехват сообщений о прокрутке колеса мыши MouseWheelDown ($MOUSE_WHEELDOWN_EVENT) and MouseWheelUp ($MOUSE_WHEELUP_EVENT) за пределами формы.
2. В программе присутствует перехват сообщений о нажатии кнопок мыши MouseLeftDown and MouseLeftUp за пределами формы.
3. Де активация активных окон. :whistle:
4. Удаление программы из панели задач в состоянии @SW_MINIMIZE или как у меня в данном случае @SW_SHOWNOACTIVATE.
5. Установки цвета элемента ProgressBar.
6. Добавление программы в автозагрузку и удаление из автозагрузки.
7. И так далее.....
Если что то не так оформил прошу сразу кирпичами не бросаться, первый раз всетаки . :stars:
Так получилось, что где то неделю назад я первый раз наткнулся на Autoit3 script.
И мне стало интересно, что это за зверь такой, :IL_AutoIt_1: познакомился и как говорится наваял. :laugh:
Выкладываю свою первую работу на все общее обозрение, чтобы понимающие люди посмотрели и указали на ошибки и недочеты в программе, а новички почерпнули из этого для себя, что то новое.
На точку с запитой в конце строк прошу не обращать внимание параллельно изучаю Паскаль, а
Autoit3 script это не как не вредит да и кто муже исключается ошибка при написании комментария.
И так начнем программа "Volume Control" управляет общей громкостью в Windows XP и Windows 7 тестировал на обеих ОС.
1. В программе присутствует перехват сообщений о прокрутке колеса мыши MouseWheelDown ($MOUSE_WHEELDOWN_EVENT) and MouseWheelUp ($MOUSE_WHEELUP_EVENT) за пределами формы.
2. В программе присутствует перехват сообщений о нажатии кнопок мыши MouseLeftDown and MouseLeftUp за пределами формы.
3. Де активация активных окон. :whistle:
4. Удаление программы из панели задач в состоянии @SW_MINIMIZE или как у меня в данном случае @SW_SHOWNOACTIVATE.
5. Установки цвета элемента ProgressBar.
6. Добавление программы в автозагрузку и удаление из автозагрузки.
7. И так далее.....
Если что то не так оформил прошу сразу кирпичами не бросаться, первый раз всетаки . :stars:
Код:
#include <_AudioEndpointVolume.au3>; Windows7, Vista
#include <SoundGetSetQuery.au3>; Windows XP
#include <APISysConstants.au3>;
#include <MouseOnEvent.au3>;
#include <SendMessage.au3>;
#include <StaticConstants.au3>;
#include <TrayConstants.au3>;
#include <WinAPI.au3>;
#include <WinAPISys.au3>;
#include <WindowsConstants.au3>;
#include<ProgressConstants.au3>;
#include <StaticConstants.au3>;
#include <WinAPI.au3>;
#NoTrayIcon
;-------------------------------------------
;Options
Opt("TrayMenuMode", 1);
Opt("TrayOnEventMode", 1);
Opt("GUIOnEventMode", 1);
;-------------------------------------------
;$Variables
$LeftMouse_ButtonClick = False;
$RightMouse_ButtonClick = False;
Global $Volume = 0, $MouseBottomPosition = @DesktopHeight - 31; 737
Global $MyForm1_Visible = False;
Global $WheelDelta, $Timer = 0, $RegKey_Delete_In_Autorun, $RegKey_Add_In_Autorun;
Global $hParent, $hForm, $hIcon;
;-------------------------------------------
;Create Form and Components
$hParent = GUICreate('', 0, 0, 0, 0, 0, $WS_EX_TOOLWINDOW);
$Form1 = GUICreate("", 119, 16, @DesktopWidth - 138, @DesktopHeight - 52, ($WS_POPUP), $WS_EX_DLGMODALFRAME, $hParent);
$ProgressBar = GUICtrlCreateProgress(22, 0, 100, 20, $PBS_SMOOTH);
$Label1 = GUICtrlCreateLabel("00", 1, 0, 16, 16, $SS_CENTER);
$Menu_About = TrayCreateItem("О программе");
$MenuAdd_Program_To_Autorun = TrayCreateItem("Добавить в автозагрузку");
$MenuDelete_Program_From_Autorun = TrayCreateItem("Удалить из автозагрузки");
$Menu_Exit = TrayCreateItem("Закрыть");
TrayItemSetOnEvent($Menu_About, "_Menu_About_Click");
TrayItemSetOnEvent($MenuAdd_Program_To_Autorun, "_Add_Program_To_Autorun_Click");
TrayItemSetOnEvent($MenuDelete_Program_From_Autorun, "_Delete_Program_From_Autorun_Click");
TrayItemSetOnEvent($Menu_Exit, "_Menu_Exit_Click");
TraySetIcon("C:\Program Files\AutoIt3\Script\TrayMenu2\ICO\15.ico", -1);
;--------------------------------------------
;SetColor Form and Components
GUISetBkColor(0xB70606); Form1 Color
GUICtrlSetFont($Label1, 9, 800, 0, "Arial");
GUICtrlSetColor($Label1, 0xFFFFFF);
;--------------------------------------------
TraySetState();
TraySetClick(16);
;--------------------------------------------
_MouseSetOnEvent($MOUSE_WHEELSCROLLUP_EVENT, "_MOUSEWHEEL_EVENT");
_MouseSetOnEvent($MOUSE_WHEELSCROLLDOWN_EVENT, "_MOUSEWHEEL_EVENT");
_MouseSetOnEvent($MOUSE_PRIMARYDOWN_EVENT, "_LeftMouse_Button_Click");
$hIcon = _WinAPI_GetClassLongEx($hForm, $GCL_HICON);
_WinAPI_DestroyIcon($hIcon);
_WinAPI_SetClassLongEx($hForm, $GCL_HICON, 0);
_WinAPI_SetClassLongEx($hForm, $GCL_HICONSM, 0);
If (@OSVersion = 'WIN_7') Then
_SendMessage(GUICtrlGetHandle($ProgressBar), $PBM_SETSTATE, 2);
EndIf;
If (@OSVersion = 'WIN_XP') Then
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle($ProgressBar), "wstr", 0, "wstr", 0);
GUICtrlSetColor($ProgressBar, 0xB70606);
EndIf;
While 1
$MousePos = MouseGetPos();
If ($MousePos[1] >= $MouseBottomPosition) Then
If (@OSVersion = 'WIN_7') Then
$Volume = _GetMasterVolumeLevelScalar();
EndIf;
If (@OSVersion = 'WIN_XP') Then
$Volume = _SoundGetMasterVolume();
EndIf;
GUICtrlSetData($ProgressBar, $Volume);
$TrayMsg = TrayGetMsg();
$Timer = $Timer + 1;
EndIf;
If ($Timer >= 10) And ($WheelDelta = 0) Then
GUISetState(@SW_HIDE, $Form1);
$MyForm1_Visible = False;
$Timer = 0;
$WheelDelta = 0;
EndIf;
_Volume_Control();
$WheelDelta = 0;
Sleep(100);
;~ ToolTip("");
WEnd;
Func _Volume_Control();
If ($MousePos[1] >= $MouseBottomPosition) And ($WheelDelta <> 0) And ($MyForm1_Visible = False) Then
$ClassNameNN = ControlGetFocus("[active]");
If ($ClassNameNN <> '') Then
If ($LeftMouse_ButtonClick = False) Then
WinActivate('Program Manager', 'FolderView');
EndIf;
EndIf;
GUISetState(@SW_SHOWNOACTIVATE, $Form1);
WinSetOnTop($Form1, '', 1);
$WheelDelta = 0;
$MyForm1_Visible = True;
$LeftMouse_ButtonClick = False
_WinAPI_MessageBeep(5)
EndIf;
If ($MousePos[1] < $MouseBottomPosition) And ($MyForm1_Visible = True) Then
GUISetState(@SW_HIDE, $Form1);
$WheelDelta = 0;
$MyForm1_Visible = False;
$LeftMouse_ButtonClick = False;
EndIf;
EndFunc ;==>_Volume_Control
Func _MOUSEWHEEL_EVENT($iEvent);
If ($MousePos[1] >= $MouseBottomPosition) Then
$WheelDelta = $iEvent;
$Timer = 0;
If ($iEvent >= 538) And ($Volume < 102) Then
If (@OSVersion = 'WIN_7') Then
$Volume = Round($Volume + 1);
_SetMasterVolumeLevelScalar($Volume + 1);
GUICtrlSetData($ProgressBar, $Volume);
GUICtrlSetData($Label1, GUICtrlRead($ProgressBar));
;ToolTip($Volume);
EndIf;
If (@OSVersion = 'WIN_XP') Then
$Volume = Round($Volume + 3);
_SoundSetMasterVolume($Volume + 1);
GUICtrlSetData($ProgressBar, $Volume);
GUICtrlSetData($Label1, GUICtrlRead($ProgressBar));
;ToolTip($Volume);
EndIf;
EndIf;
If ($iEvent <= 530) And ($Volume <> -2) Then
If (@OSVersion = 'WIN_7') Then
$Volume = Round($Volume - 1);
_SetMasterVolumeLevelScalar($Volume - 1);
GUICtrlSetData($ProgressBar, $Volume);
GUICtrlSetData($Label1, GUICtrlRead($ProgressBar));
;ToolTip($Volume);
EndIf;
If (@OSVersion = 'WIN_XP') Then
$Volume = Round($Volume - 3);
_SoundSetMasterVolume($Volume - 1);
GUICtrlSetData($ProgressBar, $Volume);
GUICtrlSetData($Label1, GUICtrlRead($ProgressBar));
;ToolTip($Volume);
EndIf;
EndIf;
EndIf;
EndFunc ;==>_MOUSEWHEEL_EVENT
Func _LeftMouse_Button_Click();
If ($MousePos[1] >= $MouseBottomPosition) Then
GUISetState(@SW_HIDE, $Form1);
$LeftMouse_ButtonClick = True;
EndIf;
EndFunc ;==>_LeftMouse_Button_Click
Func _Menu_About_Click();
If (TrayItemSetState($Menu_About, $TRAY_CHECKED) = True) Then
TrayItemSetState($Menu_About, $TRAY_UNCHECKED);
_WinAPI_MessageBeep(4);
MsgBox(4096, "О программе:", 'Volume Control:' & @LF & _
'Для регулировки звука, переместите мышь на панель' & _
' упровления и поверните колесо мыши.' & @LF & _
'Автор: Корниенко П.П. ' & @LF & _
' 2014г.');
EndIf;
EndFunc ;==>_Menu_About_Click
Func _Add_Program_To_Autorun_Click();
$RegKey_Add_In_Autorun = RegRead('HKEY_CURRENT_USER\software\microsoft\windows\currentversion\run', 'VolumeControl');
If (TrayItemSetState($MenuAdd_Program_To_Autorun, $TRAY_CHECKED) = True) Then
TrayItemSetState($MenuAdd_Program_To_Autorun, $TRAY_UNCHECKED);
EndIf;
If ($RegKey_Add_In_Autorun = '') Then
RegWrite('HKEY_CURRENT_USER\Software\microsoft\windows\currentversion\run', "VolumeControl", "REG_SZ", @ScriptFullPath);
MsgBox(64, 'Volume Control', 'Программа добавлена в автозагрузку ' & @ScriptFullPath);
EndIf;
EndFunc ;==>_Add_Program_To_Autorun_Click
Func _Delete_Program_From_Autorun_Click();
$RegKey_Delete_In_Autorun = RegRead('HKEY_CURRENT_USER\software\microsoft\windows\currentversion\run', 'VolumeControl');
If (TrayItemSetState($MenuDelete_Program_From_Autorun, $TRAY_CHECKED) = True) Then
TrayItemSetState($MenuDelete_Program_From_Autorun, $TRAY_UNCHECKED);
EndIf;
If ($RegKey_Delete_In_Autorun <> '') Then
RegDelete('HKEY_CURRENT_USER\software\microsoft\windows\currentversion\run', 'VolumeControl');
MsgBox(64, 'Volume Control', 'Программа удалена из автозагрузки');
EndIf;
EndFunc ;==>_Delete_Program_From_Autorun_Click
Func _Menu_Exit_Click();
Exit;
EndFunc ;==>_Menu_Exit_Click