Leaderboard
Popular Content
Showing content with the highest reputation on 12/26/2024 in all areas
-
World Time for the CLI
argumentum reacted to CarlD for a topic
Revised based on comments from @argumentum. Script now uses the time server at timeapi.io. Expanded list of available cities. 2024-12-27: Added code from @argumentum to support passing command-line args in SciTE. #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile=TimeIn.exe #AutoIt3Wrapper_UseUpx=y #AutoIt3Wrapper_UseX64=n #AutoIt3Wrapper_Run_Au3Stripper=y #AutoIt3Wrapper_AU3Check_Parameters=-w 3 -w 4 -w 5 -w 6 -d #AutoIt3Wrapper_Change2CUI=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ; #include <Date.au3> ; World Time via API at https://timeapi.io Global $sRevDate = "[CLD rev. 2024-12-27]" ; If $CmdLine[0] = 0 Then Exit _ShowHelp() If StringInStr($CmdLine[1], "?") Then Exit _ShowHelp() Global $aData, $aDow, $aDTm, $aFrac = "", $aSubst, $aTZdata Global $bPossDST = 0, $DTadj, $DTime, $h1, $h2 Global $iDoW, $iIncr = 0, $iMatch Global $sData = "", $sOut = "", $sSubst, $iTmp Global $sTail = "", $sTZdata, $sWhere = "" Global $sURL = "https://timeapi.io/api/time/current/zone?timeZone=" If $CmdLine[0] Then $sWhere = $CmdLineRaw If StringInStr($sWhere, @ScriptFullPath) Then $sWhere = StringStripWS(StringTrimLeft($sWhere, StringInStr($sWhere, @ScriptFullPath) + StringLen(@ScriptFullPath)), 3) ConsoleWrite(">" & $sWhere & "<" & @CrLF) EndIf If StringInStr($sWhere, " ") Then $sWhere = StringReplace($sWhere, " ", "_") If StringInStr($sWhere, ".") Then $sWhere = StringReplace($sWhere, ".", "") If StringInStr($sWhere, "UTC+") Then $sWhere = StringReplace($sWhere, "UTC+", "GMT+") If StringInStr($sWhere, "UTC-") Then $sWhere = StringReplace($sWhere, "UTC-", "GMT-") If StringInStr($sWhere, "GMT+") Then $sWhere = StringReplace($sWhere, "GMT+", "GMT-") If StringInStr($sWhere, "GMT-") Then $sWhere = StringReplace($sWhere, "GMT-", "GMT+") ; Supplemental list of cities not in IANA time zone list ; Substitutes time zone for city name ; GMT offsets use opposite sign -/+ (quirk of time zone data format) $sSubst = "EST5EDT,Miami,Atlanta,Boston,Philadelphia,|CST6CDT,New_Orleans,Minneapolis,Kansas_City,Oklahoma_City,Dallas,Houston,|MST7MDT,Salt_Lake_City,|PST8PDT,San_Diego,San_Francisco,Las_Vegas,Seattle,|GMT,Douglas,Jamestown,Lome,Lomé,Edinburgh,Cardiff,Suva,Yaren,Pevek,Petropavlovsk-Kamchatsky,Yamoussoukro,Torshavn,Tórshavn,|GMT-1,Tirana,Porto_Novo,Yaounde,Yaoundé,N'Djamena,Frankfurt,Valletta,Catania,Rabat*,Abuja,Tromso,Barcelona,Bern,Vatican_City,|GMT-2,Benghazi,Gitega,Kemi,Rovaniemi,Lilongwe,Cape_Town,Pretoria,Dnipro,|GMT-3,Doha,|GMT-4,Port_Louis,Saint-Denis,Izhevsk,Seychelles,Abu_Dhabi,|GMT-5,Port-aux-Francais,Amsterdam_Island,Astana,Male,Islamabad,Lahore,|GMT-5:30,New_Delhi,Bengaluru,Mumbai,Bombay,Chennai,Sri_Jayawardenepura_Kotte,|GMT-6,Diego_Garcia,|GMT-6:30,Naypyidaw,|GMT-7,Khatanga,Norilsk,Hanoi,|GMT-8,Bandar_Seri_Begawan,Beijing,Lhasa,Denpasar,Nusantara,|GMT-9,Manokwari,Ngerulmud,Tiksi,|GMT-9:30,Alice_Springs,|GMT-10,Cairns,Hagatna,Hagåtña,Komsomolsk-on-Amur,Verkhoyansk,|GMT-11,Palikir,Yuzhno-Sakhalinsk,Honiara,Port_Vila,|GMT+1,Praia,Ponta_Delgada,|GMT+2,Ittoqqortoormiit,Kangerlussuaq,Qaanaaq,King_Edward_Point,|GMT+3,Brasilia,Rio_de_Janeiro,Punta_Arenas*,Santiago*,|GMT+3:30,Mary's_Harbour,|GMT+4,Bridgetown,Hamilton,Sucre,Happy_Valley-Thule_Air_Base,Basse-Terre,Georgetown,|GMT+5,Alert,Eureka,Grise_Fiord,Pond_Inlet,Ottawa,Chibougamau,Kuujjuaq,Easter_Island*,Quito,Kingston,|GMT+6,Belmopan,Baker_Lake,Resolute_Bay,San_Jose,Galapagos_Islands,San_Salvador,Guatemala_City,|GMT+7,Calgary,|GMT+8,Adamstown,|GMT+9,Fairbanks,Unalaska,|GMT+10,Papeete,|GMT+11,Dodoma,Alofi,Ankara,Sana,Manama,Moroni,Kuwait_City,Belushya_Guba,Marion_Island_(Prince_Edward_Islands),Marion_Island,|GMT+12,Baker_Island," $aSubst = StringSplit($sSubst, "|") For $i = 1 To $aSubst[0] If StringInStr($aSubst[$i], ("," & $sWhere)) Then If StringInStr($aSubst[$i], ("," & $sWhere & "*")) Then $sWhere &= "*" $bPossDST = 1 EndIf If StringInStr($aSubst[$i], ("," & $sWhere & ",")) Then $sWhere = _ StringLeft($aSubst[$i], StringInStr($aSubst[$i], ",") - 1) If StringInStr($sWhere, "GMT") = 1 Then $sWhere = "Etc/" & $sWhere EndIf Next ; Fractional UTC/GMT offsets If StringInStr($sWhere, ":") Then $aFrac = StringSplit($sWhere, ":") $sWhere = $aFrac[1] $iIncr = $aFrac[2] If StringInStr($sWhere, "+") Then $iIncr *= -1 EndIf $sTZdata = "Africa/Abidjan,Africa/Accra,Africa/Addis_Ababa,Africa/Algiers,Africa/Asmara,Africa/Asmera,Africa/Bamako,Africa/Bangui,Africa/Banjul,Africa/Bissau,Africa/Blantyre,Africa/Brazzaville,Africa/Bujumbura,Africa/Cairo,Africa/Casablanca,Africa/Ceuta,Africa/Conakry,Africa/Dakar,Africa/Dar_es_Salaam,Africa/Djibouti,Africa/Douala,Africa/El_Aaiun,Africa/Freetown,Africa/Gaborone,Africa/Harare,Africa/Johannesburg,Africa/Juba,Africa/Kampala,Africa/Khartoum,Africa/Kigali,Africa/Kinshasa,Africa/Lagos,Africa/Libreville,Africa/Lome,Africa/Luanda,Africa/Lubumbashi,Africa/Lusaka,Africa/Malabo,Africa/Maputo,Africa/Maseru,Africa/Mbabane,Africa/Mogadishu,Africa/Monrovia,Africa/Nairobi,Africa/Ndjamena,Africa/Niamey,Africa/Nouakchott,Africa/Ouagadougou,Africa/Porto-Novo,Africa/Sao_Tome,Africa/Timbuktu,Africa/Tripoli,Africa/Tunis,Africa/Windhoek,America/Adak,America/Anchorage,America/Anguilla,America/Antigua,America/Araguaina,America/Argentina/Buenos_Aires,America/Argentina/Catamarca,America/Argentina/ComodRivadavia,America/Argentina/Cordoba,America/Argentina/Jujuy,America/Argentina/La_Rioja,America/Argentina/Mendoza,America/Argentina/Rio_Gallegos,America/Argentina/Salta,America/Argentina/San_Juan,America/Argentina/San_Luis,America/Argentina/Tucuman,America/Argentina/Ushuaia,America/Aruba,America/Asuncion,America/Atikokan,America/Atka,America/Bahia,America/Bahia_Banderas,America/Barbados,America/Belem,America/Belize,America/Blanc-Sablon,America/Boa_Vista,America/Bogota,America/Boise,America/Buenos_Aires,America/Cambridge_Bay,America/Campo_Grande,America/Cancun,America/Caracas,America/Catamarca,America/Cayenne,America/Cayman,America/Chicago,America/Chihuahua,America/Ciudad_Juarez,America/Coral_Harbour,America/Cordoba,America/Costa_Rica,America/Creston,America/Cuiaba,America/Curacao,America/Danmarkshavn,America/Dawson,America/Dawson_Creek,America/Denver,America/Detroit,America/Dominica,America/Edmonton,America/Eirunepe,America/El_Salvador,America/Ensenada,America/Fort_Nelson,America/Fort_Wayne,America/Fortaleza,America/Glace_Bay,America/Godthab,America/Goose_Bay,America/Grand_Turk,America/Grenada,America/Guadeloupe,America/Guatemala,America/Guayaquil,America/Guyana,America/Halifax,America/Havana,America/Hermosillo,America/Indiana/Indianapolis,America/Indiana/Knox,America/Indiana/Marengo,America/Indiana/Petersburg,America/Indiana/Tell_City,America/Indiana/Vevay,America/Indiana/Vincennes,America/Indiana/Winamac,America/Indianapolis,America/Inuvik,America/Iqaluit,America/Jamaica,America/Jujuy,America/Juneau,America/Kentucky/Louisville,America/Kentucky/Monticello,America/Knox_IN,America/Kralendijk,America/La_Paz,America/Lima,America/Los_Angeles,America/Louisville,America/Lower_Princes,America/Maceio,America/Managua,America/Manaus,America/Marigot,America/Martinique,America/Matamoros,America/Mazatlan,America/Mendoza,America/Menominee,America/Merida,America/Metlakatla,America/Mexico_City,America/Miquelon,America/Moncton,America/Monterrey,America/Montevideo,America/Montreal,America/Montserrat,America/Nassau,America/New_York,America/Nipigon,America/Nome,America/Noronha,America/North_Dakota/Beulah,America/North_Dakota/Center,America/North_Dakota/New_Salem,America/Nuuk,America/Ojinaga,America/Panama,America/Pangnirtung,America/Paramaribo,America/Phoenix,America/Port_of_Spain,America/Port-au-Prince,America/Porto_Acre,America/Porto_Velho,America/Puerto_Rico,America/Punta_Arenas,America/Rainy_River,America/Rankin_Inlet,America/Recife,America/Regina,America/Resolute,America/Rio_Branco,America/Rosario,America/Santa_Isabel,America/Santarem,America/Santiago,America/Santo_Domingo,America/Sao_Paulo,America/Scoresbysund,America/Shiprock,America/Sitka,America/St_Barthelemy,America/St_Johns,America/St_Kitts," $sTZdata &= "America/St_Lucia,America/St_Thomas,America/St_Vincent,America/Swift_Current,America/Tegucigalpa,America/Thule,America/Thunder_Bay,America/Tijuana,America/Toronto,America/Tortola,America/Vancouver,America/Virgin,America/Whitehorse,America/Winnipeg,America/Yakutat,America/Yellowknife,Antarctica/Casey,Antarctica/Davis,Antarctica/DumontDUrville,Antarctica/Macquarie,Antarctica/Mawson,Antarctica/McMurdo,Antarctica/Palmer,Antarctica/Rothera,Antarctica/South_Pole,Antarctica/Syowa,Antarctica/Troll,Antarctica/Vostok,Arctic/Longyearbyen,Asia/Aden,Asia/Almaty,Asia/Amman,Asia/Anadyr,Asia/Aqtau,Asia/Aqtobe,Asia/Ashgabat,Asia/Ashkhabad,Asia/Atyrau,Asia/Baghdad,Asia/Bahrain,Asia/Baku,Asia/Bangkok,Asia/Barnaul,Asia/Beirut,Asia/Bishkek,Asia/Brunei,Asia/Calcutta,Asia/Chita,Asia/Choibalsan,Asia/Chongqing,Asia/Chungking,Asia/Colombo,Asia/Dacca,Asia/Damascus,Asia/Dhaka,Asia/Dili,Asia/Dubai,Asia/Dushanbe,Asia/Famagusta,Asia/Gaza,Asia/Harbin,Asia/Hebron,Asia/Ho_Chi_Minh,Asia/Hong_Kong,Asia/Hovd,Asia/Irkutsk,Asia/Istanbul,Asia/Jakarta,Asia/Jayapura,Asia/Jerusalem,Asia/Kabul,Asia/Kamchatka,Asia/Karachi,Asia/Kashgar,Asia/Kathmandu,Asia/Katmandu,Asia/Khandyga,Asia/Kolkata,Asia/Krasnoyarsk,Asia/Kuala_Lumpur,Asia/Kuching,Asia/Kuwait,Asia/Macao,Asia/Macau,Asia/Magadan,Asia/Makassar,Asia/Manila,Asia/Muscat,Asia/Nicosia,Asia/Novokuznetsk,Asia/Novosibirsk,Asia/Omsk,Asia/Oral,Asia/Phnom_Penh,Asia/Pontianak,Asia/Pyongyang,Asia/Qatar,Asia/Qostanay,Asia/Qyzylorda,Asia/Rangoon,Asia/Riyadh,Asia/Saigon,Asia/Sakhalin,Asia/Samarkand,Asia/Seoul,Asia/Shanghai,Asia/Singapore,Asia/Srednekolymsk,Asia/Taipei,Asia/Tashkent,Asia/Tbilisi,Asia/Tehran,Asia/Tel_Aviv,Asia/Thimbu,Asia/Thimphu,Asia/Tokyo,Asia/Tomsk,Asia/Ujung_Pandang,Asia/Ulaanbaatar,Asia/Ulan_Bator,Asia/Urumqi,Asia/Ust-Nera,Asia/Vientiane,Asia/Vladivostok,Asia/Yakutsk,Asia/Yangon,Asia/Yekaterinburg,Asia/Yerevan,Atlantic/Azores,Atlantic/Bermuda,Atlantic/Canary,Atlantic/Cape_Verde,Atlantic/Faeroe,Atlantic/Faroe,Atlantic/Jan_Mayen,Atlantic/Madeira,Atlantic/Reykjavik,Atlantic/South_Georgia,Atlantic/St_Helena,Atlantic/Stanley,Australia/ACT,Australia/Adelaide,Australia/Brisbane,Australia/Broken_Hill,Australia/Canberra,Australia/Currie,Australia/Darwin,Australia/Eucla,Australia/Hobart,Australia/LHI,Australia/Lindeman,Australia/Lord_Howe,Australia/Melbourne,Australia/North,Australia/NSW,Australia/Perth,Australia/Queensland,Australia/South,Australia/Sydney,Australia/Tasmania,Australia/Victoria,Australia/West,Australia/Yancowinna,Brazil/Acre,Brazil/DeNoronha,Brazil/East,Brazil/West,Canada/Atlantic,Canada/Central,Canada/Eastern,Canada/Mountain,Canada/Newfoundland,Canada/Pacific,Canada/Saskatchewan,Canada/Yukon,CET,Chile/Continental,Chile/EasterIsland,CST6CDT,Cuba,EET,Egypt,Eire,EST,EST5EDT,Etc/GMT,Etc/GMT-0,Etc/GMT-1,Etc/GMT-10,Etc/GMT-11,Etc/GMT-12,Etc/GMT-13,Etc/GMT-14,Etc/GMT-2,Etc/GMT-3,Etc/GMT-4,Etc/GMT-5,Etc/GMT-6,Etc/GMT-7,Etc/GMT-8,Etc/GMT-9,Etc/GMT+0,Etc/GMT+1,Etc/GMT+10,Etc/GMT+11,Etc/GMT+12,Etc/GMT+2,Etc/GMT+3,Etc/GMT+4,Etc/GMT+5,Etc/GMT+6,Etc/GMT+7,Etc/GMT+8,Etc/GMT+9,Etc/GMT0,Etc/Greenwich,Etc/UCT,Etc/Universal,Etc/UTC,Etc/Zulu,Europe/Amsterdam,Europe/Andorra,Europe/Astrakhan,Europe/Athens,Europe/Belfast,Europe/Belgrade,Europe/Berlin,Europe/Bratislava,Europe/Brussels,Europe/Bucharest,Europe/Budapest,Europe/Busingen,Europe/Chisinau,Europe/Copenhagen,Europe/Dublin,Europe/Gibraltar,Europe/Guernsey," $sTZdata &= "Europe/Helsinki,Europe/Isle_of_Man,Europe/Istanbul,Europe/Jersey,Europe/Kaliningrad,Europe/Kiev,Europe/Kirov,Europe/Kyiv,Europe/Lisbon,Europe/Ljubljana,Europe/London,Europe/Luxembourg,Europe/Madrid,Europe/Malta,Europe/Mariehamn,Europe/Minsk,Europe/Monaco,Europe/Moscow,Europe/Nicosia,Europe/Oslo,Europe/Paris,Europe/Podgorica,Europe/Prague,Europe/Riga,Europe/Rome,Europe/Samara,Europe/San_Marino,Europe/Sarajevo,Europe/Saratov,Europe/Simferopol,Europe/Skopje,Europe/Sofia,Europe/Stockholm,Europe/Tallinn,Europe/Tirane,Europe/Tiraspol,Europe/Ulyanovsk,Europe/Uzhgorod,Europe/Vaduz,Europe/Vatican,Europe/Vienna,Europe/Vilnius,Europe/Volgograd,Europe/Warsaw,Europe/Zagreb,Europe/Zaporozhye,Europe/Zurich,GB,GB-Eire,GMT,GMT-0,GMT+0,GMT0,Greenwich,Hongkong,HST,Iceland,Indian/Antananarivo,Indian/Chagos,Indian/Christmas,Indian/Cocos,Indian/Comoro,Indian/Kerguelen,Indian/Mahe,Indian/Maldives,Indian/Mauritius,Indian/Mayotte,Indian/Reunion,Iran,Israel,Jamaica,Japan,Kwajalein,Libya,MET,Mexico/BajaNorte,Mexico/BajaSur,Mexico/General,MST,MST7MDT,Navajo,NZ,NZ-CHAT,Pacific/Apia,Pacific/Auckland,Pacific/Bougainville,Pacific/Chatham,Pacific/Chuuk,Pacific/Easter,Pacific/Efate,Pacific/Enderbury,Pacific/Fakaofo,Pacific/Fiji,Pacific/Funafuti,Pacific/Galapagos,Pacific/Gambier,Pacific/Guadalcanal,Pacific/Guam,Pacific/Honolulu,Pacific/Johnston,Pacific/Kanton,Pacific/Kiritimati,Pacific/Kosrae,Pacific/Kwajalein,Pacific/Majuro,Pacific/Marquesas,Pacific/Midway,Pacific/Nauru,Pacific/Niue,Pacific/Norfolk,Pacific/Noumea,Pacific/Pago_Pago,Pacific/Palau,Pacific/Pitcairn,Pacific/Pohnpei,Pacific/Ponape,Pacific/Port_Moresby,Pacific/Rarotonga,Pacific/Saipan,Pacific/Samoa,Pacific/Tahiti,Pacific/Tarawa,Pacific/Tongatapu,Pacific/Truk,Pacific/Wake,Pacific/Wallis,Pacific/Yap,Poland,Portugal,PRC,PST8PDT,ROC,ROK,Singapore,Turkey,UCT,Universal,US/Alaska,US/Aleutian,US/Arizona,US/Central,US/East-Indiana,US/Eastern,US/Hawaii,US/Indiana-Starke,US/Michigan,US/Mountain,US/Pacific,US/Samoa,UTC,W-SU,WET,Zulu" $sSubst = StringReplace($sSubst, "_", " ") $sSubst = StringReplace($sSubst, "*", "") $sTZdata &= $sSubst $aTZdata = StringSplit($sTZdata, ",") $iMatch = _ListMatches($sWhere) If Not $iMatch Then If Not $sOut Then $sOut = "Nothing on """ & $sWhere & """" Exit ConsoleWrite($sOut) EndIf $sTail = $aTZdata[$iMatch] $sURL &= $sTail $sData = BinaryToString(InetRead($sURL)) If Not $sData Then _ExitError("No data received") $aData = StringSplit($sData, ",") $aDow = StringSplit("Mon|Tue|Wed|Thu|Fri|Sat|Sun", "|") If $iIncr = 0 Then $sOut &= StringMid($aData[12], 14, 3) & " " $sOut &= StringTrimLeft($aData[10], 8) $sOut = StringTrimRight($sOut, 1) If StringInStr($aData[13], "true") Then $sOut &= " (DST)" Else $DTime = StringReplace(StringMid($aData[8], 13, 16), "-", "/") $DTime = StringReplace($DTime, "T", " ") $DTadj = _DateAdd("n", $iIncr, $DTime) $aDTm = StringSplit(StringLeft($DTadj, 10), "/") $iDoW = _DateToDayofWeek($aDTm[1], $aDTm[2], $aDTm[3]) - 1 If $iDoW < 1 Then $iDoW = 7 $sOut &= $aDoW[$iDoW] & " " & StringRight($DTadj, 5) EndIf If $bPossDST Then $sOut &= @CRLF & "(possibly plus|minus DST offset)" Exit ConsoleWrite($sOut & @CRLF) Func _ListMatches($sStr = "") Local $iCount = 0, $iIndex = 0, $sFixGMT = "", $sStr0 = "" If $sStr Then For $i = 1 To $aTZdata[0] If StringInStr($aTZdata[$i], $sStr) = 0 Or _ StringInStr($aTZdata[$i], "|") = 1 Then ContinueLoop $iIndex = $i $sStr0 = $aTZdata[$i] If StringInStr($sStr0, "/") And Not StringInStr($sStr0, "Etc/") Then $sStr0 = StringSplit($sStr0, "/")[2] If $sStr0 = $sStr Then $sFixGMT = $aTZdata[$i] If StringInStr($sFixGMT, "Etc/") = 1 Then $sFixGMT = StringReplace($aTZdata[$i], "Etc/GMT", "UTC/GMT") If StringInStr($sFixGMT, "+") = 8 Then $sFixGMT = StringReplace($sFixGMT, "+", "-") ElseIf StringInStr($sFixGMT, "-") = 8 Then $sFixGMT = StringReplace($sFixGMT, "-", "+") EndIf EndIf If $iIncr > 0 Then $sFixGMT &= ":" & String(Abs($iIncr)) $sOut &= $sFixGMT & " " Return $iIndex EndIf $iCount += 1 If $iCount = 2 Then $sOut &= @CRLF If StringInStr($aTZdata[$i], "Etc/") = 0 Then $sOut &= $aTZdata[$i] & " " If $iCount > 1 Then $sOut &= @CRLF EndIf Next EndIf If Not $iCount Then _ExitError("Nothing on """ & $sStr & """") Else If $iCount > 1 Then $iCount = 0 Else $iCount = $iIndex EndIf EndIf Return $iCount EndFunc ;==>_ListMatches Func _ExitError($sStr = "") If $sStr Then ConsoleWrite($sStr & @CRLF) Exit EndFunc ;==>_ExitError Func _ShowHelp() ConsoleWrite("World Time via timeapi.io " & $sRevDate & @CRLF & "Usage:" & @CRLF & StringTrimRight(@ScriptName, 4) & " <CITY>" & @CRLF & "--" & @CRLF & StringTrimRight(@ScriptName, 4) & " <substring> lists cities in database containing <substring>" & @CRLF & "Listings in format <continent>/<city> (e.g., Europe/Lisbon) obtain" & @CRLF & " the current time from the server at timeapi.io." & @CRLF & "Listings with city name only obtain the time based on the applicable" & @CRLF & " UTC/GMT offset identified in www.timeanddate.com." & @CRLF & "Accuracy is NOT guaranteed!" & @CRLF) EndFunc ;==>_ShowHelp1 point -
FileSetTime issue
argumentum reacted to Dana for a topic
Just being silly, really. The code snippet is just test code to demonstrate the issue. The real program is a flight data analysis app which reads an airport location database from a text file and displays the database file date at program startup. It then uses the database to identify stops in a GPS track log. If the file is missing the program creates it, padding it with one line of data, that line being the location of the Wright Brothers' first successful flight... so just for fun I used the date and time of that flight. That date will of course change the first time the file is edited with the user's real data.1 point -
transparent movable windows with drop shadow
pixelsearch reacted to Nine for a topic
Another way to toggle the button (similar with secondary GUIs) : Global $pOldBtnProc ... Local $hGUI4 = GUICreate("", 52, 51, 300, 300, $WS_POPUP, $WS_EX_MDICHILD, $hGUI) Local $idBtn = GUICtrlCreateButton("Test", 0, 0, 52, 51, $BS_BITMAP) GUICtrlSetImage($idBtn, "Cancel 52-51.bmp") Local $hBtnProc = DllCallbackRegister(WinBtnProc, "long", "hwnd;uint;wparam;lparam") $pOldBtnProc = _WinAPI_SetWindowLong(GUICtrlGetHandle($idBtn), $GWL_WNDPROC, DllCallbackGetPtr($hBtnProc)) ... Func WinBtnProc($hWnd, $iMsg, $wParam, $lParam) Local Static $bHover = False Switch $iMsg Case $WM_MOUSEMOVE If Not $bHover Then GUICtrlSetImage(_WinAPI_GetDlgCtrlID($hWnd), "OK 52-51.bmp") $bHover = True EndIf Case $WM_MOUSELEAVE GUICtrlSetImage(_WinAPI_GetDlgCtrlID($hWnd), "Cancel 52-51.bmp") $bHover = False EndSwitch Return DllCallAddress("long", $pOldBtnProc, "hwnd", $hWnd, "uint", $iMsg, "wparam", $wParam, "lparam", $lParam)[0] EndFunc ;==>WinBtnProc1 point -
Employing Multiple "On_Event" Function Calls
mr-es335 reacted to samueljcalloway for a topic
To call the _LaunchTTA() function before the GUICtrlSetOnEvent for the button, you can simply call _LaunchTTA() directly before setting the event handler, like so: Global $_sCol1Row1 = GUICtrlCreateButton("Launch SAC", 10, 10, 200, 25) _LaunchTTA() ; Call _LaunchTTA before setting the event GUICtrlSetOnEvent($_sCol1Row1, "On_LaunchSAC") This way, _LaunchTTA() will execute when the script reaches that part, before the event for the button is set up. Keep in mind that any changes to the GUI (like adding buttons or interacting with events) will not affect the flow unless explicitly handled after function calls like _LaunchTTA(). If _LaunchTTA() needs to be called multiple times, you can simply reuse this pattern wherever necessary.1 point -
I wouldn't worry about it.1 point
-
Resizable & Dragable Windows Controls
taurus905 reacted to pixelsearch for a topic
Fantastic, thanks @Nine and @ioa747 I just updated my script above accordingly, to solve the Minimize / Restore inconvenience.1 point -
Resizable & Dragable Windows Controls
taurus905 reacted to pixelsearch for a topic
Hope this script will work for you as it works for me, no callback, no subclassing, no redraw, no nothing Both buttons seem to be draggable fluently, fingers crossed. #include <GUIConstantsEx.au3> #include <WinAPISysWin.au3> #include <WindowsConstants.au3> Opt("MustDeclareVars", 1) ;0=no, 1=require pre-declaration Global $g_hGui Example() ;============================================== Func Example() Local $idBtn, $idBtn2, $aInfo $g_hGui = GUICreate("Drag Buttons", 300, 200, -1, -1, $WS_OVERLAPPEDWINDOW) $idBtn = GUICtrlCreateButton("Button 1", 4, 4, 80, 80, $WS_CLIPSIBLINGS) $idBtn2 = GUICtrlCreateButton("Button 2", 90, 4, 80, 80, $WS_CLIPSIBLINGS) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_PRIMARYDOWN $aInfo = GUIGetCursorInfo($g_hGui) If (Not @error) And ($aInfo[4] = $idBtn Or $aInfo[4] = $idBtn2) Then _WinAPI_SetWindowPos(GUICtrlGetHandle($aInfo[4]), $HWND_TOP , 0, 0, 0, 0, $SWP_NOMOVE + $SWP_NOSIZE) _ControlMove() EndIf EndSwitch WEnd EndFunc ;==>Example ;============================================== Func _ControlMove() Local $aInfo, $idControl, $hControl, $aPos, $iSubtractX, $iSubtractY $aInfo = GUIGetCursorInfo($g_hGui) $idControl = $aInfo[4] ; +++ $hControl = GUICtrlGetHandle($idControl) $aPos = ControlGetPos($g_hGui, "", $idControl) $iSubtractX = $aInfo[0] - $aPos[0] $iSubtractY = $aInfo[1] - $aPos[1] Do $aInfo = GUIGetCursorInfo($g_hGui) ; ConsoleWrite($aInfo[4] & @crlf) ; varies from 3 => 4 => 3 => 4 ... while dragging ; https://www.autoitscript.com/forum/topic/211959-drag-and-drop-items-labels-vertically-among-themselves/?do=findComment&comment=1534654 ; ControlMove($g_hGui, "", $idControl, $aInfo[0] - $iSubtractX, $aInfo[1] - $iSubtractY) ; issue on Minimize GUICtrlSetPos($idControl, $aInfo[0] - $iSubtractX, $aInfo[1] - $iSubtractY) _WinAPI_SetWindowPos($hControl, $HWND_TOP, 0, 0, 0, 0, $SWP_NOMOVE + $SWP_NOSIZE) Sleep(10) Until Not $aInfo[2] EndFunc ;==>_ControlMove1 point