Leaderboard
Popular Content
Showing content with the highest reputation on 12/15/2012 in all areas
-
Similar to other functions around the Forum, this uses _WinAPI_UniqueHardwareID instead to create a unique id based on the user's hardware. If you're familiar with _Singleton or _SingletonPID, then you will understand how this works. Function: #include <APIDiagConstants.au3> #include <StringConstants.au3> #include <WinAPIDiag.au3> ; #FUNCTION# ==================================================================================================================== ; Name ..........: _SingletonHWID ; Description ...: Enforce a design paradigm where only one instance of the script may be running with using a unique id based on the user's hardware. ; Syntax ........: _SingletonHWID($sINIFilePath[, $iFlag = 0]) ; Parameters ....: $sINIFilePath - Filepath of the INI file to store the unique id. ; $iFlag - [optional] Optional parameters. Default is 0. ; 0 - Exit the script with the exit code -1 if another instance already exists. ; 1 - Return the PID of the main executable and without exiting the script too. ; Return values .: Success - 0 No other process is running. ; Failure - The PID of the main executable. ; Author ........: guinness with initial ideas by Valik for _Singleton & KaFu for _EnforceSingleInstance. ; Remarks .......: Requires WinAPIEx.au3 & APIConstants.au3. ; Example .......: Yes ; =============================================================================================================================== Func _SingletonHWID($sINIFilePath, $iFlag = 0) Local $sOccurenceName = IniRead($sINIFilePath, '_SingletonID_', 'GUID', Default) If $sOccurenceName = Default Then $sOccurenceName = _WinAPI_UniqueHardwareID(BitOR($UHID_MB, $UHID_BIOS, $UHID_HDD)) IniWrite($sINIFilePath, '_SingletonID_', 'GUID', $sOccurenceName) EndIf Local $iExtension = StringInStr($sINIFilePath, '.', Default, -1) - 1, _ $sUniqueName = $sINIFilePath If $iExtension Then $sUniqueName = StringLeft($sUniqueName, $iExtension) EndIf Local $iBackslash = StringInStr($sUniqueName, '\', Default, -1) If $iExtension Then $sUniqueName = StringTrimLeft($sUniqueName, $iBackslash) EndIf $sOccurenceName &= '_' & $sUniqueName Local $hAutoItWnd = WinGetHandle($sOccurenceName) If @error Then AutoItWinSetTitle($sOccurenceName & @AutoItPID) $hAutoItWnd = WinGetHandle($sOccurenceName & @AutoItPID) AutoItWinSetTitle($sOccurenceName) Local Const $hControl = ControlGetHandle($hAutoItWnd, '', 'Edit1') ControlSetText($hAutoItWnd, '', $hControl, ControlGetText($hAutoItWnd, '', $hControl) & @CRLF & _ '|SINGLETON_HWID:' & @AutoItPID & @CRLF) Else If $iFlag = Default Then $iFlag = 0 If BitAND($iFlag, 1) Then ; $SINGLETON_HWID $iReturn = Int(StringRegExp(ControlGetText($hAutoItWnd, '', ControlGetHandle($hAutoItWnd, '', 'Edit1')) & @CRLF & _ '|SINGLETON_HWID:0' & @CRLF, _ '\|SINGLETON_HWID:(\d+)\R', $STR_REGEXPARRAYGLOBALMATCH)[0]) Else Exit -1 EndIf EndIf Return $iReturn EndFunc ;==>_SingletonHWIDExample use of Function: #include <MsgBoxConstants.au3> Example() Func Example() If @Compiled Then Local $iSingleton = _SingletonHWID('myUniqueName', 1) If Not $iSingleton Then MsgBox($MB_SYSTEMMODAL, 'PID: ' & @AutoItPID, 'This is the first instance of the program running: ' & $iSingleton) Else MsgBox($MB_SYSTEMMODAL, 'PID: ' & @AutoItPID, 'There is another instance running. This PID is: ' & $iSingleton) EndIf Else MsgBox($MB_SYSTEMMODAL, 'PID: ' & @AutoItPID, 'Please compile the code and run the executable twice to see the two different messages.') EndIf EndFunc ;==>ExampleAnother approach >>1 point
-
I appologized for posting in wrong thread. I was able to modified the UDF into vertical tabs but it completely broke the hide/show. Can anyone lend a hand with the hide/show section of the UDF? Hiding 1 a time sometime work but when I hides more than 1 tab - It's borked. Semi Working Vertical - (Hide/Show doesn't work) #NoTrayIcon #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <StructureConstants.au3> #include <GuiScrollBars.au3> #include <ScrollBarConstants.au3> #include <OwnTab_Mod.au3> #include <ComboConstants.au3> #include <Constants.au3> #include <GuiComboBox.au3> Local $hGui = GUICreate("(Draft Vertical)", 500, 500) GUISetBkColor(0xFFFFFF) $OwnTab_Style = 0 ;random style (only 2 styles available!!) $Total = 7 Local $aTabText[$Total] = ["1. Test", "2. Test", "3. Test", "4. Test", "5. Test", "6. Test", "7. Test"] ;Declare the regions for the OwnTab-control ;~ Local $aTabIcons[$Total][2] = [[""],[""],[""],[""],[""],[""],[""]] Global $aCtrlTab = _OwnTab_Create($hGui, $aTabText, 10, 70, 300, 380, 25, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF) Local $aTabTip[$Total] = ["1. Test", "2. Test", "3. Test", "4. Test", "5. Test", "6. Test", "7. Test"] _OwnTab_SetTip($aCtrlTab, $aTabTip) ;set the tooltips for the OwnTab-control #Region Tab1 _OwnTab_Add($aCtrlTab) ;Start controls tab1 Global $Button4 = GUICtrlCreateButton("Acknowledge the alarm", 200, 120, 300, 20) Global $Button5 = GUICtrlCreateButton("Enable tab 3", 200, 150, 300, 20) Global $Button6 = GUICtrlCreateButton("Disable tab 3", 200, 180, 300, 20) Global $Button7 = GUICtrlCreateButton("Hide tab 2", 200, 240, 300, 20) Global $Button8 = GUICtrlCreateButton("Show tab 2", 200, 210, 300, 20) #EndRegion Tab1 #Region Tab2 _OwnTab_Add($aCtrlTab) ;Start controls tab2 Global $Edit2 = GUICtrlCreateEdit("Edit in Tab2", 200, 100, 300, 50, 0) Global $Button1 = GUICtrlCreateButton("Show", 200, 100, 70, 20) Global $Label2 = GUICtrlCreateLabel("Label in Tab2", 200, 220, 300, 20, 0x201) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;$GUI_BKCOLOR_TRANSPARENT #EndRegion Tab2 #Region Tab3 _OwnTab_Add($aCtrlTab) ;Start controls tab3 Global $Edit3 = GUICtrlCreatePic(@DocumentsCommonDir & '\Eigene Bilder\Beispielbilder\Winter.jpg', 20, 55, 460, 280) #EndRegion Tab3 #Region Tab4 _OwnTab_Add($aCtrlTab) ;Start controls tab4 Global $Button4 = GUICtrlCreateButton("Acknowledge the alarm", 200, 120, 300, 20) Global $Button5 = GUICtrlCreateButton("Enable tab 3", 200, 150, 300, 20) Global $Button6 = GUICtrlCreateButton("Disable tab 3", 200, 180, 300, 20) Global $Button7 = GUICtrlCreateButton("Hide tab 2", 200, 240, 300, 20) Global $Button8 = GUICtrlCreateButton("Show tab 2", 200, 210, 300, 20) #EndRegion Tab4 #Region Tab5 _OwnTab_Add($aCtrlTab) ;Start controls tab5 Global $Button4 = GUICtrlCreateButton("Acknowledge the alarm", 200, 120, 300, 20) Global $Button5 = GUICtrlCreateButton("Enable tab 3", 200, 150, 300, 20) Global $Button6 = GUICtrlCreateButton("Disable tab 3", 200, 180, 300, 20) Global $Button7 = GUICtrlCreateButton("Hide tab 2", 200, 240, 300, 20) Global $Button8 = GUICtrlCreateButton("Show tab 2", 200, 210, 300, 20) #EndRegion Tab5 #Region Tab6 _OwnTab_Add($aCtrlTab) ;Start controls tab6 #EndRegion Tab6 #Region Tab7 _OwnTab_Add($aCtrlTab) ;Start controls tab7 #EndRegion Tab7 _OwnTab_End($aCtrlTab) ;new: end control-definition AND inizialize the OwnTab ;~ _OwnTab_Disable($aCtrlTab, 5) ;new: disable tabitems ;~ For $i = 2 To 3 ;~ _OwnTab_Hide($aCtrlTab, $i) ;~ Next _OwnTab_Switch($aCtrlTab, 3) _OwnTab_SetFontCol($aCtrlTab, 0x000000) ;new: set font-color GUISetState() _OwnTab_Hover($aCtrlTab, 0x66CCFF) ;start hover-function if you want _OwnTab_AlarmInit() ;~ _GUIScrollBars_Init($hGUI, -1, -1) Local $msg While 1 $msg = GUIGetMsg() For $a = 0 To UBound($aCtrlTab, 1) - 1 If $msg = $aCtrlTab[$a][0] Then _OwnTab_Switch($aCtrlTab, $a) EndIf Next Switch $msg Case $Button1 _OwnTab_Enable($aCtrlTab, 3) Case $Button4 _OwnTab_ResetAlarm($aCtrlTab, 4) Case $Button5 _OwnTab_Enable($aCtrlTab, 3) Case $Button6 _OwnTab_Disable($aCtrlTab, 3) Case $Button7 _OwnTab_Hide($aCtrlTab, 2) Case $Button8 _OwnTab_Show($aCtrlTab, 2) Case -3 Exit EndSwitch Sleep(10) WEnd Modified OwnTab UDF #include-once #include <GDIPlus.au3> #include <Array.au3> #include <Constants.au3> #include <WindowsConstants.au3> #Include <Timers.au3> #cs Copyrights to funkey from Autoit.de #ce Local $HoverArray[1], $ControlID, $Global_I = 0, $__ControlID, $HoverActive = 0, $Temp_Found = 0, $szTemp_Array[2] Local $OwnTabHoverCol[2], $OwnTabHoverHelp[1], $OwnTabHoverSwitch, $aOwnTabHoverCount, $OwnTabHoverCtrl Local $aOwnTabAlarm[1][3], $iOwnTabAlarm, $hOwnTabGui, $hTimerAlarm, $hTimerHover Local $OwnTab_Style = 0 ; only 0 or 1 ! _GDIPlus_Startup() OnAutoItExitRegister ( "_OwnTab_OnExit" ) Func _OwnTab_Create($hWnd, $aTabText, $xPos, $yPos, $iWidth, $iHeight, $iItemHeight = -1, $nColNoSel = -1, $nColSel = -1, $nColBg = -1, $aIcons = "") Local $aSize, $aSize2[UBound($aTabText)][2], $xLast = 0, $aCtrl[UBound($aTabText) + 1][11], $iOffset = 0, $iItemWidth = 150 If Not IsArray($aIcons) Then Local $Icons[UBound($aTabText)][2] Else Local $Icons = $aIcons EndIf If Not IsArray($aTabText) Then Return SetError(1, 0, "") For $i = 0 To UBound($aTabText) - 1 If $aTabText[$i] = "" Then Return SetError(2, $i + 1, "") $aSize = _GetTextSize($aTabText[$i]) $aSize[0] += Ceiling($aSize[0] / 10) ;make it 10% longer for bold text $aSize2[$i][0] = $aSize[0] $aSize2[$i][1] = $aSize[1] If $iItemHeight = - 1 Then $iItemHeight = $aSize[1] If $Icons[$i][0] <> "" Then $iOffset = $iItemHeight $aTabText[$i] &= " " Else $iOffset = 0 EndIf $aCtrl[$i + 1][7] = $Icons[$i][0] ;filename for icon $aCtrl[$i + 1][8] = $Icons[$i][1] ;index for icon $aCtrl[$i + 1][9] = $iItemWidth; $aSize[0] + 5 + $iOffset ;labelwidth $aCtrl[$i + 1][0] = GUICtrlCreateLabel($aTabText[$i], $xPos, $yPos + $xLast, $aCtrl[$i + 1][9], $iItemHeight, 0x411201 + ($Icons[$i][0] <> ""), $OwnTab_Style) _HoverAddCtrl($aCtrl[$i + 1][0]) If $Icons[$i][0] <> "" Then $aCtrl[$i + 1][6] = GUICtrlCreateIcon("", 0, $xPos, $yPos + $xLast, $iItemHeight - 6, $iItemHeight - 6) Else $aCtrl[$i + 1][6] = GUICtrlCreateDummy() EndIf ;~ If $Icons[$i][0] <> "" Then _SetBkIcon($aCtrl[$i + 1][6], $nColNoSel, $aCtrl[$i + 1][7], $aCtrl[$i + 1][8], $iItemHeight - 6, $iItemHeight - 6) GUICtrlCreateLabel($aCtrl[$i + 1][7], -200, -200) ;For information GUICtrlCreateLabel($aCtrl[$i + 1][8], -200, -200) ;For information GUICtrlCreateLabel($iItemHeight - 6, -200, -200) ;For information $aCtrl[$i + 1][2] = $nColNoSel $aCtrl[$i + 1][3] = $nColSel $xLast += $iItemHeight Next GUICtrlCreateLabel("", $xPos + $iItemWidth - 1, $yPos, $iWidth, $iHeight, 0x411000, $OwnTab_Style);("", $xPos, $yPos + $iItemHeight, $iWidth, $iHeight, 0x411000, $OwnTab_Style) GUICtrlSetState(-1, $GUI_DISABLE) ;$GUI_DISABLE GUICtrlSetBkColor(-1, $nColBg) $xLast = 0 For $i = 0 To UBound($aTabText) - 1 If $Icons[$i][0] <> "" Then $iOffset = $iItemHeight Else $iOffset = 0 EndIf $aCtrl[$i + 1][1] = GUICtrlCreateLabel("", $xPos + $iItemWidth - 2, $yPos + $xLast + 2, 4+2*$OwnTab_Style, $iItemHeight - 4) ;GUICtrlCreateLabel("", $xPos + $xLast + 6, $yPos + $iItemHeight - $OwnTab_Style, $aSize2[$i][0] + 3 + $iOffset, 2+2*$OwnTab_Style) GUICtrlSetBkColor(-1, $nColSel) $xLast += $aSize2[$i][1] + 10 + $iOffset Next $aCtrl[0][1] = $iItemHeight $aCtrl[0][2] = $nColNoSel $aCtrl[0][3] = $nColSel $aCtrl[0][9] = $yPos + 2 $hOwnTabGui = $hWnd Return $aCtrl EndFunc ;==>_OwnTab_Create Func _OwnTab_Switch(ByRef $aOwnTab, $iIndex, $fForce = 0) _OwnTab_UnRegisterHover($aOwnTab, $iIndex) If _OwnTab_IsAlarmed($aOwnTab[$iIndex][0]) Then $aOwnTabAlarm[@extended][2] = $aOwnTabAlarm[@extended][1] $HoverActive = 0 If $aOwnTab[0][0] = $iIndex And $fForce = 0 Then Return For $s = 1 To UBound($aOwnTab, 1) - 1 If $iIndex <> $s Then GUICtrlSetState($aOwnTab[$s][1], 32) ;$GUI_HIDE GUICtrlSetFont($aOwnTab[$s][0], -1, 400) If Not _OwnTab_IsAlarmed($aOwnTab[$s][0]) Then GUICtrlSetBkColor($aOwnTab[$s][0], $aOwnTab[$s][2]) If $aOwnTab[$s][7] <> "" Then _SetBkIcon($aOwnTab[$s][6], $aOwnTab[$s][2], $aOwnTab[$s][7], $aOwnTab[$s][8], GUICtrlRead($aOwnTab[$s][0] + 4), GUICtrlRead($aOwnTab[$s][0] + 4)) EndIf If _ArraySearch($OwnTabHoverHelp, $aOwnTab[$s][0]) = -1 Then _OwnTab_RegisterHover($aOwnTab, $s) EndIf Else GUICtrlSetFont($aOwnTab[$iIndex][0], -1, 1000) If Not _OwnTab_IsAlarmed($aOwnTab[$s][0]) Then GUICtrlSetBkColor($aOwnTab[$iIndex][0], $aOwnTab[$iIndex][3]) If $aOwnTab[$s][7] <> "" Then _SetBkIcon($aOwnTab[$iIndex][6], $aOwnTab[$iIndex][3], $aOwnTab[$s][7], $aOwnTab[$s][8], GUICtrlRead($aOwnTab[$s][0] + 4), GUICtrlRead($aOwnTab[$s][0] + 4)) EndIf GUICtrlSetState($aOwnTab[$iIndex][1], 16) ;$GUI_SHOW EndIf Next If $aOwnTab[0][0] = "" Or $fForce Then For $t = $aOwnTab[0][4] To $aOwnTab[UBound($aOwnTab, 1) - 1][4] GUICtrlSetState($t, 32) ;$GUI_HIDE If $t > $aOwnTab[$iIndex - 1][4] And $t < $aOwnTab[$iIndex][4] Then GUICtrlSetState($t, 16) ;$GUI_SHOW Next Else For $t = $aOwnTab[$aOwnTab[0][0] - 1][4] To $aOwnTab[$aOwnTab[0][0]][4] GUICtrlSetState($t, 32) ;$GUI_HIDE Next For $t = $aOwnTab[$iIndex - 1][4] To $aOwnTab[$iIndex][4] GUICtrlSetState($t, 16) ;$GUI_SHOW Next EndIf $aOwnTab[0][0] = $iIndex EndFunc ;==>_OwnTab_Switch Func _OwnTab_SetTip(ByRef $aOwnTab, $ToolTips = "", $iIndex = "") If IsArray($ToolTips) Then For $i = 1 To UBound($aOwnTab, 1) - 1 $aOwnTab[$i][5] = $ToolTips[$i - 1] GUICtrlSetTip($aOwnTab[$i][0], $ToolTips[$i - 1]) Next Else If $iIndex = "" Then Return SetError(1) $aOwnTab[$iIndex][5] = $ToolTips GUICtrlSetTip($aOwnTab[$iIndex][0], $ToolTips) EndIf EndFunc ;==>_OwnTab_SetTip Func _OwnTab_AlarmInit($iTime = 555) If Not $hTimerAlarm Then $hTimerAlarm = _Timer_SetTimer($hOwnTabGui, $iTime, "_OwnTab_AlarmBlink") Else $hTimerAlarm = _Timer_SetTimer($hOwnTabGui, $iTime, "", $hTimerAlarm) EndIf EndFunc ;==>_OwnTab_AlarmInit Func _OwnTab_AlarmBlink($hWnd, $Msg, $iIDTimer, $dwTime) Local $AlarmColAct $iOwnTabAlarm = Not $iOwnTabAlarm For $i = 1 To UBound($aOwnTabAlarm, 1) - 1 If $iOwnTabAlarm Then $AlarmColAct = $aOwnTabAlarm[$i][2] Else $AlarmColAct = $aOwnTabAlarm[$i][1] EndIf GUICtrlSetBkColor($aOwnTabAlarm[$i][0], $AlarmColAct) _SetBkIcon($aOwnTabAlarm[$i][0] + 1, $AlarmColAct, GUICtrlRead($aOwnTabAlarm[$i][0] + 2), GUICtrlRead($aOwnTabAlarm[$i][0] + 3), GUICtrlRead($aOwnTabAlarm[$i][0] + 4), GUICtrlRead($aOwnTabAlarm[$i][0] + 4)) Next EndFunc ;==>_OwnTab_AlarmBlink Func _OwnTab_SetAlarm(ByRef $aOwnTab, $iIndex, $nAlarmSel = 0xFF0000) Local $hCtrl = $aOwnTab[$iIndex][0] Local $iSearch = _ArraySearch($aOwnTabAlarm, $hCtrl) If $iSearch <> -1 Then Return ReDim $aOwnTabAlarm[UBound($aOwnTabAlarm, 1) + 1][3] $aOwnTabAlarm[UBound($aOwnTabAlarm, 1) - 1][0] = $hCtrl $aOwnTabAlarm[UBound($aOwnTabAlarm, 1) - 1][1] = $nAlarmSel $aOwnTabAlarm[UBound($aOwnTabAlarm, 1) - 1][2] = $aOwnTab[$iIndex][2] ;~ GUICtrlSetBkColor($aOwnTab[$iIndex][1], $nAlarmSel) EndFunc ;==>_OwnTab_SetAlarm Func _OwnTab_ResetAlarm(ByRef $aOwnTab, $iIndex) Local $hCtrl = $aOwnTab[$iIndex][0] Local $iSearch = _ArraySearch($aOwnTabAlarm, $hCtrl) If $iSearch = -1 Then Return _ArrayDelete($aOwnTabAlarm, $iSearch) $aOwnTab[$iIndex][2] = $aOwnTab[0][2] $aOwnTab[$iIndex][3] = $aOwnTab[0][3] ;~ GUICtrlSetBkColor($aOwnTab[$iIndex][1], $aOwnTab[0][3]) If $aOwnTab[0][0] <> $iIndex Then GUICtrlSetBkColor($aOwnTab[$iIndex][0], $aOwnTab[0][2]) Else _SetBkIcon($aOwnTab[$iIndex][0] + 1, $aOwnTab[$iIndex][3], $aOwnTab[$iIndex][7], $aOwnTab[$iIndex][8], GUICtrlRead($aOwnTab[$iIndex][0] + 4), GUICtrlRead($aOwnTab[$iIndex][0] + 4)) GUICtrlSetBkColor($aOwnTab[$iIndex][0], $aOwnTab[0][3]) EndIf EndFunc ;==>_OwnTab_ResetAlarm Func _OwnTab_Add(ByRef $aOwnTab) Local $i = 0 While 1 If $aOwnTab[$i][4] = "" Then ExitLoop $i += 1 WEnd $aOwnTab[$i][4] = GUICtrlCreateDummy() EndFunc ;==>_OwnTab_Add Func _OwnTab_End(ByRef $aOwnTab, $iIndex = 1) $aOwnTab[UBound($aOwnTab, 1) - 1][4] = GUICtrlCreateDummy() _OwnTab_Switch($aOwnTab, $iIndex) EndFunc ;==>_OwnTab_End Func _OwnTab_Hover($aOwnTab, $nColHover, $fSwitch = 0, $iTime = 50) $OwnTabHoverCol[0] = $nColHover $OwnTabHoverCol[1] = $aOwnTab[0][2] $OwnTabHoverSwitch = $fSwitch If Not $hTimerHover Then $hTimerHover = _Timer_SetTimer($hOwnTabGui, $iTime, "_ProcessHover") Else $hTimerHover = _Timer_SetTimer($hOwnTabGui, $iTime, "", $hTimerHover) EndIf EndFunc ;==>_OwnTab_Hover Func _OwnTab_RegisterHover($aOwnTab, $iIndex) If _ArraySearch($HoverArray, $aOwnTab[$iIndex][0]) = -1 Then _HoverAddCtrl($aOwnTab[$iIndex][0]) EndFunc ;==>_OwnTab_RegisterHover Func _OwnTab_UnRegisterHover($aOwnTab, $iIndex) Local $iSearch = _ArraySearch($HoverArray, $aOwnTab[$iIndex][0]) If $iSearch <> -1 Then _ArrayDelete($HoverArray, $iSearch) EndFunc ;==>_OwnTab_UnRegisterHover #Region Disable and Enable Tab-Register Func _OwnTab_Disable($aOwnTab, $iIndex) GUICtrlSetState($aOwnTab[$iIndex][0], 128) _OwnTab_UnRegisterHover($aOwnTab, $iIndex) Local $iSearch = _ArraySearch($OwnTabHoverHelp, $aOwnTab[$iIndex][0]) If $iSearch = -1 Then _ArrayAdd($OwnTabHoverHelp, $aOwnTab[$iIndex][0]) EndFunc ;==>_OwnTab_Disable Func _OwnTab_Enable($aOwnTab, $iIndex) GUICtrlSetState($aOwnTab[$iIndex][0], 64) _OwnTab_RegisterHover($aOwnTab, $iIndex) Local $iSearch = _ArraySearch($OwnTabHoverHelp, $aOwnTab[$iIndex][0]) If $iSearch <> -1 Then _ArrayDelete($OwnTabHoverHelp, $iSearch) EndFunc ;==>_OwnTab_Enable #EndRegion Disable and Enable Tab-Register Func _OwnTab_Hide(ByRef $aOwnTab, $iIndex) If $iIndex = 0 Or $iIndex > UBound($aOwnTab, 1) - 1 Then Return SetError(1) If BitAND(GUICtrlGetState($aOwnTab[$iIndex][0]), $GUI_HIDE) Then Return GUICtrlSetState($aOwnTab[$iIndex][0], $GUI_HIDE) GUICtrlSetState($aOwnTab[$iIndex][1], $GUI_HIDE) GUICtrlSetState($aOwnTab[$iIndex][6], $GUI_HIDE) Local $Offset = 50 - 4 For $o = 0 To $iIndex - 1 $Offset += $aOwnTab[0][1] Next ;~ _ArrayDisplay($aOwnTab) For $o = $iIndex + 1 To UBound($aOwnTab, 1) - 1 GUICtrlSetPos($aOwnTab[$o][0], 10, $Offset - 1) GUICtrlSetPos($aOwnTab[$o][1], $aOwnTab[1][9] + 7, $Offset) GUICtrlSetPos($aOwnTab[$o][6], 10, $Offset) $Offset += $aOwnTab[0][1] Next If $iIndex = $aOwnTab[0][0] Then If $iIndex = 1 Then _OwnTab_Switch($aOwnTab, 2) Else _OwnTab_Switch($aOwnTab, $iIndex - 1) EndIf EndIf EndFunc ;==>_OwnTab_Hide Func _OwnTab_Show(ByRef $aOwnTab, $iIndex, $iActivate = 0) If $iIndex = 0 Or $iIndex > UBound($aOwnTab, 1) + 1 Then Return SetError(1) If BitAND(GUICtrlGetState($aOwnTab[$iIndex][0]), 16) Then Return GUICtrlSetState($aOwnTab[$iIndex][0], $GUI_SHOW) ;$GUI_SHOW GUICtrlSetState($aOwnTab[$iIndex][1], $GUI_SHOW) ;$GUI_SHOW GUICtrlSetState($aOwnTab[$iIndex][6], $GUI_SHOW) ;$GUI_SHOW Local $Offset = 0 For $o = 0 To UBound($aOwnTab, 1) - 2 $Offset += 25 Next For $o = UBound($aOwnTab, 1) - 1 To $iIndex + 1 Step - 1 GUICtrlSetPos($aOwnTab[$o][0], 10, $aOwnTab[0][9]) GUICtrlSetPos($aOwnTab[$o][1], 10 + 1, $aOwnTab[0][9] + $aOwnTab[0][1] - 2 - $OwnTab_Style) GUICtrlSetPos($aOwnTab[$o][6], 10 + 3, $aOwnTab[0][9] + 3) $Offset -= $aOwnTab[$o - 1][9] Next If $iActivate Then _OwnTab_Switch($aOwnTab, $iIndex) EndIf EndFunc ;==>_OwnTab_Show Func _OwnTab_SetFontCol($aOwnTab, $nColor, $iIndex = "") If $iIndex = "" Then For $i = 1 To UBound($aOwnTab, 1) - 1 GUICtrlSetColor($aOwnTab[$i][0], $nColor) Next Else If $iIndex < 1 Or $iIndex >= UBound($aOwnTab, 1) Then Return SetError(1) GUICtrlSetColor($aOwnTab[$iIndex][0], $nColor) EndIf EndFunc ;==>_OwnTab_SetFontCol Func _OwnTab_SetOnEvent($aOwnTab, $sFunc = "", $iIndex = "") If $sFunc = "" Then $sFunc = "_OwnTab_OnEvent" If $iIndex = "" Then For $f = 1 To UBound($aOwnTab, 1) -1 GUICtrlSetOnEvent($aOwnTab[$f][0], $sFunc) Next Else If $iIndex < 1 Or $iIndex >= UBound($aOwnTab, 1) Then Return SetError(1) GUICtrlSetOnEvent($aOwnTab[$iIndex][0], $sFunc) EndIf EndFunc ;~ Func _OwnTab_OnEvent() ;for example ;~ For $a = 1 To UBound($aCtrlTab, 1) -1 ;~ If @GUI_CtrlId = $aCtrlTab[$a][0] Then ExitLoop ;~ Next ;~ If $a < UBound($aCtrlTab, 1) Then _OwnTab_Switch($aCtrlTab, $a) ;~ EndFunc Func _OwnTab_OnExit() _GDIPlus_Shutdown() If $hTimerAlarm Then _Timer_KillTimer($hOwnTabGui, $hTimerAlarm) If $hTimerHover Then _Timer_KillTimer($hOwnTabGui, $hTimerHover) EndFunc ;==>_OwnTab_Exit Func _GetTextSize($nText, $sFont = 'Microsoft Sans Serif', $iFontSize = 8.5, $iFontAttributes = 0) If $nText = '' Then Return Local $hGui = GUICreate("Nothing") ;~ _GDIPlus_Startup() Local $hFormat = _GDIPlus_StringFormatCreate(0) Local $hFamily = _GDIPlus_FontFamilyCreate($sFont) Local $hFont = _GDIPlus_FontCreate($hFamily, $iFontSize, $iFontAttributes, 3) Local $tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0) Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui) Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $nText, $hFont, $tLayout, $hFormat) Local $iWidth = Ceiling(DllStructGetData($aInfo[0], "Width")) Local $iHeight = Ceiling(DllStructGetData($aInfo[0], "Height")) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_FontDispose($hFont) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_GraphicsDispose($hGraphic) ;~ _GDIPlus_Shutdown() GUIDelete($hGui) Local $aSize[2] = [$iWidth, $iHeight] Return $aSize EndFunc ;==>_GetTextSize Func _ProcessHover($hWnd, $Msg, $iIDTimer, $dwTime) If $OwnTabHoverSwitch > 1 And $OwnTabHoverCtrl <> "" Then If $aOwnTabHoverCount < $OwnTabHoverSwitch Then $aOwnTabHoverCount += 1 If $aOwnTabHoverCount >= $OwnTabHoverSwitch Then ControlClick($hOwnTabGui, "", $OwnTabHoverCtrl) $aOwnTabHoverCount = 0 $OwnTabHoverCtrl = "" EndIf EndIf $ControlID = _HoverCheck() If IsArray($ControlID) Then If $ControlID[0] = "AcquiredHover" Then $OwnTabHoverCtrl = $ControlID[1] $aOwnTabHoverCount = 0 If $OwnTabHoverSwitch = "1" Then Return ControlClick($hOwnTabGui, "", $OwnTabHoverCtrl) Else _HoverFound($ControlID[1]) EndIf Else If $ControlID[1] <> "" Then _HoverLost($ControlID[1]) $OwnTabHoverCtrl = "" EndIf EndIf EndIf EndFunc ;==>_ProcessHover Func _HoverLost($ControlID) If _OwnTab_IsAlarmed($ControlID) Then Return GUICtrlSetBkColor($ControlID, $OwnTabHoverCol[1]) If GUICtrlRead($ControlID + 2) <> "" Then _SetBkIcon($ControlID + 1, $OwnTabHoverCol[1], GUICtrlRead($ControlID + 2), GUICtrlRead($ControlID + 3), GUICtrlRead($ControlID + 4), GUICtrlRead($ControlID + 4)) EndFunc ;==>_HoverLost Func _HoverFound($ControlID) If _OwnTab_IsAlarmed($ControlID) Then Return GUICtrlSetBkColor($ControlID, $OwnTabHoverCol[0]) If GUICtrlRead($ControlID + 2) <> "" Then _SetBkIcon($ControlID + 1, $OwnTabHoverCol[0], GUICtrlRead($ControlID + 2), GUICtrlRead($ControlID + 3), GUICtrlRead($ControlID + 4), GUICtrlRead($ControlID + 4)) EndFunc ;==>_HoverFound Func _OwnTab_IsAlarmed($hCtrl) Local $iSearch = _ArraySearch($aOwnTabAlarm, $hCtrl) If $iSearch = -1 Then Return 0 Return SetExtended($iSearch, 1) EndFunc #Region _MouseHover.au3 ;==================================================================================================================================== ; UDF Name: _MouseHover.au3 ; ; Author: marfdaman (Marvin) ; ; Contributions: RazerM (adding SetText parameter to _HoverFound and _HoverUndo). ; ; email: marfdaman at gmail dot com ; ; Use: Enable hover events for controls ; ; Note(s): If you want to use this i.c.w. an AdlibEnable in your current script, make your Adlib call "_HoverCheck()" as well. ; In this case, _HoverOn must NOT be called. ;==================================================================================================================================== ;=============================================================================== ; Description: _HoverAddCtrl ; Parameter(s): $___ControlID -> Control ID of control to be hoverchecked ; ; Requirement: Array.au3 ; Return Value(s): None ;=============================================================================== Func _HoverAddCtrl($___ControlID) _ArrayAdd($HoverArray, $___ControlID) EndFunc ;==>_HoverAddCtrl ;=============================================================================== ; Description: Checks whether the mousecursor is hovering over any of the defined controls. ; Parameter(s): None ; Requirement: None ; Return Value(s): If a control has matched, an array will be returned, with $array[1] being either ; "AcquiredHover" or "LostHover". $array[2] will contain the control ID. ; It is recommended that you put this function in an AdlibEnable, since it's EXTREMELY ; resource friendly. ;=============================================================================== Func _HoverCheck() $HoverData = GUIGetCursorInfo() If Not IsArray($HoverData) Then Return $Temp_Found = 0 For $i = 1 To UBound($HoverArray) - 1 If $HoverData[4] = $HoverArray[$i] Or $HoverData[4] = $HoverArray[$i] + 1 Then $Temp_Found = $i EndIf Next Select Case $Temp_Found = 0 And $HoverActive = 1 Or $Temp_Found <> 0 And $Temp_Found <> $Global_I And $HoverActive = 1 $HoverActive = 0 $Temp_Found = 0 $szTemp_Array[0] = "LostHover" $szTemp_Array[1] = $HoverArray[$Global_I] Return $szTemp_Array Case $Temp_Found > 0 And $HoverActive = 0 $Global_I = $Temp_Found $HoverActive = 1 $Temp_Found = 0 $szTemp_Array[0] = "AcquiredHover" $szTemp_Array[1] = $HoverArray[$Global_I] Return $szTemp_Array EndSelect EndFunc ;==>_HoverCheck #EndRegion _MouseHover.au3 Func _SetBkIcon($ControlID, $iBackground, $sIcon, $iIndex, $iWidth, $iHeight) ;Yashied ;http://www.autoitscript.com/forum/index.php?showtopic=92207&view=findpost&p=662886 Const $STM_SETIMAGE = 0x0172 Local $tIcon, $tID, $hDC, $hBackDC, $hBackSv, $hBitmap, $hImage, $hIcon, $hBkIcon $tIcon = DllStructCreate('hwnd') $tID = DllStructCreate('hwnd') $hIcon = DllCall('user32.dll', 'int', 'PrivateExtractIcons', 'str', $sIcon, 'int', $iIndex, 'int', $iWidth, 'int', $iHeight, 'ptr', DllStructGetPtr($tIcon), 'ptr', DllStructGetPtr($tID), 'int', 1, 'int', 0) If (@error) Or ($hIcon[0] = 0) Then Return SetError(1, 0, 0) EndIf $hIcon = DllStructGetData($tIcon, 1) $tIcon = 0 $tID = 0 $hDC = _WinAPI_GetDC(0) $hBackDC = _WinAPI_CreateCompatibleDC($hDC) $hBitmap = _WinAPI_CreateSolidBitmap(0, $iBackground, $iWidth, $iHeight) $hBackSv = _WinAPI_SelectObject($hBackDC, $hBitmap) _WinAPI_DrawIconEx($hBackDC, 0, 0, $hIcon, 0, 0, 0, 0, $DI_NORMAL) ;~ _GDIPlus_Startup() $hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap) $hBkIcon = DllCall($ghGDIPDll, 'int', 'GdipCreateHICONFromBitmap', 'hWnd', $hImage, 'int*', 0) $hBkIcon = $hBkIcon[2] _GDIPlus_ImageDispose($hImage) GUICtrlSendMsg($ControlID, $STM_SETIMAGE, $IMAGE_ICON, _WinAPI_CopyIcon($hBkIcon)) _WinAPI_RedrawWindow(GUICtrlGetHandle($ControlID)) ;~ _GDIPlus_Shutdown() _WinAPI_SelectObject($hBackDC, $hBackSv) _WinAPI_DeleteDC($hBackDC) _WinAPI_ReleaseDC(0, $hDC) _WinAPI_DeleteObject($hBkIcon) _WinAPI_DeleteObject($hBitmap) _WinAPI_DeleteObject($hIcon) Return SetError(0, 0, 1) EndFunc ;==>_SetBkIcon1 point
-
This can be a solution: #include <WinHTTP.au3> #include <WinAPI.au3> Global Const $tagWINHTTP_PROXY_INFO = "DWORD dwAccessType;ptr lpszProxy;ptr lpszProxyBypass;" $hOpen = _WinHttpOpen(Default, $WINHTTP_ACCESS_TYPE_NAMED_PROXY, "123.123.123.123:8080") $tProxy = DllStructCreate($tagWINHTTP_PROXY_INFO) DllCall($hWINHTTPDLL__WINHTTP, "bool", "WinHttpQueryOption", _ "handle", $hOpen, _ "dword", $WINHTTP_OPTION_PROXY, _ "ptr", DllStructGetPtr($tProxy), _ "dword*", DllStructGetSize($tProxy)) $ProxyName = GetWStrFromPointer(DllStructGetData($tProxy,"lpszProxy")) ConsoleWrite($ProxyName & @CRLF) _WinHttpCloseHandle($hOpen) Func GetWStrFromPointer($pWStr) Local $iSize = _WinAPI_StringLenW($pWStr) Local $tWStr = DllStructCreate("wchar Data[" & $iSize & "]",$pWStr) Return DllStructGetData($tWStr,"Data") EndFunc1 point
-
Problem with selecting a file through FileOpenDialog
AlexChernavsky reacted to JLogan3o13 for a topic
The problem is due to you redefining your variable. In this section: Case $hChooseInputFile $sTemp = FileOpenDialog("Choose input file", @ScriptDir & "", "All files (*.*)", 1 + 2) If $sTemp Then $sInputFileName = $sTemp $hInputFileName = GUICtrlSetData($hInputFileName, $sInputFileName & " ") EndIf GUICtrlSetState($hCondition, $GUI_FOCUS) ; Return focus to the "Continue" button you don't need to say $hInputFileName = GUICtrlSetData($hInputFileName, $sInputFileName & " "). Instead, just set the data: Case $hChooseInputFile $sTemp = FileOpenDialog("Choose input file", @ScriptDir & "", "All files (*.*)", 1 + 2) If $sTemp Then $sInputFileName = $sTemp GUICtrlSetData($hInputFileName, $sInputFileName & " ") EndIf GUICtrlSetState($hCondition, $GUI_FOCUS) ; Return focus to the "Continue" button1 point