keiner eine Idee?
Ich hab mal versucht in der Doku was zu finden - erfolglos. Wahrscheinlich wird das erst später (oder nie) veröffentlicht, vorausgesetzt es ist überhaupt möglich.
keiner eine Idee?
Ich hab mal versucht in der Doku was zu finden - erfolglos. Wahrscheinlich wird das erst später (oder nie) veröffentlicht, vorausgesetzt es ist überhaupt möglich.
Musst halt für die unterschiedlichen Ordnertypen einmal machen.
Das hatte ich schon versucht - aber wie ich jetzt bemerkte, war mein Fehler, dass ich über die Bibliotheken zugegriffen habe. Und da ist die Schaltfläche deaktiviert. Man muss sich über den Pfad C:\Users\USERNAME\Pictures reinhangeln - erst dann kann man die Einstellungen übernehmen.
Ich meine seit Windows 11 23H2
Tatsächlich.
- Da ich auch das dunkle Thema verwende, sieht man das auf den ersten Blick gar nicht. Ob nützlich oder nicht ist wohl Geschmackssache.
Da wird immer so viel gebastelt - aber nach wie vor ist es unmöglich für den Explorer eine Standardansicht einzustellen, die für JEDEN Ordner gilt. Ich möchte z.B. immer Listenansicht, alles andere ist für mich wenig übersichtlich. Aber das kann ich einstellen, so oft ich will - im Ordner Bilder werden z.B. immer Symbole angezeigt.
Keiner eine Idee?
Ich stolpere über dein "Tab". Ich hab beim Explorer noch nie Tabs gesehen. ![]()
Die für dich einfachste Lösung wäre _WinAPI_SetParent().
![]()
![]()
- In einem anderen Projekt nutze ich das seit Jahren. Aber irgendwas hat mich hier geritten, das in das Originalfenster zeichnen zu Wollen. ![]()
Na, dann werde ich das mal damit umsetzen - Danke für's "Aufwecken". ![]()
Ich habe jetzt den Code mal etwas verschlankt und mehr strukturiert (vermeide u.A. Mehrfachberechnungen von unveränderlichen Werten).
Jetzt funktioniert das Neuzeichnen nach dem "PopupHost"-Event auch. Nur nach Resizing und Maximize mit Doppelklick muss noch per Mausklick ins Fenster aktiviert werden.
Die Klicks auf die Icon werden jetzt auch ausgewertet. Das erste Icon öffnet die Git-Gui, falls nicht vorhanden wirds da einen Fehler geben.
brauche dazu aber deinen code
So, aber jetzt.
In der zip ist der Code mit Unterverzeichnis ico aus dem die Icon geladen werden. Das Skript bringt beim Start 2 Icon zur Anzeige. Hier das Verhalten bei den Events:
Event | Neu Zeichnen Icon |
| RESTORE | erst nach Klick ins Fenster sichtbar |
| MAXIMIZE Titelleiste Dialog-Button | OK |
| MAXIMIZE Titelleiste DblClick | erst nach Klick ins Fenster sichtbar |
| SIZING | OK |
| PopupHost - Dialog | erst nach Klick ins Fenster sichtbar |
In den Funktionen zum Zeichnen von Status-Icon (#140) und Counter-Icon (#155) setze ich zum Abschluss den Fokus auf das SciTE Fenster, was jedoch nicht denselben Effekt hat, wie ein Klick ins Fenster. Da bei einem weiteren Arbeiten in SciTE sowieso ins Fenster geklickt werden muss, ist das jetzt nicht wirklich dramatisch - nur unschön.
Ich hatte auch probiert WinActivate zu verwenden nach dem Schließen des PopupHost, leider auch wirkungslos.
brauche dazu aber deinen code
Bin nicht mehr am Rechner, morgen wieder.
aber wenn du mein erstes Script anwendest, dann kannst du doch den WinTitle und die HexCodes extrahieren und danach filtern.
Ja klar, habe ich jetzt auch so implementiert:
Func _WinEventProc($_hHook, $_iEvent, $_hWnd, $_idObject, $_idChild, $_iEventThread, $_iEventTime)
Local $PID = WinGetProcess($_hWnd), $sEventProcName = _ProcessGetName($PID)
Select
Case $sEventProcName = 'SciTE.exe'
_CheckSciTE() ; SciTE Handles lesen, Variablen setzen, Prüfung Größenänderung
Case WinGetTitle($_hWnd) = 'PopupHost' And _WinAPI_GetClassName($_hWnd) = 'Xaml_WindowedPopupClass'
_ReDraw(True) ; ohne jede Prüfung neu zeichnen
EndSelect
EndFunc
Das funktioniert soweit auch. Aber für PopupHost muss ich auf Verdacht immer neu zeichnen, da sich eine Relation zu SciTE für mich nicht sicher herstellen lässt.
Nur ein Verhalten ist seltsam:
Bei Events: RESTORE und PopupHost erfolgt das Neuzeichnen erst, wenn ich den Fokus auf das SciTE-Fenster durch Mausklick aktiviere. Ein _WinAPI_SetFocus($gm_SciTE.hWnd) ist erfolglos.
ich hab mir mit obigen funktion die WindowTitle mit ausgegeben .
Jo, damit gehts (CLASS ist übrigens: Xaml_WindowedPopupClass )
Aber keine Chance mit den Standardfunktionen, für die ist das Fenster unsichtbar. ![]()
Der WinTitle für diese neue Win11-Funktion der Fenster Größenänderung ist: "PopupHost"
Woher hast du den? Taucht bei mir nicht auf, weder mit WinList noch WinExists zu finden. ![]()
Ich bin da voll bei Andy. In meinem Firmenumfeld genieße ich den Vorteil, dass ich als einziger im EDV-Bereich agiere und auch Programme für die Firma schreibe. Da ich mit allen Arbeitsgängen vertraut bin, kann ich aus der Sicht des Anwenders programmieren.
Bsp.
Unsere Fa. ist recht klein und sämtliche Buchhaltung geht über ein Steuerbüro. Wir erstellen nur Ausgangsrechnungen und registrieren Zahlungseingänge. Über viele Jahre wurden immer zusätzliche Kopien der Rechnungen ausgedruckt und am Monatsende zum Steuerbüro gebracht. Die durften den Kram (ca. 300-500 Rechnungen pro Monat) dann händisch erfassen.
Ich hab dann mal angefragt, ob deren DATEV-Programm auch den Import von Daten ermöglicht und in welcher Form das sein müsste.
Nach den Anforderungen habe ich dann ein SQL-Query erstellt, zum Export der Monats-RE in eine dbf-Datei. Diese habe ich dann (natürlich mit AutoIt
) in die DATEV-importierbare Form gegossen.
Um hier Fehler auszuschließen, habe ich auch gleich im Vorfeld nach möglichen variablen Größen gefragt und diese dann über eine INI festgelegt.
Das sind z.B. bei vereinzelten Kunden abweichende Werte: KDNr=Buchungskonto;Steuersatz
Das läuft jetzt schon ca. 10 Jahre und hat bestimmt einigen Bäumen das Leben gerettet. ![]()
Meinst Du damit die mit "ToolbarWindow32" benannte, oder die Menüs im "SciTEWindow"?
Ich hab doch extra alle erreichbaren Fensterklassen aufgezählt ("ToolbarWindow32" gehört dazu). Die Menüleiste, wenn du nicht die Lokalisierungsdatei eingefügt hast, sieht das, wie von dir benannt aus:
In meiner SciTE-Version 1.79 sieht das zwar etwas anders aus: "File | Edit | Search | View | Tools | Options | Language | Buffers | Help"
- gehört nicht zu den erreichbaren Fensterklassen.
Wenn ich das richtig verstanden habe, müßte das Basis-Programm "SciTE" mit entsprechenden Ergänzungen nach dem Muster "SciTE_Starter.au3" -> https://github.com/BugFix/AutoIt-…iTE_Starter.au3 in eine neue exe gebracht werden, um dann als angepasste Version z.B. als "SciTE_spez.exe" verwendet werden zu können.
Das könnte man machen - alle Änderungen in der Source vornehmen und ein eigenes SciTE kompilieren. Aber das ist für mich nicht praktikabel.
Ich versuche lieber AddOns zu erstellen, die zusätzliche Funktionalität für die von den meisten Usern genutzte SciTE-Version bringt, aber eben nur wenn jemand dies explizit möchte auch aktiviert wird.
Ein direkter Eingriff in die Menüleiste ist daher nicht realisierbar.
Aber auch die greifbaren Fenster haben ihre Tücken. Du kannst z.B. mit der Toolbar-UDF aus AutoIt einen eigenen Button hinzufügen - aber den bekommst du nur beim Drüberfahren mit der Maus in Umrissen zu sehen und nach dem Neuzeichnen des SciTE Fensters ist er kpl. verschwunden. Man müsste wohl Prepaint und Postpaint Events abfangen und ein Neuzeichnen initialisieren. Da habe ich mich jetzt aber noch nicht reingekniet.
Meine SciTE_Starter.au3 ist eigentlich nur eine Hilfe, um verschieden SciTE-Varianten auszuprobieren ohne sich dabei die SciTEUser.properties zu zerschießen (Es gibt nur einen Pfad für diese Datei, der von jeder (installierten) SciTE-Variante/Version genutzt wird.)
ja hört sich nach einem Kontext der ersten Schreibmaschinen an
Kann auch eine Fehlerinnerung sein, aber ich meine auch diesen Begriff in meinem Schreibmaschinenkurs (vor 45 Jahren) gehört zu haben. ![]()
ich hab mal ein wenig mit diesem "hook" Zeug rumgespielt.
Danke dir, werde ich mir mal zu Gemüte führen.
Ich hatte ganz vergessen, dass ich ja bei meinem Internet Provider einen Onlinespeicher habe. Darauf habe ich mal ein Netzlaufwerk eingerichtet, ergibt dann \Device\1&1MiniRdr\;O:1\1&1\SmartDrive.
Exakt
Vielen Dank für Deine Mühe.
Und jetzt genieße die Jeckenzeit oder geh ins Exil (je nachdem, wo du dich verortest - ich definitiv bei Letzterem
)
Ok bei einem tatsächlichen Netzlaufwerk (auf nen Samba-Server) bei mir bringt mir deine Funktion das:
Wäre das dann in der direkten Adressierung \\nas.lan\adm ?
Nur eine Vermutung: Wenn du ein Netzlaufwerk eingerichtet hast, dann gilt das erst einmal nur für den User.
Stimmt genau, habe gerade mal eine Admin-Konsole geöffnet und versucht in das Laufwerk zu wechseln - wird nicht gefunden.
Das erklärt mir also warum das so ist. Zumindest kann ich das ja mit der Funktion aufdröseln.
Für mich war jetzt nur von Interesse, was passiert, wenn eine tatsächliche Netzlaufwerksverknüpfung durch _WinAPI_QueryDosDevice geschleust wird. Ich vermute mal ähnlich wie \Device\LanmanRedirector\;F:000000000009882e\localhost aber eben nicht mit localhost als Fortführung.
Hi,
wie ich feststellen musste, kommen nicht alle Programme mit Netzlaufwerksverknüpfungen auf lokale Ordner klar.
Ich habe z.B. gemappt: C:\Users\BugFix\Documents\_F auf Laufwerk F:
Ich habe mir nun eine Funktion erstellt, die den korrekten Pfad zurück gibt.
Habe leider keine echten Netzlaufwerke zum Testen, was dabei raus kommt. Wenn ihr bitte mal probieren könnt.
EDIT: Die Funktion ist jetzt so geändert, dass (hoffentlich) alle Mappings aufgelöst werden können.
#include <WinAPIFiles.au3>
; #FUNCTION# =======================================================================================
; Name ..........: _PathGetUnmapped
; Description ...: Resolving network links in paths to absolute paths
; Syntax ........: _PathGetUnmapped($_sPath)
; Parameters ....: $_sPath - The path to be checked.
; Return values .: The resolved path or the original path.
; Author ........: BugFix
; Remarks .......: Requires <WinAPIFiles.au3>
; ==================================================================================================
Func _PathGetUnmapped($_sPath)
If StringLeft($_sPath, 2) = '\\' Then Return $_sPath ; qualified network path
Local $aPath = StringRegExp($_sPath, '([A-Za-z]:)(.+)', 1)
Local $vReturn = _WinAPI_QueryDosDevice($aPath[0])
If StringRegExp($vReturn, '^\\Device\\LanmanRedirector') Then
If StringInStr($vReturn, 'localhost') Then
$vReturn = StringReplace(StringRegExpReplace($vReturn, '\\Device\\LanmanRedirector\\[^\\]+\\localhost\\', ''), '$', ':')
Else
$vReturn = '\' & StringRegExp($vReturn, '(\\Device\\LanmanRedirector\\;[^\\]+)(.+)', 1)[1]
EndIf
Return $vReturn & (UBound($aPath) = 2 ? $aPath[1] : '')
Else
$vReturn = StringRegExp($vReturn, '(\\Device\\[^\\]+\\;[^\\]+)(\\.+)', 1)
EndIf
If IsArray($vReturn) Then
Return '\' & $vReturn[1] & (UBound($aPath) = 2 ? $aPath[1] : '')
Else
Return $_sPath
EndIf
EndFunc
Alles anzeigen