Dann kann ich z.Zt. nicht weiterhelfen. Vielleicht probiere ich es demnächst mal in einer Win11-VM.
Beiträge von Micha_he
-
-
Hier nochmal eine vereinfachte neue Variante, welche auch die Icons der Overlay-Leiste (ab Win7) beachtet. Das ganze nun deutlich schlanker und scheinbar unter Win7 & Win10 immer noch erfolgreich.
-
Versucht mal folgende Version. Im hier angehängten Beispiel, soll das Netzwerk-Icon ausgeblendet werden. Müsst ihr an eurem Fall anpassen. Ich habe die Class des Controls rausgenommen, welche unter Win11 nicht überein stimmte. Durchläuft die Schleife halt alle, sind ja nicht all zu viel in der Leiste.
-
-
Die msvcp140.dll sollte Visual C++ 2015 sein.
-
Aus alten Tests mit einem MSAccess-ODBC-Treiber weiß ich noch, das es 32bit & 64bit bei ODBC gibt. Und eine 32bit-Anwendung, natürlich nicht auf einen 64bit-ODBC-Treiber zugreifen kann.
%windir%\system32\odbcad32.exe
≠
%windir%\syswow64\odbcad32.exe
-
War "mir" klar. Wusste aber zu dem Zeitpunkt nicht 100%ig, ob Schokolade MsgBox'en aus seinen Scripten bereits verbannt hatte. Ging aus dem Start-Beitrag nicht genau hervor.
-
Eine Vorgehensweise würde ich noch anmerken wollen:
Du schreibst, das compilierte Script wird per Gruppenrichtlinie verteilt und beim Rechnerstart ausgeführt. Damit auch mit Admin- oder besser System-Recht, bzw. -Umgebung. Also werden MsgBox'en sowieso nicht auf dem User-Desktop angezeigt, welcher auch beim Rehnerstart noch gar nicht vorhanden ist, also auch dort nicht dargestellt werden könnte.
Ich empfehle in einem derartigen Fall, auf alle MsgBox-Zeilen im Script zu verzichten. Lassen sich ja schnell auskommentieren oder ausschließlich abhängig von einem Debug-Flag bei Script-Start einzublenden.
Ähnlich verfahre ich bei Scripten, welche als Dienst laufen sollen. Benötige ich Meldungen, lege ich ein Logfile an, welches auch benutzerübergreifend funktioniert.
-
-
Musst Du mal nach "mstsc commandline parameter" suchen...
Man findet z.B. folgendes Vorgehen aus der Kommandozeile und damit sollte es auch unter AutoIt klappen:
-
-
Micha_he : Den Schlüssel HKEY_CURRENT_USER\Classes gibt es bei mir allerdings nicht. Meinst du vielleicht HKEY_CURRENT_USER\Software\Classes?
Ja, meinte ich. Das kommt davon, wenn man es mal von Hand schreibt...
Ich glaube die Reihenfolge ist wie folgt:
1. "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.au3\UserChoice"
Wenn dort eine "Progid" steht, gilt diese ID. Gesucht wird diese dann, ab 4..
Dieser Punkt gilt aber nur wenn die Datei im Datei-Explorer (auch Windows-Desktop) an Hand der Dateiendung behandelt wird.
2. Wenn unter 1. nicht gefunden wird, wird unter "HKEY_CURRENT_USER\SOFTWARE\Classes\.au3" geschaut,
was dort im (Standard) steht.
3. Wenn auch dort nichts gesondert definiert wurde, gilt die systemweite Config unter "HKEY_CLASSES_ROOT\.au3",
dort im Schlüssel (Standard).
4. Das verknüpfte Tool, bzw. die verknüpfte ProgID wird wie folgt gesucht:
4.1 "HKEY_CURRENT_USER\SOFTWARE\Classes\[Progid]". (Im Falle AutoIt ist [Progid] im Normalfall = AutoIt3Script)
Die verknüfte Standardaktion (Doppelklick) ist unter "...\shell\(Standard)" festgelegt.
Das zu startende Programm dieser Aktion liegt dann unter "...\shell\[Aktion]\command".
Das Standard-Icon ist hier unter "HKEY_CLASSES_ROOT\[Progid]\DefaultIcon" definiert.
Trifft dieser Registry-Zweig hier nicht zu, dann siehe 4.2.
4.2 "HKEY_CLASSES_ROOT\[Progid]" (Im Falle AutoIt ist [Progid] im Normalfall = AutoIt3Script)
Aktion, startendes Programm und Icon wieder wie unter 4.1.
-
Bedenke dabei, das z.B. falsch definierte Benutzer-Registry-Einträge unter
HKCU\Classes\.au3
HKCU\Classes\AutoIt3Script
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.au3
vorranging vor den Standard-Einstellungen unter \HKCR\... sind.
-
Bin gerade darüber gefallen, deshalb hier zur Info:
Die IconDock-UDF funktioniert wegen eine Fehlers bei der Hex-Arithmetik nicht mit der AutoIt-Version 3.3.16.0 , sondern erst wieder mit der 3.3.16.1.
-
Bin gerade am testen... Scheinbar funktioniert das GUISwitch() nicht wie wir beide es nutzen, die Objecte werden direkt auf der GUI und nicht auf dem Tabitem erzeugt. Ich habe aber den Grund noch nicht gefunden.
-
Ich habe allerdings keine Ahnung, wie ich AutoIt beibringen kann, dass die Felder in den jewiligen Tabs erscheinen sollen.
2. Parameter von:
-
Bei mir sucht er mit dem Deaktivieren der Option "Such- und Websitevorschläge mit den eingegebenen Zeichen anzeigen" trotzdem noch beim eingestellten Suchanbieter.
Ich habe aber einen neuen Suchanbieter definiert und aktiviert wie folgt, dann sucht er nicht mehr nach einer Eingabe in der Adresszeile:
-
Must Du mal Eingangs- und Ausgangsdatei vergleichen, ob dabei die restlichen Bytes nicht verändert werden.
-
Die Konvertierung der binär eingelesenen Daten mit StringReplace() geht aber:
Code$hInFile = FileOpen(@ScriptDir & "\untitled.txt", 16) ; Binary Read $data = BinaryToString(FileRead($hInFile)) FileClose($hInFile) $data = StringReplace($data, "version 9", "version 7") $hOutFile = FileOpen(@ScriptDir & "\untitled_out.txt", 2 + 16) ;Binary Write FileWrite($hOutFile, $data) FileClose($hOutFile)
-
vom Prinzip her möglicherweise so...
C
Alles anzeigen#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <File.au3> Global $gaDropFiles[1], $iDropItem = -1 #Region ### Global $Form1 = GUICreate("", 200, 200, -1, -1, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_ACCEPTFILES, $WS_EX_CONTROLPARENT)) ;$WS_EX_CONTROLPARENT = verschiebt Fenster auch ohne Rahmen GUISetBkColor(0x01A1F7) $FILES_DROPPED = GUICtrlCreateDummy() GUISetState(@SW_SHOW) #EndRegion ### GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC') While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $FILES_DROPPED For $i = 0 To UBound($gaDropFiles)-1 _change_bip($gaDropFiles[$i]) Next EndSwitch WEnd Func _change_bip($sFileName) _ReplaceStringInFile($sFileName, "version 9", "version 7") EndFunc Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam) Local $nSize, $pFileName Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', 0xFFFFFFFF, 'ptr', 0, 'int', 0) ReDim $gaDropFiles[$nAmt[0]] For $i = 0 To $nAmt[0] - 1 $nSize = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', 0, 'int', 0) $nSize = $nSize[0] + 1 $pFileName = DllStructCreate('wchar[' & $nSize & ']') DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', DllStructGetPtr($pFileName), 'int', $nSize) $gaDropFiles[$i] = DllStructGetData($pFileName, 1) $pFileName = 0 Next GUICtrlSendToDummy($FILES_DROPPED, $nAmt[0]) EndFunc
wobei ich noch nicht verstanden habe, warum der String nicht ersetzt wird !?
Edit: Mit einer anderen Testdatei geht es. liegt scheinbar am Dateiformat/Kodierung, mit der die Funktion nicht klar kommt....