Um Ribbons zu automatisieren empfiehlt sich das UI Automation Framework wie hier beschrieben.
Hab's selbst noch nie verwendet, aber was von LarsJ kommt, hat Hand und Fuß.
Beiträge von water
-
-
PSblnkd
Wenn Du Deine Wünsche an SciTE im engl. Forum postest, dann ist die Change groß, dass sich der Maintainer von SciTE4AutoIt (Jos) dazu äußert. -
Noch schneller ist sicher _OL_ItemSearch, aber leider auch komplexer.
Generell:
- ItemCreate mit ItemFind von der Laufzeit her zu vergleichen ist wie mit Äpfeln und Birnen.
- "dauert sehr lange" ist ein sehr dehnbarer Begriff. Gib bitte immer möglichst konkrete Werte an.
-
Leider kann ich mir Deine UDFs nicht anschauen - die Links sind nicht mehr aktuell.
Da hilft Dir vielleicht dieser Link ins engl. Forum.
-
Links für die Details:
- Microsoft (en): https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic
- Wikipedia (en): https://en.wikipedia.org/wiki/Windows_M…Instrumentation
- Wikipedia (de): https://de.wikipedia.org/wiki/Windows_M…Instrumentation
-
Die engl. Beschreibung hilft besser.
Bei mir (Windows 11 23H2) funktioniert:- Im Eingabefeld: "Optionales Feature" eingeben.
- Die angezeigte Liste enthält auch "Optionales Feature hinzufügen" > auswählen
- Der erste Punkt ist "Optionales Feature hinzufügen"
- Rechts "Features anzeigen" auswählen, "WMIC" selektieren und mit "Weiter" installieren.
-
ich bin seit einigen Tagen auf Windows 11 24H2 umgestiegen und da funktionieren alle Befehle mit WMIC nicht mehr, da Microsoft
WMIC endgültig in "Rente" geschickt hat.Wie es aussieht, kann WMIC einfach wieder aktiviert werden: https://winxperts4all.at/index.php/betr…der-hinzufuegen
-
da das Programm nur startet, wenn ein
Eintrag (Listitem verweist auf eine Datei in einem Ordner der mit FilelisttoArray ausgelesen wird, um das Listenfeld dynamisch zu erstellen. Ohne Eintrag kein Array => ProgrammabsturzDas ist das Ursprungsproblem:
Falls die Datei nicht existiert oder keine Einträge beinhaltet, gibt es keinen Array aber zumindest einen Fehlercode.
Mein Ansatz: Diesen Fehlercode abfangen und dann den notwendigen Array im Skript selbst erstellen. Dadurch stürzt das Programm nicht mehr ab - Problem erledigt.Details kann ich deinen bisherigen Code-Snippets nicht entnehmen, man müsste daher an dieser Lösung noch feilen
-
Eine MsgBox scheidet auch aus?
Die Auswahl des Benutzers kannst Du dann ja zur Dokumentation auf der Konsole ausgeben. -
Ohne Eintrag kein Array => Programmabsturz)
Sehe ich das richtig, dass, wenn dieses Problem vom Skript umgangen wird, die ganze Sache mit dem BalloonTip nicht mehr notwendig ist?
-
So, hier ein Beispiel mit _GUIToolTip:
AutoIt
Alles anzeigen#include <GUIConstantsEx.au3> #include <GUIToolTip.au3> #include <ToolTipConstants.au3> ; Max. Time to display the Tooltip (10 seconds) $iToolTipMaxDisplayTime = 10000 $hGUIMain = GUICreate("TestToolTip", 810, 839, 100, 100) ; Select the icon to use for the Tooltip $idIcon1 = GUICtrlCreateIcon("shell32.dll", 24, 125, 38, 22, 22) $hIcon1 = GUICtrlGetHandle($idIcon1) $hToolTip1 = _GUIToolTip_Create($hGUIMain, BitOR($TTS_CLOSE, $TTS_BALLOON)) _GUIToolTip_SetMaxTipWidth($hToolTip1, 400) _GUIToolTip_SetDelayTime($hToolTip1, $TTDT_AUTOPOP, $iToolTipMaxDisplayTime) _GUIToolTip_AddTool($hToolTip1, 0, "Test.", $hIcon1, Default, Default, Default, Default, BitOR($TTF_SUBCLASS, $TTF_IDISHWND, $TTF_CENTERTIP)) _GUIToolTip_SetTitle($hToolTip1, "Testitel", $TTI_INFO) GUISetState(@SW_SHOW) ; Move the mouse to the Icon Coordinate so the Tooltip gets displayed Opt("MouseCoordMode", 0) MouseMove(135, 70, 0) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd ; Destroy the tooltip control _GUIToolTip_Destroy($hToolTip1) GUIDelete($hGUIMain)
-
Ich poste demnächst ein Beispiel wie ich es einsetze
-
Ich verwende die _GUIToolTip* Funktionen von AutoIt.
Mit _GUIToolTip_SetDelayTime lässt sich die Anzeigedauer einstellen. -
Außerdem hat sich Ward 2015 aus dem Forum verabschiedet und allen geposteten Code gelöscht
-
Mein herzliches Beileid! Das klingt, als ob bei Euch der Schwanz mit dem Hund wedelt
-
Da war doch unlängst eine ähnliche Diskussion zum Thema SAP und Lieferpläne (falls meine grauen Zellen nicht schon in Rente sind).
Ich finde sie aber derzeit nicht.Gefunden. Hier.
SAP bietet lt. dieser Diskussion eine Funktion für Import/Export dieser Informationen.
Google schlägt vor: https://help.sap.com/docs/SAP_DAIRY…ml?locale=de-DE -
wenn ich versuche das Script via F5 laufen zu lassen (unter aktueller Autoit Version 3.3.16.1), bekomme ich folgenden Fehler:
Da muss ich Dir zustimmen
Im Forum findest Du diese Funktion hier: https://www.autoitscript.com/forum/topic/14…rties-of-a-fileAutoIt
Alles anzeigen;=============================================================================== ; Function Name.....: _FileGetProperty ; Description.......: Returns a property or all properties for a file. ; Version...........: 1.0.2 ; Change Date.......: 05-16-2012 ; AutoIt Version....: 3.2.12.1+ ; Parameter(s)......: $FGP_Path - String containing the file path to return the property from. ; $FGP_PROPERTY - [optional] String containing the name of the property to return. (default = "") ; $iPropertyCount - [optional] The number of properties to search through for $FGP_PROPERTY, or the number of items ; returned in the array if $FGP_PROPERTY is blank. (default = 300) ; Requirements(s)...: None ; Return Value(s)...: Success: Returns a string containing the property value. ; If $FGP_PROPERTY is blank, a two-dimensional array is returned: ; $av_array[0][0] = Number of properties. ; $av_array[1][0] = 1st property name. ; $as_array[1][1] = 1st property value. ; $av_array[n][0] = nth property name. ; $as_array[n][1] = nth property value. ; Failure: Returns an empty string and sets @error to: ; 1 = The folder $FGP_Path does not exist. ; 2 = The property $FGP_PROPERTY does not exist or the array could not be created. ; 3 = Unable to create the "Shell.Application" object $objShell. ; Author(s).........: - Simucal <Simucal@gmail.com> ; - Modified by: Sean Hart <autoit@hartmail.ca> ; - Modified by: teh_hahn <sPiTsHiT@gmx.de> ; - Modified by: BrewManNH: ; https://www.autoitscript.com/forum/topic/148232-_filegetproperty-retrieves-the-properties-of-a-file ; URL...............: http://www.autoitscript.com/forum/topic/34732-udf-getfileproperty/page__view__findpost__p__557571 ; Note(s)...........: Modified the script that teh_hahn posted at the above link to include the properties that ; Vista and Win 7 include that Windows XP doesn't. Also removed the ReDims for the $av_ret array and ; replaced it with a single ReDim after it has found all the properties, this should speed things up. ; I further updated the code so there's a single point of return except for any errors encountered. ; $iPropertyCount is now a function parameter instead of being hardcoded in the function itself. ;=============================================================================== Func _FileGetProperty($FGP_Path, $FGP_PROPERTY = "", $iPropertyCount = 500) If $FGP_PROPERTY = Default Then $FGP_PROPERTY = "" $FGP_Path = StringRegExpReplace($FGP_Path, '["'']', "") ; strip the quotes, if any from the incoming string If Not FileExists($FGP_Path) Then Return SetError(1, 0, "") ; path not found Local Const $objShell = ObjCreate("Shell.Application") If @error Then Return SetError(3, 0, "") Local Const $FGP_File = StringTrimLeft($FGP_Path, StringInStr($FGP_Path, "\", 0, -1)) Local Const $FGP_Dir = StringTrimRight($FGP_Path, StringLen($FGP_File) + 1) Local Const $objFolder = $objShell.NameSpace($FGP_Dir) Local Const $objFolderItem = $objFolder.Parsename($FGP_File) Local $Return = "", $iError = 0 If $FGP_PROPERTY Then For $I = 0 To $iPropertyCount If $objFolder.GetDetailsOf($objFolder.Items, $I) = $FGP_PROPERTY Then $Return = $objFolder.GetDetailsOf($objFolderItem, $I) EndIf Next If $Return = "" Then $iError = 2 EndIf Else Local $av_ret[$iPropertyCount + 1][2] = [[0]] For $I = 1 To $iPropertyCount If $objFolder.GetDetailsOf($objFolder.Items, $I) Then $av_ret[$I][0] = $objFolder.GetDetailsOf($objFolder.Items, $I - 1) $av_ret[$I][1] = $objFolder.GetDetailsOf($objFolderItem, $I - 1) ;~ $av_ret[0][0] += 1 $av_ret[0][0] = $I EndIf Next ReDim $av_ret[$av_ret[0][0] + 1][2] If Not $av_ret[1][0] Then $iError = 2 $av_ret = $Return Else $Return = $av_ret EndIf EndIf Return SetError($iError, 0, $Return) EndFunc ;==>_FileGetProperty
-
Lt. Fehlermeldung in Post #1 tritt dieser auf Zeile 350 auf. Dies ist das "$sqlCon.Open" statement.
Die COM-Error Funktion deutet auch eindeutig auf ein SSL/TLS Problem hin. -
Wenn Du den aktuellsten SQLOLEDB Treiber verwendest, dann sollte TLS 1.2 kein Problem mehr sein (zumindest lt. Stackoverflow, siehe Link oben).
Mit folgendem Skript erhältst Du eine Liste aller installierten Treiber inkl. Dateiname und Version.
AutoIt
Alles anzeigen#include <Constants.au3> #include <Debug.au3> _ADO_OLEDBProvidersList() Func _ADO_OLEDBProvidersList() Local $sKey = "HKCR\CLSID" Local $iIndexReg = 1, $iIndexResult = 0 Local $iMax = 100000, $iMin = 1, $iPrevious = $iMin, $iCurrent = $iMax / 2 Local $aResult[200][6] ProgressOn("OLE DB Providers", "Processing the Registry", "", Default, Default, $DLG_MOVEABLE) AutoItSetOption("ExpandEnvStrings", 1) ; Count the number of keys While 1 RegEnumKey($sKey, $iCurrent) If @error = -1 Then ; Requested subkey (key instance) out of range $iMax = $iCurrent $iCurrent = Int(($iMin + $iMax) / 2) $iPrevious = $iMax Else If $iPrevious <= ($iCurrent + 1) And $iPrevious >= ($iCurrent - 1) Then ExitLoop $iMin = $iCurrent $iCurrent = Int(($iMin + $iMax) / 2) $iPrevious = $iMin EndIf WEnd Local $iPercent = 0 Local $sKeyValue = '' ; Process registry While 1 If Mod($iIndexReg, 10) = 0 Then $iPercent = Int($iIndexReg * 100 / $iCurrent) ProgressSet($iPercent, $iIndexReg & " keys of " & $iCurrent & " processed (" & $iPercent & "%)") EndIf $sSubKey = RegEnumKey($sKey, $iIndexReg) If @error Then ExitLoop $sKeyValue = RegRead($sKey & "\" & $sSubKey, "OLEDB_SERVICES") If @error = 0 Then $aResult[$iIndexResult][0] = $sKey & "\" & $sSubKey ; Registry Key $aResult[$iIndexResult][1] = RegRead($sKey & "\" & $sSubKey, "") ; OLE DB Provider $aResult[$iIndexResult][2] = RegRead($sKey & "\" & $sSubKey & "\OLE DB Provider", "") ; Description $aResult[$iIndexResult][3] = RegRead($sKey & "\" & $sSubKey & "\InprocServer32", "") ; DLL file If $aResult[$iIndexResult][3] <> "" Then $aResult[$iIndexResult][4] = _FileGetProperty($aResult[$iIndexResult][3], "Dateiversion") $aResult[$iIndexResult][5] = _FileGetProperty($aResult[$iIndexResult][3], "Änderungsdatum") EndIf $iIndexResult += 1 EndIf $iIndexReg += 1 WEnd ProgressOff() ReDim $aResult[$iIndexResult][UBound($aResult, 2)] _DebugArrayDisplay($aResult, "OLE DB Providers", "", 0, Default, "Registry key|OLE DB Provider|Description|DLL|DLL Version|DLL last modified") EndFunc ;==>_ADO_OLEDBProvidersList
-
Ich würde mit der Err.description starten. Sie gibt an, dass es ein Problem mit SSL zu sein scheint.
Err.number hilft leider wenig, da dieser Code einen allgemeinen Fehler anzeigt.Google zeigt für den Suchtext "connectionOpen SECDoClientHandshake SSL 80020009" in Richtung TLS.
Z.B.: https://stackoverflow.com/questions/7151…-error-on-windo