#cs ----------------------------------------------------------------------------
	AutoIt Version: 3.2.11.3
	
	Name:		Secret Calculator
	Version:	1.0.0.8
	Datum:		24.03.2008
	
	Author: Patric Pendelin	eMail: <patric.pendelin (at) gmx.de>
	
	
	Info: Einfacher Calculator mit simplen Funktionen, der darauf aufbaut nicht durch seine
	ausgefeilte GUI ins Gewicht zu fallen.
	
	Script Function:
	
	Fixes:
	
	To Do:
	Möglichkeiten zur Erweiterung sind:
	-weitere mathematische Funktionen hinzufügen.
	-Komplett ohne sichtbare GUI arbeiten (evntl. Ergebniss mit Tooltip Anzeigen lassen oder Ergebnis ins Kontextmenü übergeben).
	-Optionsmenü, dass GUI Aussehen bzw. Verhalten zur Auswahl stellt.
	-Fensterdarstellungen für verschiedene Desktopgrößen optimieren.
#ce ----------------------------------------------------------------------------
#NoTrayIcon
;===============================================================================
;	Includes
;===============================================================================
#include <WindowsConstants.au3>
#include <GuiConstants.au3>
#include <GuiToolBar.au3>
;~ #include <EditConstants.au3>
#include <Misc.au3>
;
;===============================================================================
;	AutoItSetOption
;===============================================================================
Opt('MustDeclareVars', 1)
Opt("GUIOnEventMode", 1)
;
;===============================================================================
;	HotKeySet
;===============================================================================
HotKeySet("{PAUSE}", "_hideTool")
HotKeySet("{PRINTSCREEN}", "_clearScreen")
HotKeySet("!q", "_exitTool")
HotKeySet("!s", "_MathSin")
HotKeySet("!c", "_MathCos")
HotKeySet("!t", "_MathTan")
;
;===============================================================================
;	Declaring Variables
;===============================================================================
Global $h_Wnd
Global $h_Input_Display
;
;===============================================================================
;	Start Program
;===============================================================================
_main()
;
;===============================================================================
;	Functions
;===============================================================================
Func _main()
	_builtMainGUI()
EndFunc   ;==>_main
;
Func _calculate($i_Value)
	GUICtrlSetData($h_Input_Display, Execute($i_Value))
EndFunc   ;==>_calculate
;
; Funktion _PrimeDown
; Ermöglicht das verschieben eines Popup Fensters
; by  AspirinJunkie @ autoit.de
; http://www.autoit.de/index.php?page=Thread&postID=28539#post28539
Func _PrimeDown()
	Local $DifX, $DifY, $MouseData = GUIGetCursorInfo(@GUI_WinHandle)
	Local $WinPos = WinGetPos(@GUI_WinHandle)
	Local $MPos = MouseGetPos()
	;
	$DifX = $MPos[0] - $WinPos[0]
	$DifY = $MPos[1] - $WinPos[1]
	While $MouseData[2]
		$MPos = MouseGetPos()
		$WinPos = WinGetPos(@GUI_WinHandle)
		If ($WinPos[0] <> ($MPos[0] - $DifX)) Or ($WinPos[1] <> ($MPos[1] - $DifY)) Then
			WinMove(@GUI_WinHandle, '', $MPos[0] - $DifX, $MPos[1] - $DifY)
		EndIf
		Sleep(15)
		$MouseData = GUIGetCursorInfo(@GUI_WinHandle)
	WEnd
EndFunc   ;==>_PrimeDown
;
; Funktion _TaskbarHideButton
; Entfernt alle Taskbars die durch den Parameter bestimmt werden
; by Siao @ autoitscript.com
; http://www.autoitscript.com/forum/index.php?showtopic=61276&view=findpost&p=460233
Func _TaskbarHideButton($sText, $bHide = True)
	Local $hToolbar
	Local $cId
	;
	$hToolbar = _GUICtrlToolbar_FindToolbar("[CLASS:Shell_TrayWnd]", $sText)
	If $hToolbar = 0 Then Return False
	For $i = 0 To _GUICtrlToolbar_ButtonCount($hToolbar) - 1
		$cId = _GUICtrlToolbar_IndexToCommand($hToolbar, $i)
		If _GUICtrlToolbar_GetButtonText($hToolbar, $cId) = $sText Then
			Return _GUICtrlToolbar_HideButton($hToolbar, $cId, $bHide)
		EndIf
	Next
	Return False
EndFunc   ;==>_TaskbarHideButton
;
;===============================================================================
;	Hotkeys
;===============================================================================
; Funktion _exitTool
; Beendet das Programm
Func _exitTool()
	Exit
EndFunc   ;==>_exitTool
;
; Funktion _hideTool
; Aktiviert/deaktiviert das Programmfenster
Func _hideTool()
	If WinGetState($h_Wnd, "") <> 5 Then
		GUISetState(@SW_HIDE)
		_TaskbarHideButton("Secret Calculator")
	Else
		GUISetState(@SW_SHOW)
		_TaskbarHideButton("Secret Calculator")
	EndIf
EndFunc   ;==>_hideTool
;
; Nullt die mom. Rechnung
Func _clearScreen()
	GUICtrlSetData($h_Input_Display, "")
EndFunc   ;==>_clearScreen
;
; führt Sinus Rechnung durch
Func _MathSin()
	Local $i_Number
	$i_Number = GUICtrlRead($h_Input_Display)
	GUICtrlSetData($h_Input_Display, Sin($i_Number))
EndFunc   ;==>_MathSin
;
; führt Cosinus Rechnung durch
Func _MathCos()
	Local $i_Number
	$i_Number = GUICtrlRead($h_Input_Display)
	GUICtrlSetData($h_Input_Display, Cos($i_Number))
EndFunc   ;==>_MathCos
;
; führt Tan Rechnung durch
Func _MathTan()
	Local $i_Number
	$i_Number = GUICtrlRead($h_Input_Display)
	GUICtrlSetData($h_Input_Display, Tan($i_Number))
EndFunc   ;==>_MathTan
;
;===============================================================================
;	GUI
;===============================================================================
Func _builtMainGUI()
	;#Region ### START Koda GUI section ### Form=E:\Design\CS-Source Config\Form1_1.kxf
	$h_Wnd = GUICreate("Secret Calculator", 110, 17, Round(@DesktopWidth * 88 / 100), Round(@DesktopHeight * 86 / 100), $WS_POPUP)
	GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_PrimeDown")
	GUISetFont(9, 400, 0, "MS Sans Serif")
	GUISetBkColor(0xffffff)
	$h_Input_Display = GUICtrlCreateInput("", 0, 0, 110, 17);, $ES_RIGHT);, $WS_EX_TRANSPARENT)
	GUISetState(@SW_SHOW)
	_TaskbarHideButton("Secret Calculator")
	;#EndRegion ### END Koda GUI section ###
	;
	;================================================================================
	; Start GUI Event-Loop
	;================================================================================
	Local $nMsg
	Local $dll = DllOpen("user32.dll"); für Tastendruck erkennung
	While 1
		WinSetOnTop($h_Wnd, "", 1)
		$nMsg = GUIGetMsg()
		Switch $nMsg
			Case $GUI_EVENT_CLOSE
				Exit
		EndSwitch
		; erkennt Tastendruck und führt Bedingung aus
		If _IsPressed("0D", $dll) Then; 0D ENTER key
			_calculate(GUICtrlRead($h_Input_Display))
		EndIf
	WEnd
	DllClose($dll)
EndFunc   ;==>_builtMainGUI