-
Posts
1,487 -
Joined
-
Last visited
-
Days Won
3
PhoenixXL last won the day on May 3 2013
PhoenixXL had the most liked content!
About PhoenixXL
- Birthday January 14
Profile Information
-
Member Title
be what you are, its always the BEST..
-
Location
India
-
Interests
Programming,
Basketball+cricket
Recent Profile Visitors
PhoenixXL's Achievements
-
kemo1987 reacted to a post in a topic: Database UDF
-
Zarion reacted to a post in a topic: Runas System
-
dustinisgod reacted to a post in a topic: Can you make a GUI always on top but not focusable? (Toast like)
-
Inpho reacted to a post in a topic: Predict Text for an Edit Control _PredictText.au3 (UDF)
-
Professor_Bernd reacted to a post in a topic: Regular expression, strip quoted string literals
-
JoeBar reacted to a post in a topic: Predict Text for an Edit Control _PredictText.au3 (UDF)
-
PoojaKrishna reacted to a post in a topic: Test url if is valid
-
El-Masry reacted to a post in a topic: Receive Enter from Edit
-
mLipok reacted to a post in a topic: ClipBoard Extendor
-
mLipok reacted to a post in a topic: Monitoring clipboard?
-
Predict Text for an Edit Control _PredictText.au3 (UDF)
PhoenixXL replied to PhoenixXL's topic in AutoIt Example Scripts
Then the discussion comes to some point I'm having 3.3.10.2 But my syntax checker(also tidy) always crashes whenever it is run through scite upon execution of the script. Upon running the syntax checker explicitly I get the errors you pointed out. I will correct it in the upcoming version (additionally I will reinstall Autoit to clarify the errors) Regards -
Predict Text for an Edit Control _PredictText.au3 (UDF)
PhoenixXL replied to PhoenixXL's topic in AutoIt Example Scripts
I'm running scite v3.3.0 but I don't think that's giving the errors. -
Predict Text for an Edit Control _PredictText.au3 (UDF)
PhoenixXL replied to PhoenixXL's topic in AutoIt Example Scripts
The following works for me #include <Array.au3> Local Const $String = "1, 2, 3, 4, 5, 1, 2, 3, 4, 5" ConsoleWrite(@AutoItVersion & @CRLF) _ArrayDisplay(StringSplit($String, ", ", 3), "Array Original") _ArrayDisplay(_ArrayUnique(StringSplit($String, ", ", 3), Default, Default, Default, 0), "Array Unique") ; Display the unique array. Console Output: 3.3.10.2 The function definition Func _ArrayUnique(Const ByRef $aArray, $iColumn = Default, $iBase = Default, $iCase = Default, $iFlags = Default) If $iColumn = Default Then $iColumn = 1 If $iBase = Default Then $iBase = 0 If $iCase = Default Then $iCase = 0 If $iFlags = Default Then $iFlags = 1 ; Start bounds checking If UBound($aArray) = 0 Then Return SetError(1, 0, 0) ; Check if array is empty, or not an array ; $iBase can only be 0 or 1, if anything else, return with an error If $iBase < 0 Or $iBase > 1 Or (Not IsInt($iBase)) Then Return SetError(2, 0, 0) If $iCase < 0 Or $iCase > 1 Or (Not IsInt($iCase)) Then Return SetError(2, 0, 0) If $iFlags < 0 Or $iFlags > 1 Or (Not IsInt($iFlags)) Then Return SetError(4, 0, 0) Local $iDims = UBound($aArray, 0), $iNumColumns = UBound($aArray, 2) If $iDims > 2 Then Return SetError(3, 0, 0) ; checks the given dimension is valid If ($iColumn < 1) Or ($iNumColumns = 0 And ($iColumn - 1 > $iNumColumns)) Or ($iNumColumns > 0 And ($iColumn > $iNumColumns)) Then Return SetError(3, 0, 0) ; make $iColumn an array index, note this is ignored for 1D arrays $iColumn -= 1 ; create dictionary Local $oD = ObjCreate("Scripting.Dictionary") ; compare mode for strings ; 0 = binary, which is case sensitive ; 1 = text, which is case insensitive ; this expression forces either 1 or 0 $oD.CompareMode = Number(Not $iCase) Local $vElem ; walk the input array For $i = $iBase To UBound($aArray) - 1 If $iDims = 1 Then ; 1D array $vElem = $aArray[$i] Else ; 2D array $vElem = $aArray[$i][$iColumn] EndIf ; add key to dictionary ; NOTE: accessing the value (.Item property) of a key that doesn't exist creates the key :) ; keys are guaranteed to be unique $oD.Item($vElem) Next ; ; return the array of unique keys If BitAND($iFlags, 1) = 1 Then Local $aTemp = $oD.Keys() _ArrayInsert($aTemp, 0, $oD.Count) Return $aTemp Else Return $oD.Keys() EndIf EndFunc ;==>_ArrayUnique In the helpfile there is no mention of the ByRef type, in the definition though it is. I wonder how it still works for me. -
Reading listview w/o high CPU usage
PhoenixXL replied to garbb's topic in AutoIt General Help and Support
Why not wait for the change and then get the items at one go. This would take the same CPU but only at the time when update occurs, or maybe you can modify it to suit you rather better. The following way to proceed, may help, For a third party app, to monitor messages you would have to use _WinAPI_SetWindowsHookEx with $WH_CALLWNDPROCRET Hook the ListView Monitor message LVM_SETITEM LVM_INSERTITEM Respond to the message, and do your stuff. Example in C++ In the moment I can't try for if it works. Regards Phoenix XL -
Creating Buttons with GDI+
PhoenixXL replied to GordonFreeman's topic in AutoIt General Help and Support
Use WM_PAINT to draw on the GUI, orelse with your code try to minimize + restore you will find that all the graphics disappear. For your question check the function CheckPointer in the example. Example #include <GUIConstantsEx.au3> #include <GDIPlus.au3> #include <WindowsConstants.au3> #include <WinAPIGdi.au3> Global $hGraphic, $hBrush, $hBrushFont, $hFont, $hFormat, $hFamily, $hGUI, $tRect_Coords[4] ;would be used in two functions therefore declared as global. Global $iTheme = 0 Example() Func Example() ; Create GUI $hGUI = GUICreate("GDI+", 400, 300) ; Fill a rectangle _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_BrushCreateSolid(0xAA43A6DF) $hBrushFont = _GDIPlus_BrushCreateSolid(0xFFFFFFFF) $hFormat = _GDIPlus_StringFormatCreate() $hFamily = _GDIPlus_FontFamilyCreate("Segoe UI Light") $hFont = _GDIPlus_FontCreate($hFamily, 20, 2) $tRect_Coords[0] = 10 $tRect_Coords[1] = 10 $tRect_Coords[2] = 100 $tRect_Coords[3] = 100 ;Register for painting GUIRegisterMsg($WM_PAINT, "WM_PAINT") ;$WM_PAINT GUISetState() ; Loop until the user exits. Do Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $GUI_EVENT_PRIMARYDOWN If CheckPointer($tRect_Coords) Then SetTheme(1) Case $GUI_EVENT_PRIMARYUP SetTheme(0) Case $GUI_EVENT_MOUSEMOVE If GetTheme() = 1 Then ContinueLoop If CheckPointer($tRect_Coords) Then SetTheme(2) Else SetTheme(0) EndIf EndSwitch Until 0 ; Clean up resources _GDIPlus_FontDispose($hFont) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_BrushDispose($hBrush) _GDIPlus_BrushDispose($hBrushFont) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() EndFunc ;==>Example Func WM_PAINT($hGUI, $iMsg, $wParam, $lParam) _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW) ;Your Code must lie below ;Paint the string _GDIPlus_GraphicsClear($hGraphic, 0xFFF0F0F0) _GDIPlus_GraphicsFillRect($hGraphic, $tRect_Coords[0], $tRect_Coords[1], $tRect_Coords[2], $tRect_Coords[3], $hBrush) _GDIPlus_GraphicsDrawStringEx($hGraphic, "Hello world", $hFont, _GDIPlus_RectFCreate($tRect_Coords[0], $tRect_Coords[1], $tRect_Coords[2], $tRect_Coords[3]), $hFormat, $hBrushFont) ;End of your code _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE) Return 0;'GUI_RUNDEFMSG' EndFunc ;==>WM_PAINT Func CheckPointer(ByRef $aiCoords_ClientRel) Return _WinAPI_PtInRectEx(_WinAPI_GetMousePosX(True, $hGUI), _WinAPI_GetMousePosY(True, $hGUI), $aiCoords_ClientRel[0], $aiCoords_ClientRel[1], $aiCoords_ClientRel[2] + $aiCoords_ClientRel[0], $aiCoords_ClientRel[3] + $aiCoords_ClientRel[1]) EndFunc ;==>CheckPointer Func GetTheme() Return $iTheme EndFunc ;==>GetTheme Func SetTheme($Theme, $f_Redraw = true) If GetTheme() = $Theme Then Return 1 If $Theme = 0 Then ;Idle _GDIPlus_BrushSetSolidColor($hBrush, 0xAA43A6DF) _GDIPlus_BrushSetSolidColor($hBrushFont, 0xFFFFFFFF) ;Default Dimensions $tRect_Coords[0] = 10 $tRect_Coords[1] = 10 $tRect_Coords[2] = 100 $tRect_Coords[3] = 100 ElseIf $Theme = 1 Then ;MouseDown _GDIPlus_BrushSetSolidColor($hBrush, 0xFF3685B2) _GDIPlus_BrushSetSolidColor($hBrushFont, 0xFFFFFFFF) ;Compress a Bit $tRect_Coords[0] = 12 $tRect_Coords[1] = 12 $tRect_Coords[2] = 96 $tRect_Coords[3] = 96 ElseIf $Theme = 2 Then ;MouseOver _GDIPlus_BrushSetSolidColor($hBrush, 0xBB7BC1E9) _GDIPlus_BrushSetSolidColor($hBrushFont, 0xFFFFFFFF) ;Enlarge a Bit $tRect_Coords[0] = 8 $tRect_Coords[1] = 8 $tRect_Coords[2] = 104 $tRect_Coords[3] = 104 Else Return SetError(1, 0, 0) EndIf $iTheme = $Theme ConsoleWrite("CurTheme: " & $iTheme & @CRLF) If $f_Redraw Then _WinAPI_RedrawWindow($hGUI, 0, 0, BitOR($RDW_INTERNALPAINT, $RDW_ERASE)) endfunc ;==>SetTheme Thumbs up if it helped. Regards Phoenix XL -
Predict Text for an Edit Control _PredictText.au3 (UDF)
PhoenixXL replied to PhoenixXL's topic in AutoIt Example Scripts
v1.7 released. Changed: Searching with regular expressions. Requires Autoit v3.3.10.2(latest one for the time being). Idub, check the Autoit version you are having. -
$WS_EX_TRANSPARENT not working with GUI no background
PhoenixXL replied to MasonMill's topic in AutoIt GUI Help and Support
Don't know exactly but, The >UDF by trancexx will surely make you start -
$WS_EX_TRANSPARENT not working with GUI no background
PhoenixXL replied to MasonMill's topic in AutoIt GUI Help and Support
In your case GDIPlus isn't required. The following would also do the same. #include-once #include <GUIConstants.au3> #include <GDIPlus.au3> #include <WinAPISys.au3> HotKeySet("{END}", "Terminate") $GUI = GUICreate("", 147, 145, -1, -1, $WS_POPUP, $WS_EX_LAYERED) $pic = GUICtrlCreatePic("c:\Program Files (x86)\AutoIt3\Examples\GUI\Merlin.gif", 0,0,147, 145) GUISetState() Local Const $iTransparency = 50 GUISetBkColor(0xABCDEF) ;this background color should be same as the trans color used in above function _WinAPI_SetLayeredWindowAttributes($GUI,0xABCDEF, $iTransparency) ;~ GUISetState(@SW_SHOW,$gui) While 1 $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case Else EndSelect WEnd Exit Func Terminate() exit(0) EndFunc The precise comparison, can only be given by an expert. I'm still very amateur in it. Regards Phoenix XL -
$WS_EX_TRANSPARENT not working with GUI no background
PhoenixXL replied to MasonMill's topic in AutoIt GUI Help and Support
The following would work. Note that Child Windows can't have WS_EX_LAYERED till windows 7, ==> the problem in your first example Note: windows 8 supports WS_EX_LAYERED with child windows. Also WS_EX_TRANSPARENT doesn't allow a window to be transparent, it only allows click through, ie the underlying window would be receiving mouse input but an overlay of the given window would be shown. You can set the transparency of WS_EX_LAYERED windows using functions(check example) Example #include-once #include <GUIConstants.au3> #include <GDIPlus.au3> #include <WinAPISys.au3> HotKeySet("{END}", "Terminate") $GUI = GUICreate("", 147, 145, -1, -1, $WS_POPUP, $WS_EX_LAYERED) $pic = GUICtrlCreatePic("", 0,0,147, 145) Local Const $STM_SETIMAGE = 0x0172 _GDIPlus_Startup() $himg=_GDIPlus_ImageLoadFromFile("c:\Program Files (x86)\AutoIt3\Examples\GUI\Merlin.gif") $hbmp=_GDIPlus_BitmapCreateHBITMAPFromBitmap($himg) _GDIPlus_ImageDispose($himg) _WinAPI_DeleteObject(GUICtrlSendMsg($pic,$STM_SETIMAGE,$IMAGE_BITMAP,$hbmp)) GUISetState() Local Const $iTransparency = 50 GUISetBkColor(0xABCDEF) ;this background color should be same as the trans color used in above function _WinAPI_SetLayeredWindowAttributes($GUI,0xABCDEF, $iTransparency) ;~ GUISetState(@SW_SHOW,$gui) While 1 $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case Else EndSelect WEnd Exit Func Terminate() exit(0) EndFunc Regards Phoenix XL -
Didn't knew about that Anyways I'm getting conflicting results, is it the same for all #include <WinAPIShPath.au3> $sTest = "http://testinghg.com/" _U($sTest) $sTest = "http://test/21-04-2014" _U($sTest) Func _U($URL) MsgBox(0, $URL, "URLIs: " & _WinAPI_UrlIs ($sTest) & @CRLF & "IE: " & ((InetGetSize($sTest) = 0) ? "0" : "1")) EndFunc ;==>_U That must be the conflicting results, then. I think, these methods won't solve the problem, we will have to prefer something like on libcURL. InetGetInfo has never given me wrong results(till now at least) therefore I had relied on it. Regards Phoenix XL
-
Example $sURL = "http://test/21-04-2014" InetGetSize($sURL) If @error Then ConsoleWrite("Invalid URL" & @CRLF) Else ConsoleWrite("Valid URL" & @CRLF) EndIf Regards Phoenix XL
-
Predict Text for an Edit Control _PredictText.au3 (UDF)
PhoenixXL replied to PhoenixXL's topic in AutoIt Example Scripts
No, I am changing it for the reason that all the items are enumerated at once and if the list of items is very large, then obviously its gonna take some time, and create a lag in the displaying of the list, causing further unpredictable problems that occur when the return of the procedure is not fast. So, I would be probably doing it by, First enumerate the no. of items that will be displayed at once (depends on the height of the suggestion box, and individual item's height) Then enumerate single item further from that index in an elapse of say 10ms until all items are entered. Plus in the second enumeration phase I won't redraw the suggestion, as it would by default be done when the user scrolls down. That would save some of the time. Please put forward, what you all think about it. Regards Phoenix XL -
Array.au3 ==> Unable to parse line
PhoenixXL replied to muchado's topic in AutoIt General Help and Support
Yup thats it. I somehow missed it -
Predict Text for an Edit Control _PredictText.au3 (UDF)
PhoenixXL replied to PhoenixXL's topic in AutoIt Example Scripts
Fixed the two of the bugs (courtesy - Lupo73 and theTony). Check the first post for more information. I was delaying for the reason of finding out a way to make asynchronous finding of the text in the list, so as to populate words efficiently when the size is more than 1000(as posted by ValeryVal). I could find out an appropriate way, but now I'm running out of time to implement it in the UDF. For the time being, I had fixed up the bugs. Regards Phoenix XL -
Array.au3 ==> Unable to parse line
PhoenixXL replied to muchado's topic in AutoIt General Help and Support
But terenary operator is working from v3.3.10.* Can you give the output of the code MsgBox(0, 0, @AutoItVersion) Regards