Leaderboard
Popular Content
Showing content with the highest reputation on 12/17/2012 in all areas
-
Creating a Simple Laptop Tracker with Dropbox as C&C
LewisKeith reacted to Mechaflash for a topic
As long as the process is wrapped into a function, just use AdLibRegister() to space out the timing.1 point -
DickWms, A peculiarity of Windows is causing this. When you switch to another tab the whole content of the input is selected while the input also retains the keyboard focus - so pressing "Delete" still affects the input and replaces all content. You can see that quite clearly in this short script - just put some text into the input and then swap tabs. Whan you return to Tab 0 you will see that all the text in the input is highlighted (highlit?): #include <GUIConstantsEx.au3> $hGUI = GUICreate("Test", 500, 500) $cTab = GUICtrlCreateTab(10, 10, 480, 380) $cTab_0 = GUICtrlCreateTabItem("Tab 0") $cInput = GUICtrlCreateInput("", 50, 50, 200, 20) $cTab_1 = GUICtrlCreateTabItem("Tab 1") GUICtrlCreateTabItem("") GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd The trick is to reset the focus to another control when you change tabs - like this: #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <Misc.au3> Local $hDLL = DllOpen("user32.dll") $hGUI = GUICreate("Test", 500, 500) $cTab = GUICtrlCreateTab(10, 10, 480, 380) $cTab_0 = GUICtrlCreateTabItem("Tab 0") $cInput = GUICtrlCreateInput("", 50, 50, 200, 20) $cTab_1 = GUICtrlCreateTabItem("Tab 1") GUICtrlCreateTabItem("") $cButton = GUICtrlCreateButton("Test", 10, 450, 80, 30) ; <<<<< Just for the demo - you could use any control GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE DllClose($hDLL) Exit Case $cTab ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< When tab is actioned GUICtrlSetState($cButton, $GUI_FOCUS) ; <<<<<<<<<<<<<< Change the focus EndSwitch If _WinAPI_GetFocus() = GUICtrlGetHandle($cInput) And _IsPressed("2E", $hDLL) And GUICtrlRead($cTab) = 0 Then GUICtrlSetData($cInput, "") While _IsPressed("2E", $hDLL) ; <<<<<<<<<<<<<<<<<<<<<<<<<<< Not really necessary, but just wait until the key is released Sleep(10) WEnd EndIf WEnd All clear? M231 point
-
Multiple Gui's and Buttons
LuisMartins reacted to guinness for a topic
OK, I'm sure you know how. But if not see last post. My suggestion is use the code provided along with the help file, this way you have a better understanding of what is happening. I have helped you with what you need, so now you can see it's possible to take an idea and apply it to AutoIt.1 point -
Multiple Gui's and Buttons
LuisMartins reacted to guinness for a topic
I added that, correct. In your example that wasn't there and thus I can't see the need for a Global variable. I have to say I'm a little confused at what you're trying to achieve. Is this what you wanted? #include <GUIConstants.au3> Example() Func Example() Local $hGUI = GUICreate('') Local $iButton_1 = GUICtrlCreateButton('Start', 5, 5, 85, 25) Local $iButton_2 = GUICtrlCreateButton('Exit', 90, 5, 85, 25) GUISetState(@SW_SHOW, $hGUI) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $iButton_1 If GUI() Then ExitLoop Case $iButton_2 ExitLoop EndSwitch WEnd GUIDelete($hGUI) EndFunc ;==>Example Func GUI() Local $hGUI = GUICreate('') ; Defined as Global to be used on the Third Function GUICtrlCreateLabel('Would you like to start the application?', 0, 0) Local $iButton_1 = GUICtrlCreateButton('Yes', 5, 25, 85, 25) Local $iButton_2 = GUICtrlCreateButton('No', 90, 25, 85, 25) GUISetState(@SW_SHOW, $hGUI) Local $fExit = False While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $fExit = True ExitLoop Case $iButton_1 Third(); Call a third function ExitLoop Case $iButton_2 ; Do Nothing. EndSwitch WEnd GUIDelete($hGUI) Return $fExit EndFunc ;==>GUI Func Third() ; This one has no GUI MsgBox('', '', 'This is the third function') ; Show some message EndFunc ;==>Third1 point -
Multiple Gui's and Buttons
LuisMartins reacted to guinness for a topic
I think you need to read about variable declaration, Global variables should be declared at the top of the script not in the middle of functions. Here it is, but I don't understand why you delete the second GUI without exiting the second loop? Else you're stuck in that second loop with no way of exiting back to the first. #include <GUIConstants.au3> Global $__hGUI = 0 Example() Func Example() Local $hGUI = GUICreate('') Local $iButton_1 = GUICtrlCreateButton('Start', 5, 5, 85, 25) Local $iButton_2 = GUICtrlCreateButton('Exit', 90, 5, 85, 25) GUISetState(@SW_SHOW, $hGUI) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $iButton_1 If GUI() Then ExitLoop Case $iButton_2 ExitLoop EndSwitch WEnd GUIDelete($hGUI) EndFunc ;==>Example Func GUI() $__hGUI = GUICreate('') ; Defined as Global to be used on the Third Function GUICtrlCreateLabel('Would you like to start the application?', 0, 0) Local $iButton_1 = GUICtrlCreateButton('Yes', 5, 25, 85, 25) Local $iButton_2 = GUICtrlCreateButton('No', 90, 25, 85, 25) GUISetState(@SW_SHOW, $__hGUI) Local $fExit = False While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $fExit = True ExitLoop Case $iButton_1 Third(); Call a third function ExitLoop ; ExitLoop to go back to the main loop. Case $iButton_2 ; Do Nothing. EndSwitch WEnd GUIDelete($__hGUI) $__hGUI = 0 Return $fExit EndFunc ;==>GUI Func Third() ; This one has no GUI MsgBox('', '', 'This is the third function') ; Show some message GUIDelete($__hGUI); ; Delete the GUI <<<<< Why??? EndFunc ;==>Third1 point -
Multiple Gui's and Buttons
LuisMartins reacted to guinness for a topic
This is the correct approach >> Note: It's always best to provide workable code, I just had to re-write what you posted to demonstrate usage. #include <GUIConstants.au3> Example() Func Example() Local $hGUI = GUICreate('') Local $iButton_1 = GUICtrlCreateButton('Start', 5, 5, 85, 25) Local $iButton_2 = GUICtrlCreateButton('Exit', 90, 5, 85, 25) GUISetState(@SW_SHOW, $hGUI) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $iButton_1 If GUI() Then ExitLoop Case $iButton_2 ExitLoop EndSwitch WEnd GUIDelete($hGUI) EndFunc ;==>Example Func GUI() Local $hGUI = GUICreate('') GUICtrlCreateLabel('Would you like to start the application?', 0, 0) Local $iButton_1 = GUICtrlCreateButton('Yes', 5, 25, 85, 25) Local $iButton_2 = GUICtrlCreateButton('No', 90, 25, 85, 25) GUISetState(@SW_SHOW, $hGUI) Local $fExit = False While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE $fExit = True ExitLoop Case $iButton_1 $fExit = True ExitLoop Case $iButton_2 ; Do Nothing. EndSwitch WEnd GUIDelete($hGUI) Return $fExit EndFunc ;==>GUI1 point -
Multiple Gui's and Buttons
LuisMartins reacted to guinness for a topic
You need to add an ExitLoop after deleting the GUI to enter the previous loop.1 point -
DickWms, If all you are looking for are those few keys then why not use _IsPressed in your idle loop? M23 Edit: Here is how you could look for the "Delete" key to empty the input: #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <Misc.au3> Local $hDLL = DllOpen("user32.dll") $hGUI = GUICreate("Test", 500, 500) $cInput = GUICtrlCreateInput("", 10, 10, 200, 20) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE DllClose($hDLL) Exit EndSwitch If _WinAPI_GetFocus() = GUICtrlGetHandle($cInput) And _IsPressed("2E", $hDLL) Then GUICtrlSetData($cInput, "") EndIf WEndAny help?1 point
-
GDIP.au3
wakillon reacted to Authenticity for a topic
w00t Thanks for the example, better than what I could come up with, for sure. Here is a little translated tool original written by Sjaak Priester. I've just translated it (not so good) but it's still good to show the ColorMatrix functions meaning: #include <Constants.au3> #include <GDIP.au3> #include <GUIConstantsEx.au3> #include <ScrollBarConstants.au3> #include <GUIToolbar.au3> #include <WindowsConstants.au3> Opt('MustDeclareVars', 1) If Not IsDeclared("SB_ENDSCROLL") Then Global Const $SB_ENDSCROLL = 8 Global $hToolbar Global Enum $idOpen = 0x0400, $idSave Global $aLables[5] = ["Contrast", "Brightness", "Saturation", "Hue", "Gamma"] ; Slider, hSlider, Label, Min, Max, Default, Factor, Precision, PreviousVal Global $aSliders[5][9] = _ [[0, 0, 0, 4, 80, 20, 0.05, 2, -1], _ [0, 0, 0, -20, 20, 0, 0.05, 2, -1], _ [0, 0, 0, 0, 60, 20, 0.05, 2, -1], _ [0, 0, 0, -45, 45, 0, 4, 0, -1], _ [0, 0, 0, 4, 80, 20, 0.05, 2, -1]] Global $hGraphics, $hImage, $hBackImage, $hImageContext, $hIA, $tPreHue, $tPostHue, $aImageSize, $sImage, $iPicWidth, $iPicHeight, $fChange Global $sImageFormats = "All Picture Files (*.bmp;*.gif;*.jpg;*.jpeg;*.jpe;*.jfif;*.tif;*.tiff;*.png;*.exif;*.wmf;*.emf)" _GDIPlus_Startup() _Main() _GDIPlus_Shutdown() Func _Main() Local $hGUI, $BtnReset, $BtnBlackWhite, $iGUIWidth, $iGUIHeight, $iLeft, $iTop, $iI, $aSize $iGUIWidth = @DesktopWidth*0.75 $iGUIHeight = @DesktopHeight*0.75 If $iGUIWidth < 900 Then $iGUIWidth = 900 If $iGUIHeight < 700 Then $iGUIHeight = 700 $hGUI = GUICreate("Image tool", $iGUIWidth, $iGUIHeight) $hToolbar = _GUICtrlToolbar_Create ($hGUI) $aSize = _GUICtrlToolbar_GetMaxSize ($hToolbar) $iPicWidth = $iGUIWidth-250 $iPicHeight = $iGUIHeight - $aSize[1] - 30 GUICtrlCreateLabel("", 10, $aSize[1] + 20, $iPicWidth, $iPicHeight, -1, $WS_EX_CLIENTEDGE) $hGraphics = _GDIPlus_GraphicsCreateFromHWND(GUICtrlGetHandle(-1)) $hIA = _GDIPlus_ImageAttributesCreate() _GDIPlus_GraphicsSetInterpolationMode($hGraphics, 7) $iLeft = $iGUIWidth - 230 $iTop = $aSize[1]+20 For $iI = 0 To UBound($aSliders)-1 GUICtrlCreateLabel($aLables[$iI], $iLeft, $iI*60+$iTop) $aSliders[$iI][0] = GUICtrlCreateSlider($iLeft, $iI*60+$iTop+20, 150, 20) $aSliders[$iI][1] = GUICtrlGetHandle(-1) $aSliders[$iI][2] = GUICtrlCreateLabel("", $iLeft+160, $iI*60+$iTop+20, 40, 25) GUICtrlSetLimit($aSliders[$iI][0], $aSliders[$iI][4], $aSliders[$iI][3]) Next _Reset() $BtnReset = GUICtrlCreateButton("Reset", $iLeft+125, $iI*60+$iTop, 70, 25) $BtnBlackWhite = GUICtrlCreateButton("Black&&White", $iLeft+50, $iI*60+$iTop, 70, 25) _GUICtrlToolbar_AddBitmap ($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR) _GUICtrlToolbar_AddButton ($hToolbar, $idOpen, $STD_FILEOPEN) _GUICtrlToolbar_AddButton ($hToolbar, $idSave, $STD_FILESAVE) GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY") GUIRegisterMsg($WM_HSCROLL, "_WM_HSCROLL") GUISetState() While 1 Switch GUIGetMsg() Case $BtnReset _Reset() Case $BtnBlackWhite _BlackAndWhite() Case $GUI_EVENT_RESTORE If $hImage Then _Update() Case $GUI_EVENT_CLOSE If $fChange Then If _Save() Then If $hImageContext Then _GDIPlus_GraphicsDispose($hImageContext) If $hBackImage Then _GDIPlus_ImageDispose($hBackImage) If $hImage Then _GDIPlus_ImageDispose($hImage) _GDIPlus_ImageAttributesDispose($hIA) _GDIPlus_GraphicsDispose($hGraphics) ExitLoop EndIf Else ExitLoop EndIf EndSwitch WEnd EndFunc Func _Reset() Local $iI For $iI = 0 To UBound($aSliders)-1 GUICtrlSetData($aSliders[$iI][2], _GetStringFormat($iI, $aSliders[$iI][5])) GUICtrlSetData($aSliders[$iI][0], $aSliders[$iI][5]) $aSliders[$iI][8] = -1 Next _GDIPlus_ImageAttributesSetThreshold($hIA, 0, False) If $hImage Then _Update() EndFunc Func _Save() Local $iRet If $fChange Then $iRet = MsgBox(0x23, "Save changes", 'Would you like to save changes to "' & StringTrimLeft($sImage, StringInStr($sImage, "\", 0, -1)) & '"?') If $iRet = 2 Then Return False ElseIf $iRet = 6 Then _GDIPlus_ImageSaveToFile($hBackImage, $sImage) EndIf EndIf Return True EndFunc Func _Initialize() $tPreHue = _GDIPlus_ColorMatrixCreate() $tPostHue = _GDIPlus_ColorMatrixCreate() _GDIPlus_ColorMatrixInitHue($tPreHue, $tPostHue) $aImageSize = _GDIPlus_ImageGetDimension($hImage) _GDIPlus_GraphicsDrawImageRect($hGraphics, $hImage, 0, 0, $iPicWidth, $iPicHeight) _Reset() $fChange = False EndFunc Func _Update() Local $tColorMatrix, $pColorMatrix, $nContrast, $nBrightness, $nSaturation, $nHue, $nGamma $tColorMatrix = _GDIPlus_ColorMatrixCreate() $pColorMatrix = DllStructGetPtr($tColorMatrix) $nContrast = _GetValue(0) $nBrightness = _GetValue(1) $nSaturation = _GetValue(2) $nHue = _GetValue(3) $nGamma = _GetValue(4) _GDIPlus_ColorMatrixScale($tColorMatrix, $nContrast, $nContrast, $nContrast, 1, 1) _GDIPlus_ColorMatrixTranslate($tColorMatrix, $nBrightness, $nBrightness, $nBrightness, 0, 1) _GDIPlus_ColorMatrixSetSaturation($tColorMatrix, $nSaturation, 1) _GDIPlus_ColorMatrixRotateHue($tColorMatrix, $tPreHue, $tPostHue, $nHue) _GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $pColorMatrix) _GDIPlus_ImageAttributesSetGamma($hIA, 0, True, $nGamma) _GDIPlus_GraphicsDrawImageRectRectIA($hImageContext, $hImage, 0, 0, $aImageSize[0], $aImageSize[1], 0, 0, $aImageSize[0], $aImageSize[1], $hIA) _GDIPlus_GraphicsDrawImageRectRect($hGraphics, $hBackImage, 0, 0, $aImageSize[0], $aImageSize[1], 0, 0, $iPicWidth, $iPicHeight) EndFunc Func _GetValue($iIndex) Return GUICtrlRead($aSliders[$iIndex][0])*$aSliders[$iIndex][6] EndFunc Func _GetStringFormat($iIndex, $iVal) If $aSliders[$iIndex][7] Then Return StringFormat("%." & $aSliders[$iIndex][7] & "f", $iVal*$aSliders[$iIndex][6]) Else Return StringFormat("%d", $iVal*$aSliders[$iIndex][6]) EndIf EndFunc Func _BlackAndWhite() Local $tBWMatrix, $pBWMatrix If $hImage Then _GDIPlus_ImageAttributesSetThreshold($hIA, 0, True, 0.5) $tBWMatrix = _GDIPlus_ColorMatrixCreateGrayScale() $pBWMatrix = DllStructGetPtr($tBWMatrix) _GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $pBWMatrix) _GDIPlus_GraphicsDrawImageRectRectIA($hImageContext, $hImage, 0, 0, $aImageSize[0], $aImageSize[1], 0, 0, $aImageSize[0], $aImageSize[1], $hIA) _GDIPlus_GraphicsDrawImageRectRect($hGraphics, $hBackImage, 0, 0, $aImageSize[0], $aImageSize[1], 0, 0, $iPicWidth, $iPicHeight) $fChange = True EndIf EndFunc Func _WM_HSCROLL($hWnd, $iMsg, $iwParam, $ilParam) Local $iI, $iPos, $iCode $iCode = BitAND($iwParam, 0xFFFF) If $iCode = $SB_ENDSCROLL Or $iCode = $SB_THUMBPOSITION Then Return 0 For $iI = 0 To UBound($aSliders)-1 If $aSliders[$iI][1] = $ilParam Then $iPos = GUICtrlRead($aSliders[$iI][0]) If $iPos <> $aSliders[$iI][8] Then GUICtrlSetData($aSliders[$iI][2], _GetStringFormat($iI, $iPos)) $aSliders[$iI][8] = $iPos If $hImage Then $fChange = True _Update() EndIf EndIf ExitLoop EndIf Next Return $GUI_RUNDEFMSG EndFunc Func _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) Local $tNMHDR, $hFrom, $iCode, $iCommand, $sFileName, $sFile, $sExt, $sTmp, $hBitmap, $hContext $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hFrom = DllStructGetData($tNMHDR, "hWndFrom") $iCode = DllStructGetData($tNMHDR, "Code") If $hFrom = $hToolbar And $iCode = $NM_LDOWN Then Local $iCommand = _GUICtrlToolbar_IndexToCommand($hToolbar, _GUICtrlToolbar_GetHotItem($hToolbar)) Switch $iCommand Case $idOpen $sFileName = FileOpenDialog("Open File", @WorkingDir, $sImageFormats, 3) If $sFileName Then If _Save() Then $sImage = $sFileName If $hImage Then _GDIPlus_GraphicsDispose($hImageContext) _GDIPlus_ImageDispose($hBackImage) _GDIPlus_ImageDispose($hImage) $hImage = 0 $hBackImage = 0 $hImageContext = 0 $sImage = "" EndIf $hBitmap = _GDIPlus_ImageLoadFromFile($sFileName) If @error Then MsgBox(0x10, "Error", "Could not load image") _Reset() $fChange = False Else $hImage = _GDIPlus_BitmapCreateFromScan0(_GDIPlus_ImageGetWidth($hBitmap), _GDIPlus_ImageGetHeight($hBitmap)) $hContext = _GDIPlus_ImageGetGraphicsContext($hImage) _GDIPlus_GraphicsDrawImage($hContext, $hBitmap, 0, 0) _GDIPlus_GraphicsDispose($hContext) _GDIPlus_ImageDispose($hBitmap) $hBackImage = _GDIPlus_ImageClone($hImage) $hImageContext = _GDIPlus_ImageGetGraphicsContext($hBackImage) _Initialize() EndIf EndIf EndIf Case $idSave If $hImage Then $sFile = StringTrimLeft($sImage, StringInStr($sImage, "\", 0, -1)) $sExt = StringTrimLeft($sFile, StringInStr($sFile, ".", 0, -1)) $sFileName = FileSaveDialog("Save As", @WorkingDir, $sImageFormats, 18, $sFile) If $sFileName Then If StringRight($sFileName, StringLen($sExt)+1) <> "." & $sExt Then $sFileName &= "." & $sExt _GDIPlus_ImageSaveToFile($hBackImage, $sFileName) $fChange = False EndIf EndIf EndSwitch EndIf Return $GUI_RUNDEFMSG EndFunc ..and an image for testing.1 point