Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 11/30/2015 in all areas

  1. Does @ComputerName not work properly in VM?
    2 points
  2. Items in a standard listview in details/report view (this example deals only with listviews in details/report view) can display a single line of text. There seems not to be any options to change this. There is no word wrap option. If you search the forums, it's possible to find examples of listviews with multiple lines of text in each row. The multi-line items are implemented as owner drawn items through LVS_OWNERDRAWFIXED control style and WM_DRAWITEM messages. A problem with the owner drawn technique is that you are forced to draw everything yourself. Besides item texts and the background behind texts (white for non-selected items, dark blue for selected items with focus, button face for selected items without focus) you also have to draw checkboxes, images, icons and the background behind these elements yourself. Another technique is custom drawn listview items. Custom drawn items are implemented through NM_CUSTOMDRAW notifications included in WM_NOTIFY messages. NM_CUSTOMDRAW notifications are generated automatically by the code in ComCtl32.dll when the listview is updated. Implementing custom drawn items is a matter of responding to these messages or not. The great advantage of custom drawn items is that the drawing process is divided into several stages. For a listview up to six different stages. Some of these stages can be used for default drawing without any additional code at all. Other stages can be used for custom drawing with your own code. Multi-line text items fits perfectly with the custom drawn technique. Item texts and the background is drawn by custom code. Checkboxes, images, icons and the background is drawn by default code. Increase height of listview items The usual way to increase the height of listview items is to respond to WM_MEASUREITEM messages. But this method can only be used for owner drawn listviews. In a custom drawn listview the height can be increased by defining a text font with a suitable height: Func _GUICtrlListView_SetItemHeightByFont( $hListView, $iHeight ) ; Get font of ListView control ; Copied from _GUICtrlGetFont example by KaFu ; See https://www.autoitscript.com/forum/index.php?showtopic=124526 Local $hDC = _WinAPI_GetDC( $hListView ), $hFont = _SendMessage( $hListView, $WM_GETFONT ) Local $hObject = _WinAPI_SelectObject( $hDC, $hFont ), $lvLOGFONT = DllStructCreate( $tagLOGFONT ) _WinAPI_GetObject( $hFont, DllStructGetSize( $lvLOGFONT ), DllStructGetPtr( $lvLOGFONT ) ) Local $hLVfont = _WinAPI_CreateFontIndirect( $lvLOGFONT ) ; Original ListView font _WinAPI_SelectObject( $hDC, $hObject ) _WinAPI_ReleaseDC( $hListView, $hDC ) _WinAPI_DeleteObject( $hFont ) ; Set height of ListView items by applying text font with suitable height $hFont = _WinAPI_CreateFont( $iHeight, 0 ) _WinAPI_SetFont( $hListView, $hFont ) _WinAPI_DeleteObject( $hFont ) ; Restore font of Header control Local $hHeader = _GUICtrlListView_GetHeader( $hListView ) If $hHeader Then _WinAPI_SetFont( $hHeader, $hLVfont ) ; Return original ListView font Return $hLVfont EndFunc Large images will also increase the height of listview items. See example E. Height of listview If the height of the listview does not fit an integer number of rows, you can see empty space below last row in the bottom of the listview. This issue is exacerbated by tall items. The following function is used to calculate the height of the listview to match a given number of rows: Func _GUICtrlListView_GetHeightToFitRows( $hListView, $iRows ) ; Get height of Header control Local $tRect = _WinAPI_GetClientRect( $hListView ) Local $hHeader = _GUICtrlListView_GetHeader( $hListView ) Local $tWindowPos = _GUICtrlHeader_Layout( $hHeader, $tRect ) Local $iHdrHeight = DllStructGetData( $tWindowPos , "CY" ) ; Get height of ListView item 0 (item 0 must exist) Local $aItemRect = _GUICtrlListView_GetItemRect( $hListView, 0, 0 ) ; Return height of ListView to fit $iRows items ; Including Header height and 8 pixels of additional room Return ( $aItemRect[3] - $aItemRect[1] ) * $iRows + $iHdrHeight + 8 EndFunc The calculation includes the height of the header. This means that the function works for a multi-line header with tall items (example A and B). Reference example WM_NOTIFY messages and NM_CUSTOMDRAW notifications are send to the parent of the listview control. The parent is the AutoIt GUI and messages can be handled by a function registered with GUIRegisterMsg. Example 1 is a reference example which shows the different stages of the custom drawing process. None of the stages contains any code except for ConsoleWrite statements. This is code for the reference example: #include <GUIConstants.au3> #include <GuiListView.au3> #include "GuiListViewEx.au3" Opt( "MustDeclareVars", 1 ) Global $hGui, $idListView, $hListView, $fListViewHasFocus = 0, $iItems = 3, $bAutoItMsgLoop = False Example() Func Example() ; Create GUI $hGui = GUICreate( "Custom draw stages", 420, 200 ) ; Create ListView $idListView = GUICtrlCreateListView( "", 10, 10, 400, 180, $GUI_SS_DEFAULT_LISTVIEW-$LVS_SINGLESEL, $WS_EX_CLIENTEDGE+$LVS_EX_FULLROWSELECT+$LVS_EX_GRIDLINES ) $hListView = GUICtrlGetHandle( $idListView ) ; Add columns to ListView _GUICtrlListView_AddColumn( $hListView, "Column 1", 94 ) _GUICtrlListView_AddColumn( $hListView, "Column 2", 94 ) _GUICtrlListView_AddColumn( $hListView, "Column 3", 94 ) _GUICtrlListView_AddColumn( $hListView, "Column 4", 94 ) ; Fill ListView For $i = 0 To $iItems - 1 GUICtrlCreateListViewItem( $i & "/Column 1|" & $i & "/Column 2|" & $i & "/Column 3|" & $i & "/Column 4", $idListView ) Next ; Adjust height of GUI and ListView to fit ten rows Local $iLvHeight = _GUICtrlListView_GetHeightToFitRows( $hListView, 10 ) WinMove( $hGui, "", Default, Default, Default, WinGetPos( $hGui )[3] - WinGetClientSize( $hGui )[1] + $iLvHeight + 20 ) WinMove( $hListView, "", Default, Default, Default, $iLvHeight ) ; Register WM_NOTIFY message handler ; To handle NM_CUSTOMDRAW notifications ; And to check when ListView receives/loses focus GUIRegisterMsg( $WM_NOTIFY, "WM_NOTIFY" ) ; Register WM_ACTIVATE message handler ; If GUI loses focus selected listview items are drawn with a button face background color. ; To check when GUI receives/loses focus ; When GUI receives focus selected items are redrawn with the dark blue background color. GUIRegisterMsg( $WM_ACTIVATE, "WM_ACTIVATE" ) ; Detection of received focus is faster through the WM_ACTIVATE message than directly ; through the listview. This provides a faster and smoother redraw of selected items. ; Show GUI GUISetState( @SW_SHOW ) ; Message loop While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch If Not $bAutoItMsgLoop Then _ ; We want to see only one message at a time $bAutoItMsgLoop = ( ConsoleWrite( "AutoIt message loop <<<<<<<<<<<<<<<<<<<<<" & @CRLF ) > 0 ) WEnd ; Cleanup GUIDelete() EndFunc ; WM_NOTIFY message handler Func WM_NOTIFY( $hWnd, $iMsg, $wParam, $lParam ) #forceref $hWnd, $iMsg, $wParam Local $tNMHDR = DllStructCreate( $tagNMHDR, $lParam ) Local $hWndFrom = HWnd( DllStructGetData( $tNMHDR, "hWndFrom" ) ) Local $iCode = DllStructGetData( $tNMHDR, "Code" ) Switch $hWndFrom Case $hListView Switch $iCode Case $NM_CUSTOMDRAW $bAutoItMsgLoop = False Local $tNMLVCustomDraw = DllStructCreate( $tagNMLVCUSTOMDRAW, $lParam ) Local $dwDrawStage = DllStructGetData( $tNMLVCustomDraw, "dwDrawStage" ) Switch $dwDrawStage ; Specifies the drawing stage ; Stage 1 Case $CDDS_PREPAINT ; Before the paint cycle begins ConsoleWrite( "Stage 1: CDDS_PREPAINT" & @CRLF ) Return $CDRF_NOTIFYITEMDRAW + _ ; Stage 2 will be carried out $CDRF_NOTIFYPOSTPAINT ; Stage 6 will be carried out Return $CDRF_NOTIFYITEMDRAW ; Notify the parent window before an item is painted Return $CDRF_NOTIFYPOSTPAINT ; Notify the parent window after the paint cycle is complete ; Stage 2 Case $CDDS_ITEMPREPAINT ; Before an item is painted ConsoleWrite( "Stage 2: CDDS_ITEMPREPAINT" & @CRLF ) Return $CDRF_NOTIFYSUBITEMDRAW + _ ; Stage 3 will be carried out $CDRF_NOTIFYPOSTPAINT ; Stage 5 will be carried out Return $CDRF_NOTIFYSUBITEMDRAW ; Notify the parent window before a subitem is painted Return $CDRF_NOTIFYPOSTPAINT ; Notify the parent window after an item is painted ; Stage 3 Case BitOR( $CDDS_ITEMPREPAINT, _ $CDDS_SUBITEM ) ; Before a subitem is painted ConsoleWrite( "Stage 3: CDDS_ITEMPREPAINT, CDDS_SUBITEM" & @CRLF ) Return $CDRF_NOTIFYPOSTPAINT ; Stage 4 will be carried out Return $CDRF_NOTIFYPOSTPAINT ; Notify the parent window after a subitem is painted ; Stage 4 Case BitOR( $CDDS_ITEMPOSTPAINT, _ $CDDS_SUBITEM ) ; After a subitem has been painted ConsoleWrite( "Stage 4: CDDS_ITEMPOSTPAINT, CDDS_SUBITEM" & @CRLF ) ; Stage 5 Case $CDDS_ITEMPOSTPAINT ; After an item has been painted ConsoleWrite( "Stage 5: CDDS_ITEMPOSTPAINT" & @CRLF ) ; Stage 6 Case $CDDS_POSTPAINT ; After the paint cycle is complete ConsoleWrite( "Stage 6: CDDS_POSTPAINT" & @CRLF ) EndSwitch Case $NM_KILLFOCUS If $fListViewHasFocus Then GUICtrlSendMsg( $idListView, $LVM_REDRAWITEMS, 0, $iItems - 1 ) $fListViewHasFocus = 0 EndIf Case $NM_SETFOCUS If Not $fListViewHasFocus Then _ GUICtrlSendMsg( $idListView, $LVM_REDRAWITEMS, 0, $iItems - 1 ) $fListViewHasFocus = 2 EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ; WM_ACTIVATE message handler Func WM_ACTIVATE( $hWnd, $iMsg, $wParam, $lParam ) #forceref $iMsg, $lParam If $hWnd = $hGui Then _ $fListViewHasFocus = BitAND( $wParam, 0xFFFF ) ? 1 : 0 Return $GUI_RUNDEFMSG EndFunc Code is added to check when GUI and listview receives and loses focus. This is important in the other examples. Output in SciTE console immediately after example is opened: Stage 1: CDDS_PREPAINT Stage 2: CDDS_ITEMPREPAINT Stage 3: CDDS_ITEMPREPAINT,  CDDS_SUBITEM Stage 4: CDDS_ITEMPOSTPAINT, CDDS_SUBITEM Stage 3: CDDS_ITEMPREPAINT,  CDDS_SUBITEM Stage 4: CDDS_ITEMPOSTPAINT, CDDS_SUBITEM Stage 3: CDDS_ITEMPREPAINT,  CDDS_SUBITEM Stage 4: CDDS_ITEMPOSTPAINT, CDDS_SUBITEM Stage 3: CDDS_ITEMPREPAINT,  CDDS_SUBITEM Stage 4: CDDS_ITEMPOSTPAINT, CDDS_SUBITEM Stage 5: CDDS_ITEMPOSTPAINT Stage 2: CDDS_ITEMPREPAINT Stage 3: CDDS_ITEMPREPAINT,  CDDS_SUBITEM Stage 4: CDDS_ITEMPOSTPAINT, CDDS_SUBITEM Stage 3: CDDS_ITEMPREPAINT,  CDDS_SUBITEM Stage 4: CDDS_ITEMPOSTPAINT, CDDS_SUBITEM Stage 3: CDDS_ITEMPREPAINT,  CDDS_SUBITEM Stage 4: CDDS_ITEMPOSTPAINT, CDDS_SUBITEM Stage 3: CDDS_ITEMPREPAINT,  CDDS_SUBITEM Stage 4: CDDS_ITEMPOSTPAINT, CDDS_SUBITEM Stage 5: CDDS_ITEMPOSTPAINT Stage 2: CDDS_ITEMPREPAINT Stage 3: CDDS_ITEMPREPAINT,  CDDS_SUBITEM Stage 4: CDDS_ITEMPOSTPAINT, CDDS_SUBITEM Stage 3: CDDS_ITEMPREPAINT,  CDDS_SUBITEM Stage 4: CDDS_ITEMPOSTPAINT, CDDS_SUBITEM Stage 3: CDDS_ITEMPREPAINT,  CDDS_SUBITEM Stage 4: CDDS_ITEMPOSTPAINT, CDDS_SUBITEM Stage 3: CDDS_ITEMPREPAINT,  CDDS_SUBITEM Stage 4: CDDS_ITEMPOSTPAINT, CDDS_SUBITEM Stage 5: CDDS_ITEMPOSTPAINT Stage 6: CDDS_POSTPAINT AutoIt message loop <<<<<<<<<<<<<<<<<<<<< Note that the entire custom draw process from stage 1 to 6 is not interrupted by the AutoIt message loop. The other examples are all based on the reference example. Examples This is common to all examples. First line in item texts is stored directly in the listview. Additional lines are stored in a global array named $aLines. Index in the array is item ID as returned by GUICtrlCreateListViewItem and stored in ItemParam internally in listview memory. Item texts and background is drawn with custom code. Other item elements and background is drawn with default code. In all examples LVS_SINGLESEL style is removed to be able to select multiple items. This is a picture of example E: Example 2, 3 and 4 are simple examples. Example 5 and 6 deals with subitem icons and colors. Example 7 about listview notifications shows a way to catch double click and Enter key. A dummy control is used to forward the double click event to AutoIt main message loop to avoid lengthy or blocking code in WM_NOTIFY function. Example 8 and 9 shows how to respond to header notifications and how to rearrange columns by dragging header items with the mouse. In both examples LVS_EX_HEADERDRAGDROP extended style is added to the listview. When columns are rearranged, header item index and listview subitem index is always the same independent of column position, while header item order changes depending on column position. Because the header is a child control of the listview, the listview must be subclassed to catch header notifications. Subclassing is implemented with the four functions SetWindowSubclass, GetWindowSubclass, RemoveWindowSubclass and DefSubclassProc (all implemented in WinAPIShellEx.au3). Since we are subclassing a header control contained in a listview this issue must be taking into account. Note that the subclass callback function is only running while the primary mouse button is pressed on the header. This means no performance impact on the listview eg. when you are dragging the scroll bar. This is important for a custom drawn listview. Quite a lot of extra code is added (most easily seen in example 9) to fix an issue due to column 0 and other columns have different left margins. When first column is moved to another position there is a white gap between columns for selected rows (Windows XP), or the text is painted too close to the left edge of the item (Windows 7). The problem is seen in the picture to the right where the two first columns are swapped: LVS_EX_HEADERDRAGDROP style is only used in example 8 and 9. Usage of a multi-line header is demonstrated in example A and B. See Custom/owner drawn multi-line header in ListView for more information. Example C shows a method to deal with focus issues when more controls (here just a single button) are added to the GUI. When the listview has focus selected items are drawn with the dark blue background color. The problem arises if the listview and GUI loses focus eg. to Calculator. When focus is lost selected items are drawn with the button face background color. If GUI receives focus again by clicking the button (and not the listview), selected items are first very briefly redrawn with the dark blue background color (it seems like a blink) and then with the correct button face background color. To avoid this issue a hidden label control is added to the GUI. Immediately before the GUI loses focus, focus is moved from the listview to the label. In example D items are added with the commands _GUICtrlListView_AddItem and _GUICtrlListView_AddSubItem. In all examples an array is used to store the multi-line item texts. The array contains all lines except the first line which is stored directly in the listview. This example shows how to manually store array row index in ItemParam when items are added with _GUICtrlListView_AddItem and _GUICtrlListView_AddSubItem. Inspiration for example E about large images in first column (see picture above) comes from this thread. In example E the images are used to increase the height of the listview items instead of a text font. Because it's large 128x128 pixel images there is plenty of room in subitems in second and third column. In all examples 15 lines of code is used to repaint the first line item text. The text that was painted by default code in middle of the item is first deleted by filling the item with the background color. Then the text is extracted from the listview and repainted in top of item. This code can be avoided by storing all text lines in the array. This is demonstrated in example F. This makes the custom draw code faster. Performance considerations In a custom drawn (or owner drawn or virtual) listview performance considerations are important because the custom drawing (or owner drawing or data display) is performed by AutoIt code. In a normal listview drawing and data display is performed by compiled C++ code in ComCtl32.dll. Lengthy and slow code in NM_CUSTOMDRAW Case statements (or WM_DRAWITEM functions or LVN_GETDISPINFO Case statements) should be avoided. Perform as many calculations as possible before the repetitive and fast executions of these code blocks. Use static variables to avoid repeating the same calculation again and again. Executing a function directly with DllCall or GUICtrlSendMsg is faster than executing the same function through an implementation in an UDF. Simple GDI functions are faster than more advanced GDI+ functions. Use different drawing stages to optimize custom drawing. The CDDS_PREPAINT stage is only performed once for the entire drawing process. The CDDS_ITEMPREPAINT stage is performed once per item. The stage given by BitOR( CDDS_ITEMPREPAINT, CDDS_SUBITEM ) is performed once per subitem including subitem 0. Default drawing should be used as much as possible, because the code is running in ComCtl32.dll. In a listview the time it takes to update all visible rows is proportional to the number of visible rows. Reducing the height of the list view and thus the number of visible rows improves performance. Especially in a custom drawn (or owner drawn or virtual) listview. ListviewMultilineItems.7z 1) Custom draw stages.au3 2) Two-line listview items.au3 3) Three-line listview items.au3 4) First column checkbox and icon.au3 5) Check boxes and icons.au3 6) Background and text colors.au3 7) ListView notifications.au3 8) Header notifications.au3 9) Rearrange columns.au3 A) Multi-line header 1.au3 A) Multi-line header 2.au3 C) Button control.au3 D) _GUICtrlListView_AddItem.au3 E) Large images in first column.au3 F) Storing all lines in array.au3 GuiHeaderEx.au3 GuiListViewEx.au3 ListViewCustomDraw.au3 Images\ 8 images for example E You need AutoIt 3.3.10 or later. Tested on Windows 7 32/64 bit and Windows XP 32 bit. Comments are welcome. Let me know if there are any issues. (Set tab width = 2 in SciTE to line up comments by column.) ListviewMultilineItems.7z
    1 point
  3. Jon

    AutoIt (Latest Stable Version)

    Version v3.3.16.1

    50,333 downloads

    This is the current stable version of AutoIt. What's new: Changelog. Main AutoIt download page (for AutoIt and other tools like the script editor).
    1 point
  4. Hi! Today I want to show you my current AutoIt project: The ISN AutoIt Studio. The ISN AutoIt Studio is a complete IDE made with AutoIt, for AutoIt! It includes a GUI designer, a code editor (with syntax highlighting, auto complete & intelisense), a file viewer, a backup system, trophies and a lot more features!! Here are some screenshots: Here some higlights: -> easy to create/manage/public your AutoIt-projects! ->integrated GUI-Editor (ISN Form Studio 2) ->integrated - file & projectmanager ->auto backupfunction for your Projects ->extendable with plugins! ->available in several languages ->trophies ->Syntax highlighting /Autocomplete / Intelisense ->Dynamic Script ->detailed overview of the project (total working hours, total size...) And much more!!! -> -> Click here to download ISN AutoIt Studio <- <- Here is the link to the german autoit forum where I posted ISN AutoIt Studio the first time: http://autoit.de/index.php?page=Thread&threadID=29742&pageNo=1 For more information visit my Homepage: https://www.isnetwork.at So….have fun with ISN AutoIt Studio! PS: Sorry for my bad English! ^^
    1 point
  5. Gianni

    QLOCK TWO

    ....Ok, this is an old post, but I could not resist the temptation to add also the Italian language. Here it is ; QLOCK TWO ; Original Writing by William Reithmeyer ; ; Script changes from help of others (thanks) ; BennyBB, Bozzman, Melba23, KalleB ; #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <Constants.au3> #include <ComboConstants.au3> #include <WinAPI.au3> #include <GDIPlus.au3> #include <SendMessage.au3> ; Opt("TrayMenuMode", 3) ; Global Const $Text_en = "ITLISASTIMEACQUARTERDCTWENTYFIVEXHALFBTENFTOPASTERUNINE" & _ "ONESIXTHREEFOURFIVETWOEIGHTELEVENSEVENTWELVETENSEOCLOCK" Global Const $Text_de = "ESKISTAFÜNFZEHNBYGVORGNACHVIERTELHALBVORNACHEINSLMEZWEI" & _ "DREIAUJVIERFÜNFTOSECHSSIEBENLACHTNEUNZEHNELFZWÖLFUNKUHR" Global Const $Text_nl = "HETKISAVIJFTIENBTZVOOROVERMEKWARTVOORSPWOVERHALFTHGÉÉNS" & _ "TWEEPVCDRIEVIERVIJFZESZEVENONEGENACHTTIENELFTWAALFBFUUR" Global Const $Text_fr = "ILRESTGJUNEDEUXCINQDIXQUATREPHUITSEPTNEUFSIXDOUZEUTROIS" & _ "ONZEDHEURESMOINSGFJWLPETVINGTBLWVLEDEMIWDIXYUQUARTZCINQ" Global Const $Text_sv = "KLOCKANVÄRKFEMYISTIONIKVARTQIENZOTJUGOLIVINAÖVERKONHALV" & _ "ETTUSCHXTVÅTREMYKYFYRAFEMSTWORSEXSJUÅTTAINIOTIOELVATOLV" Global Const $Text_it = "SONORLEBOREERLUNASDUEZTREOTTONOVEDIECIUNDICIDODICISETTE" & _ "QUATTROCSEICINQUESMENOECUNOQUARTOVENTICINQUEDIECIEMEZZA" Global $Char_Text[111] Global $Char_Text_Remain[5], $Color_Chooser[6], $label_lang[4] Global $Text_en_Split = StringSplit($Text_en, "") Global $Text_de_Split = StringSplit($Text_de, "") Global $Text_nl_Split = StringSplit($Text_nl, "") Global $Text_fr_Split = StringSplit($Text_fr, "") Global $Text_sv_Split = StringSplit($Text_sv, "") Global $Text_it_Split = StringSplit($Text_it, "") Global $Hour_Min = @HOUR & @MIN Global $initiate = True Global $sIni_File = @ScriptDir & "\QLOCKTWOSettings.ini" ; #Region Coordinates by language ### Global $Text_En_Min_Highlight[12][2] = _ [["00", "1|2|4|5|105|106|107|108|109|110"], _ ; IT IS OCLOCK ["05", "1|2|4|5|29|30|31|32|45|46|47|48"], _ ; IT IS FIVE PAST ["10", "1|2|4|5|39|40|41|45|46|47|48"], _ ; IT IS TEN PAST ["15", "1|2|4|5|12|14|15|16|17|18|19|20|45|46|47|48"], _ ; IT IS A QUARTER PAST ["20", "1|2|4|5|23|24|25|26|27|28|45|46|47|48"], _ ; IT IS TWENTY PAST ["25", "1|2|4|5|23|24|25|26|27|28|29|30|31|32|45|46|47|48"], _ ; IT IS TWENTYFIVE PAST ["30", "1|2|4|5|34|35|36|37|45|46|47|48"], _ ; IT IS HALF PAST ["35", "1|2|4|5|23|24|25|26|27|28|29|30|31|32|43|44"], _; IT IS TWENTYFIVE TO ["40", "1|2|4|5|23|24|25|26|27|28|43|44"], _ ; IT IS TWENTY TO ["45", "1|2|4|5|12|14|15|16|17|18|19|20|43|44"], _ ; IT IS A QUARTER TO ["50", "1|2|4|5|39|40|41|43|44"], _ ; IT IS TEN TO ["55", "1|2|4|5|29|30|31|32|43|44"]] ; IT IS FIVE TO Global $Text_En_Hour_Highlight[12][2] = _ [["01", "56|57|58"], _ ; ONE ["02", "75|76|77"], _ ; TWO ["03", "62|63|64|65|66"], _ ; THREE ["04", "67|68|69|70"], _ ; FOUR ["05", "71|72|73|74"], _ ; FIVE ["06", "59|60|61"], _ ; SIX ["07", "89|90|91|92|93"], _ ; SEVEN ["08", "78|79|80|81|82"], _ ; EIGHT ["23", "52|53|54|55"], _ ; NINE ["10", "100|101|102"], _ ; TEN ["11", "83|84|85|86|87|88"], _ ; ELEVEN ["12", "94|95|96|97|98|99"]] ; TWELVE Global $Text_de_Min_Highlight[12][2] = _ [["00", "1|2|4|5|6|108|109|110"], _ ["05", "1|2|4|5|6|8|9|10|11|23|24|25|26"], _ ["10", "1|2|4|5|6|12|13|14|15|23|24|25|26"], _ ["15", "1|2|4|5|6|27|28|29|30|31|32|33|41|42|43|44"], _ ["20", "1|2|4|5|6|12|13|14|15|19|20|21|34|35|36|37"], _ ["25", "1|2|4|5|6|8|9|10|11|19|20|21|34|35|36|37"], _ ["30", "1|2|4|5|6|34|35|36|37"], _ ["35", "1|2|4|5|6|8|9|10|11|23|24|25|26|34|35|36|37"], _ ["40", "1|2|4|5|6|12|13|14|15|23|24|25|26|34|35|36|37"], _ ["45", "1|2|4|5|6|27|28|29|30|31|32|33|38|39|40"], _ ["50", "1|2|4|5|6|12|13|14|15|19|20|21"], _ ["55", "1|2|4|5|6|8|9|10|11|19|20|21"]] Global $Text_de_Hour_Highlight[12][2] = _ [["01", "45|46|47|48"], _ ["02", "52|53|54|55"], _ ["03", "56|57|58|59"], _ ["04", "63|64|65|66"], _ ["05", "67|68|69|70"], _ ["06", "73|74|75|76|77"], _ ["07", "78|79|80|81|82|83"], _ ["08", "85|86|87|88"], _ ["23", "89|90|91|92"], _ ["10", "93|94|95|96"], _ ["11", "97|98|99"], _ ["12", "100|101|102|103|104"]] Global $Text_nl_Min_Highlight[12][2] = _ [["00", "1|2|3|5|6|108|109|110"], _ ["05", "1|2|3|5|6|8|9|10|11|41|42|43|44"], _ ["10", "1|2|3|5|6|12|13|14|15|41|42|43|44"], _ ["15", "1|2|3|5|6|29|30|31|32|33|41|42|43|44"], _ ["20", "1|2|3|5|6|12|13|14|15|45|46|47|48|34|35|36|37"], _ ["25", "1|2|3|5|6|8|9|10|11|45|46|47|48|34|35|36|37"], _ ["30", "1|2|3|5|6|45|46|47|48"], _ ["35", "1|2|3|5|6|8|9|10|11|41|42|43|44|45|46|47|48"], _ ["40", "1|2|3|5|6|12|13|14|15|41|42|43|44|45|46|47|48"], _ ["45", "1|2|3|5|6|29|30|31|32|33|34|35|36|37"], _ ["50", "1|2|3|5|6|12|13|14|15|34|35|36|37"], _ ["55", "1|2|3|5|6|8|9|10|11|34|35|36|37"]] Global $Text_nl_Hour_Highlight[12][2] = _ [["01", "52|53|54"], _ ["02", "56|57|58|59"], _ ["03", "63|64|65|66"], _ ["04", "67|68|69|70"], _ ["05", "71|72|73|74"], _ ["06", "59|60|61"], _ ["07", "78|79|80|81|82"], _ ["08", "89|90|91|92"], _ ["09", "84|85|86|87|88"], _ ["10", "93|94|95|96"], _ ["11", "97|98|99"], _ ["12", "100|101|102|103|104|105"]] Global $Text_fr_Min_Highlight[12][2] = _ [["00", ""], _ ["05", "107|108|109|110"], _ ["10", "96|97|98"], _ ["15", "78|79|101|102|103|104|105"], _ ["20", "80|81|82|83|84"], _ ["25", "80|81|82|83|84|107|108|109|110"], _ ["30", "78|79|91|92|93|94"], _ ["35", "67|68|69|70|71|80|81|82|83|84|107|108|109|110"], _ ["40", "67|68|69|70|71|80|81|82|83|84"], _ ["45", "67|68|69|70|71|89|90|101|102|103|104|105"], _ ["50", "67|68|69|70|71|96|97|98"], _ ["55", "67|68|69|70|71|107|108|109|110"]] Global $Text_fr_Hour_Highlight[12][2] = _ [["01", "1|2|4|5|6|9|10|11|61|62|63|64|65"], _ ["02", "1|2|4|5|6|12|13|14|15|61|62|63|64|65|66"], _ ["03", "1|2|4|5|6|51|52|53|54|55|61|62|63|64|65|66"], _ ["04", "1|2|4|5|6|23|24|25|26|27|28|61|62|63|64|65|66"], _ ["05", "1|2|4|5|6|16|17|18|19|61|62|63|64|65|66"], _ ["06", "1|2|4|5|6|42|43|44|61|62|63|64|65|66"], _ ["07", "1|2|4|5|6|34|35|36|37|61|62|63|64|65|66"], _ ["08", "1|2|4|5|6|30|31|32|33|61|62|63|64|65|66"], _ ["23", "1|2|4|5|6|38|39|40|41|61|62|63|64|65|66"], _ ["10", "1|2|4|5|6|20|21|22|61|62|63|64|65|66"], _ ["11", "1|2|4|5|6|56|57|58|59|61|62|63|64|65|66"], _ ["12", "1|2|4|5|6|45|46|47|48|49|61|62|63|64|65|66"]] Global $Text_sv_Hour_Highlight[12][2] = _ [["01", "56|57|58"], _ ["02", "64|65|66"], _ ["03", "67|68|69"], _ ["04", "74|75|76|77"], _ ["05", "78|79|80"], _ ["06", "86|87|88"], _ ["07", "89|90|91"], _ ["08", "92|93|94|95"], _ ["23", "97|98|99"], _ ["10", "100|101|102"], _ ["11", "103|104|105|106"], _ ["12", "107|108|109|110"]] Global $Text_sv_Min_Highlight[12][2] = _ [["00", "1|2|3|4|5|6|7|9|10"], _ ["05", "1|2|3|4|5|6|7|9|10|12|13|14|45|46|47|48"], _ ["10", "1|2|3|4|5|6|7|9|10|18|19|20|45|46|47|48"], _ ["15", "1|2|3|4|5|6|7|9|10|23|24|25|26|27|45|46|47|48"], _ ["20", "1|2|3|4|5|6|7|9|10|34|35|36|37|38|45|46|47|48"], _ ["25", "1|2|3|4|5|6|7|9|10|12|13|14|16|52|53|54|55"], _ ["30", "1|2|3|4|5|6|7|9|10|52|53|54|55"], _ ["35", "1|2|3|4|5|6|7|9|10|12|13|14|45|46|47|48|52|53|54|55"], _ ["40", "1|2|3|4|5|6|7|9|10|34|35|36|37|38|40"], _ ["45", "1|2|3|4|5|6|7|9|10|23|24|25|26|27|29"], _ ["50", "1|2|3|4|5|6|7|9|10|18|19|20|22"], _ ["55", "1|2|3|4|5|6|7|9|10|12|13|14|16"]] Global $Text_It_Min_Highlight[12][2] = _ [["00", "1|2|3|4|6|7|9|10|11"], _ ; SONO LE ORE ["05", "1|2|3|4|6|7|78|94|95|96|97|98|99"], _ ; SONO LE E CINQUE ["10", "1|2|3|4|6|7|78|100|101|102|103|104"], _ ; SONO LE E DIECI ["15", "1|2|3|4|6|7|78|80|81|83|84|84|85|86|87|88"], _ ; SONO LE E UN QUARTO ["20", "1|2|3|4|6|7|78|89|90|91|92|93"], _ ; SONO LE E VENTI ["25", "1|2|3|4|6|7|78|89|90|91|92|93|94|95|96|97|98|99"], _ ; SONO LE E VENTICINQUE ["30", "1|2|3|4|6|7|78|106|107|108|109|110"], _ ; SONO LE E MEZZA ["35", "1|2|3|4|6|7|74|75|76|77|89|90|91|92|93|94|95|96|97|98|99"], _; SONO LE MENO VENTICINQUE (SONO LE E TRENTACINQUE) ["40", "1|2|3|4|6|7|74|75|76|77|89|90|91|92|93"], _ ; SONO LE MENO VENTI ["45", "1|2|3|4|6|7|74|75|76|77|80|81|83|84|85|86|87|88"], _ ; SONO LE MENO UN QUARTO ["50", "1|2|3|4|6|7|74|75|76|77|100|101|102|103|104"], _ ; SONO LE MENO DIECI ["55", "1|2|3|4|6|7|74|75|76|77|94|95|96|97|98|99"]] ; SONO LE MENO CINQUE Global $Text_It_Hour_Highlight[12][2] = _ [["01", "15|16|17"], _ ; UNA ["02", "19|20|21"], _ ; DUE ["03", "23|24|25"], _ ; TRE ["04", "56|57|58|59|60|61|62"], _ ; QUATTRO ["05", "67|68|69|70|71|72"], _ ; CINQUE ["06", "64|65|66"], _ ; SEI ["07", "51|52|53|54|55"], _ ; SETTE ["08", "26|27|28|29"], _ ; OTTO ["23", "30|31|32|33"], _ ; NOVE ["10", "34|35|36|37|38"], _ ; DIECI ["11", "39|40|41|42|43|44"], _ ; UNDICI ["12", "45|46|47|48|49|50"]] ; DODICI #EndRegion Coordinates by language ### ;Color array Global $Color_Themes[5][3] = _ [["Black Ice Tea", 0x000000, 0x303030], _ ["Cherry Cake", 0xDC0817, 0xB80713], _ ["Vanilla Sugar", 0xC4C3C1, 0xA2A1A0], _ ["Frozen Blackberry", 0x503082, 0x6A4F93], _ ["Lime Juice", 0xA8AF0A, 0x8C9107]] $Selected_Theme = IniRead($sIni_File, "Theme", "Selected", 0) $Selected_Lan = IniRead($sIni_File, "Language", "Selected", "en") Switch $Selected_Lan Case "en" $label_lang = StringSplit("Color|Language|Exit", "|") $lang = $Text_en_Split Case "de" $label_lang = StringSplit("Farbe|Sprache|Exit", "|") $lang = $Text_de_Split Case "nl" $label_lang = StringSplit("Kleur|Taal|Exit", "|") $lang = $Text_nl_Split Case "fr" $label_lang = StringSplit("Couleur|Langue|Exit", "|") $lang = $Text_fr_Split Case "sv" $label_lang = StringSplit("Färg|Språk|Avsluta", "|") $lang = $Text_sv_Split Case "it" $label_lang = StringSplit("Colore|Lingua|Uscita", "|") $lang = $Text_it_Split EndSwitch Global $Text_Color_Dark = $Color_Themes[$Selected_Theme][2] Global $Text_Color_Lit = 0xFFFFFF Global $Form_BK_Color = $Color_Themes[$Selected_Theme][1] Global $Combo_Add #Region ### START Koda GUI section ### Form= $QclockTwoForm = GUICreate("QLOCK TWO", 260, 240, -1, -1) GUISetBkColor($Form_BK_Color) $BK_Shine = GUICtrlCreatePic("", 0, 0, 260, 240) _SetImage($BK_Shine, 'QLOCK_shine.png') GUICtrlSetState(-1, $GUI_DISABLE) $k = 1 For $i = 1 To 10 For $j = 1 To 11 $Char_Text[$k] = GUICtrlCreateLabel($lang[$k], 20 * $j, 20 * $i, 20, 20, $SS_CENTER) GUICtrlSetFont(-1, 9, 400, 0, "Arial Narrow") GUICtrlSetColor(-1, $Text_Color_Dark) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $k += 1 Next Next $Char_Text_Remain[1] = GUICtrlCreateLabel(Chr(149), 10, 10, 10, 20, $SS_CENTER) GUICtrlSetColor(-1, $Text_Color_Dark) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Char_Text_Remain[2] = GUICtrlCreateLabel(Chr(149), 240, 10, 10, 20, $SS_CENTER) GUICtrlSetColor(-1, $Text_Color_Dark) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Char_Text_Remain[3] = GUICtrlCreateLabel(Chr(149), 240, 220, 10, 20, $SS_CENTER) GUICtrlSetColor(-1, $Text_Color_Dark) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Char_Text_Remain[4] = GUICtrlCreateLabel(Chr(149), 10, 220, 10, 20, $SS_CENTER) GUICtrlSetColor(-1, $Text_Color_Dark) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Tray_Color = TrayCreateMenu($label_lang[1]) For $r = 1 To 5 Step 1 $Color_Chooser[$r] = TrayCreateItem($Color_Themes[$r - 1][0], $Tray_Color) Next $Tray_Lang = TrayCreateMenu($label_lang[2]) $Lang_Chooser_en = TrayCreateItem("English", $Tray_Lang) $Lang_Chooser_de = TrayCreateItem("Deutsch", $Tray_Lang) $Lang_Chooser_nl = TrayCreateItem("Nederlands", $Tray_Lang) $Lang_Chooser_fr = TrayCreateItem("Français", $Tray_Lang) $Lang_Chooser_sv = TrayCreateItem("Svenska", $Tray_Lang) $Lang_Chooser_it = TrayCreateItem("Italiano", $Tray_Lang) TrayCreateItem("") $Tray_Exit = TrayCreateItem($label_lang[3]) GUISetState(@SW_SHOW) _CalibrateTime() #EndRegion ### END Koda GUI section ### ; While 1 If $Hour_Min <> @HOUR & @MIN Then _CalibrateTime() $Hour_Min = @HOUR & @MIN EndIf $nMsg = TrayGetMsg() Switch $nMsg Case $Tray_Exit Exit Case $Color_Chooser[1] _Change_Color(1) Case $Color_Chooser[2] _Change_Color(2) Case $Color_Chooser[3] _Change_Color(3) Case $Color_Chooser[4] _Change_Color(4) Case $Color_Chooser[5] _Change_Color(5) Case $Lang_Chooser_en IniWrite($sIni_File, "Language", "Selected", "en") _RestartScript() Case $Lang_Chooser_de IniWrite($sIni_File, "Language", "Selected", "de") _RestartScript() Case $Lang_Chooser_nl IniWrite($sIni_File, "Language", "Selected", "nl") _RestartScript() Case $Lang_Chooser_fr IniWrite($sIni_File, "Language", "Selected", "fr") _RestartScript() Case $Lang_Chooser_sv IniWrite($sIni_File, "Language", "Selected", "sv") _RestartScript() Case $Lang_Chooser_it IniWrite($sIni_File, "Language", "Selected", "it") _RestartScript() EndSwitch If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit WEnd ; Func _CalibrateTime() $Get_Min = @MIN $Get_Hour = _Hour_Correct(@HOUR) Switch $Selected_Lan Case "en" $T_Min = $Text_en_Min_Highlight $T_Hour = $Text_en_Hour_Highlight Case "de" $T_Min = $Text_de_Min_Highlight $T_Hour = $Text_de_Hour_Highlight Case "nl" $T_Min = $Text_nl_Min_Highlight $T_Hour = $Text_nl_Hour_Highlight Case "fr" $T_Min = $Text_fr_Min_Highlight $T_Hour = $Text_fr_Hour_Highlight Case "sv" $T_Min = $Text_sv_Min_Highlight $T_Hour = $Text_sv_Hour_Highlight Case "it" $T_Min = $Text_it_Min_Highlight $T_Hour = $Text_it_Hour_Highlight EndSwitch If Mod(@MIN, 5) <> 0 Then _Set_Remainder_Min(@MIN) If Not $initiate Then Return EndIf $initiate = False EndIf For $g = 0 To 11 If _GetMinNumber($Get_Min) = $T_Min[$g][0] Then _Set_Remainder_Min(@MIN) $Text_Num_Split = StringSplit($T_Min[$g][1], "|") $Text_Hr_Split = StringSplit($T_Hour[$Get_Hour][1], "|") For $h = 1 To 110 GUICtrlSetColor($Char_Text[$h], $Text_Color_Dark) For $l = 1 To $Text_Num_Split[0] If $Text_Num_Split[$l] = $h Then GUICtrlSetColor($Char_Text[$Text_Num_Split[$l]], $Text_Color_Lit) EndIf Next For $m = 1 To $Text_Hr_Split[0] If $Text_Hr_Split[$m] = $h Then GUICtrlSetColor($Char_Text[$Text_Hr_Split[$m]], $Text_Color_Lit) EndIf Next Next Return EndIf Next EndFunc ;==>_CalibrateTime ; Func _Change_Color($colorNumb) GUISetBkColor($Color_Themes[$colorNumb - 1][1]) $Text_Color_Dark = $Color_Themes[$colorNumb - 1][2] $initiate = True _CalibrateTime() IniWrite($sIni_File, "Theme", "Selected", $colorNumb - 1) EndFunc ;==>_Change_Color ; Func _GetMinNumber($s_Number) Switch $s_Number Case 0 To 4 Return "00" Case 5 To 9 Return "05" Case 10 To 14 Return "10" Case 15 To 19 Return "15" Case 20 To 24 Return "20" Case 25 To 29 Return "25" Case 30 To 34 Return "30" Case 35 To 39 Return "35" Case 40 To 44 Return "40" Case 45 To 49 Return "45" Case 50 To 54 Return "50" Case 55 To 59 Return "55" EndSwitch EndFunc ;==>_GetMinNumber ; Func _Hour_Correct($s_Hour) Switch $s_Hour Case 13 To 23 $Hour = ($s_Hour - 13) Case 00 $Hour = 11 Case Else $Hour = $s_Hour - 1 EndSwitch Switch $Selected_Lan Case "en", "fr", "it" If @MIN > 34 Then $Hour += 1 If $Hour > 11 Then $Hour = 00 EndIf Case "de" If @MIN > 19 Then $Hour += 1 If $Hour > 11 Then $Hour = 00 EndIf Case "nl", "sv" If @MIN > 24 Then $Hour += 1 If $Hour > 11 Then $Hour = 00 EndIf EndSwitch Return $Hour EndFunc ;==>_Hour_Correct ; Func _Set_Remainder_Min($q_Min) Local $e_Count $w_Min = StringRight($q_Min, 1) Switch $w_Min Case 1, 6 $e_Count = 1 Case 2, 7 $e_Count = 2 Case 3, 8 $e_Count = 3 Case 4, 9 $e_Count = 4 EndSwitch For $t = 1 To 4 GUICtrlSetColor($Char_Text_Remain[$t], $Text_Color_Dark) Next For $t = 1 To $e_Count GUICtrlSetColor($Char_Text_Remain[$t], $Text_Color_Lit) Next EndFunc ;==>_Set_Remainder_Min ; Func _RestartScript() If @Compiled = 1 Then Run(FileGetShortName(@ScriptFullPath)) Else Run(FileGetShortName(@AutoItExe) & " " & FileGetShortName(@ScriptFullPath)) EndIf Exit EndFunc ;==>_RestartScript ; Func _SetImage($hWnd, $sImage) ; Const $STM_SETIMAGE = 0x0172 Local $hImage, $hBitmap, $Style, $Error = False If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd) If $hWnd = 0 Then Return SetError(1, 0, 0) EndIf EndIf _GDIPlus_Startup() $hImage = _GDIPlus_BitmapCreateFromFile($sImage) $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) If $hBitmap = 0 Then Return SetError(1, 0, 0) EndIf $Style = _WinAPI_GetWindowLong($hWnd, $GWL_STYLE) If @error Then $Error = 1 Else _WinAPI_SetWindowLong($hWnd, $GWL_STYLE, BitOR($Style, Hex($SS_BITMAP))) If @error Then $Error = 1 Else _WinAPI_DeleteObject(_SendMessage($hWnd, $STM_SETIMAGE, $IMAGE_BITMAP, 0)) _SendMessage($hWnd, $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap) If @error Then $Error = 1 EndIf EndIf EndIf If $Error Then _WinAPI_DeleteObject($hBitmap) EndIf _GDIPlus_BitmapDispose($hImage) _GDIPlus_Shutdown() Return SetError($Error, 0, Not $Error) EndFunc ;==>_SetImage
    1 point
  6. It should work indeed using FileReadLine and _FileWriteToLine
    1 point
  7. @JLogan Ok, if that is the case I would go with the InputBox() idea
    1 point
  8. 2) Yes. in the same manner as point 3) if not in other ways. 3) See Drag-and-drop reordering listbox. Note that subclassing is much easier implemented with the four functions SetWindowSubclass, GetWindowSubclass, RemoveWindowSubclass and DefSubclassProc (all implemented in WinAPIShellEx.au3) than with _WinAPI_SetWindowLong. 4) I have never heard beeps when I have used the scrool wheel in a listbox. I think it has something to do with your specific code. Have you looked at GUICtrlCreateListView and the GuiListView UDF? A listview is an advanced version of a listbox. Because a listview natively supports more functionality than a listbox most of your questions are easier to implement for a listview than for a listbox. Also the forums contains many more questions/answers and code examples for listviews than for listboxes. GUIListViewEx is a very popular example. 6) This can be implemented with GUISetAccelerators.
    1 point
  9. Or if you want complete automation for more than one at a time, just store the names etc in something like an INI file that your EXE references.
    1 point
  10. Or you could provide an inputbox to allow entering the VM name when the program starts ...
    1 point
  11. Cerena, No. But you could recode the original file to take the virtual machine name as a command line parameter - that way your colleagues could all use the same executable and just adjust the calling line. M23
    1 point
  12. Heh if that is the case pretty sure you can just do FileCopy() #include <FileConstants.au3> $sSourceFile = @ScriptDir & "\Source.txt" $sDestFile = @ScriptDir & "\Destination.txt" FileCopy($sSourceFile, $sDestFile, $FC_OVERWRITE)
    1 point
  13. If the 2 files have the same content except these numbers why don't you simply copy the whole source and overwrite the destination file ? #include <FileConstants.au3> $sSourceFile = @ScriptDir & "\Source.txt" $sDestFile = @ScriptDir & "\Destination.txt" $sSource = FileRead($sSourceFile) $hDest = FileOpen($sDestFile, $FO_OVERWRITE) FileWrite($hDest, $sSource) FileClose($hDest)
    1 point
  14. Based on the steps you put in your post I wrote the code to do the same. Just tried this and it worked on my test files. You will of course need to modify for your data/paths. $sSourceFile = @ScriptDir & "\Source.txt" $sDestinationFile = @ScriptDir & "\Destination.txt" $sProgramPath = "Your Program Path" $sProcessName = "Your Program Process Name" ;Launch Program Run($sProgramPath) ;Wait for our program to open While 1 Sleep(100) If ProcessExists($sProcessName) Then ExitLoop WEnd ;Read Lines from Source File $hSource = FileOpen($sSourceFile) $sSourceLine2 = FileReadLine($hSource, 2) $sSourceLine3 = FileReadLine($hSource, 3) FileClose($hSource) ;Close Program ProcessClose($sProcessName) ;Write Lines to Destination File $sDestination = FileRead($sDestinationFile) $hDestination = FileOpen($sDestinationFile, 2) $sNewContent = StringRegExpReplace($sDestination, '("VendorID"\s+"\d+")', $sSourceLine2) $sNewContent = StringRegExpReplace($sNewContent, '("DeviceID"\s+"\d+")', $sSourceLine3) FileWrite($hDestination, $sNewContent) FileClose($hDestination) This could be simplified quite a bit more if I knew how your destination file was created. If your manually creating that file you can put a static string in the file and use ReplaceStringInFile() instead of RegEx but I assumed that the destination file is like the source with a random VendorID/DeviceID so RegEx will find them and replace it from the lines in the source file.
    1 point
  15. I'm still working on it, but I'm on tour the rest of the year for business, so no avail. A hint: Everything I post here (or posted since my last post here) is a part of my work on this compiler (OOPE for example). I'm building stable components to declutter the current port. Bear with me .
    1 point
  16. This is awesome news (EDIT: I do not know if I had ever walked on this topic, or at least certainly before him did not pay my attention.) Here is reference: https://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx and here: http://dennymichael.net/2015/06/22/web-browser-control-specifying-the-ie-version/
    1 point
  17. WMGetObject should be possible to get the native ie object. Then you can reach dom object and us ie.au3 stuff on the object retrieved. If your application has an adressbar you can manipulate thru javascript in addressbar https://www.autoitscript.com/forum/topic/99533-explain-this-function-to-me/ http://www.programmershare.com/2523017/
    1 point
  18. A systemwide low level mouse hook (WH_MOUSE_LL) where you (more or less) hook into the mouse driver can be implemented in pure AutoIt code. You'll find examples if you search. A less intrusive method (WH_GETMESSAGE, WH_MSGFILTER, WH_SYSMSGFILTER) where you only hook into the processes of the specific application cannot be implemented entirely in AutoIt code. In this example you can see which part of the code you can implement in AutoIt code and which part must be implemented in a DLL. It was this way I had in mind. If such a hook procedure is implemented in pure AutoIt code, you can only hook into a GUI which is running in the same process (or thread) as the hook procedure.
    1 point
  19. It came to me in a different way. After deliberation you're right @guinness. But it will be interesting to show some example on how to tie together, in a specific project, I mean UDF for a particular WebService (it must be open to public). Then, interested parties may jointly develop something new, at the same time showing to other AutoIt Forum Members the progress, and also looking for help and ideas directly on this forum.
    1 point
  20. Of course from now I'll use only the new crypt functions, but for now I want to manage the transition. I have over an hundred of remote clients and those scripts rely the autoupdate on the exchange of crypted data . So i was searching how to crypt a string with new functions, in a way decryptable by the old functions. So you tell me there is no way to obtain compatible encription ? OK. Btw I can manage this situation with a slighty more complex update.... Thank you.
    1 point
×
×
  • Create New...