Kleine Änderungen, s. Post #1
Beiträge von BugFix
-
-
Schau dir in der GuiListview.au3 die Funktion _GUICtrlListView_SortItems an - dort diehst du genau, die Verwendung.
Beim klick auf die Spalte wird nochmal in die selbe Richtung sortiert, erst beim zweiten Klick wechselt die Sortierung.
Hättest du gemacht, was ich vorgeschlagen habe, würdest du das Problem auch erkennen. Du mußt zuerst den aktuellen Status (Sortierrichtung) auslesen und diesen dann einfach mit BitXOr switchen - ganz genau so, wie es in der benannten Funktion auch durchgeführt wird.
-
Tipp:
Schau dir in der GuiListview.au3 die Funktion _GUICtrlListView_SortItems an - dort diehst du genau, die Verwendung. -
Gibt es eine Möglichkeit beim starten des Programms die Sortierungspfeile in die Spaltenüberschrift zu bekommen?
Auch hier hilft die Hilfe: _GUICtrlHeader_SetItemFormat
-
Das scheint nicht dokumentiert zu sein.
Wenn man lesen kann schon:Zitat$fNumbers [optional] Behandelt numerische Strings als Zahlen
Default werden die numerischen Strings als Zahlen betrachtet, also mußt du auf False setzen.

-
Nochwas: Im Code steht der Pfad C:\Program Files\K-Meleon1.6.0_Beta2_en-US\k-meleon.exe, der bei mir aber gar nicht existiert.
Wer lesen kann ist klar im Vorteil.
Zitat(die Befehlszeile in Run ist auf meinen Browser zugeschnitten, für die Darstellung der Funktionsweise aber nicht wichtig)
Habe diesen Hinweis jetzt rot eingefärbt.
-
Danach läuft es zwar aber der von dir versprochene Effekt mit dem Hinweistext bleibt aus. Das Input ist bei mir unter XP SP3 sofort weis und der Hineistext fehlt,
Ich habe es jetzt mal unter XP getestet - funktioniert, wie gewollt:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Allerdings ist bei mir ein komischer Effekt aufgetreten.
Wenn man etwas eingibt, und man dann die eingegebenen Zeichen löscht, und neues eingibt, erscheinen beim mehrmaligen wiederholen zuvor eingegebene Zeichen, wenn man Backslash drückt..OK, war bei mir zwar nicht sichtbar - sollte aber mit einer jetzt eingefügten Änderung ausbleiben.
-
Ihr kennt ja sicher die Lösung um grauen Infotext in einem Input anzeigen zu lassen.
Der Nachteil war, dass dieses Input nicht den Fokus haben darf, damit dieser Text gezeigt wird.
Ich habe hier mal eine Lösung erstellt, die das umgeht.
Zwar hat das Input den Fokus nicht wirklich, aber optisch entsteht der Eindruck, als ob das Input den Fokus hat (das Caret blinkt am Inputanfang vor dem grauen Infotext). Der User muß auch nicht erst in das Input klicken, sondern kann sofort schreiben. Mit dem ersten geschriebenen Zeichen findet dann der Fokuswechsel zum tatsächlichen Input statt.
Falls der Inhalt des Input gelöscht wird, erscheint sofort wieder der graue Infotext.Hier das Bsp. (die Befehlszeile in Run ist auf meinen Browser zugeschnitten, für die Darstellung der Funktionsweise aber nicht wichtig):
Edit: Der von Fresapore beschriebene Effekt sollte jetzt nicht mehr auftreten.
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>$hGui = GUICreate('Web Application', 300, 30);, @DesktopWidth-310, @DesktopHeight-60)
[/autoit] [autoit][/autoit] [autoit]
$cDummy = GUICtrlCreateInput('', 8, 6, 1 , 20)
$cIn = GUICtrlCreateInput('', 5, 5, 250, 20)
GUICtrlSendMsg($cIn, 0x1501, 0, "Bitte Web-Adresse oder Suchtext eingeben")
$btSearch = GUICtrlCreateButton('?', 255, 5, 20, 20)
$btLink = GUICtrlCreateButton('>', 275, 5, 20, 20)
GUISetState()
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")While 1
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case -3
Exit
Case $btSearch
$s2Search = GUICtrlRead($cIn)
If $s2Search <> '' Then ShellExecute("http://www.google.de/search?q=" & $s2Search)
Case $btLink
$sLink = GUICtrlRead($cIn)
If $sLink <> '' Then Run('"C:\Program Files\K-Meleon1.6.0_Beta2_en-US\k-meleon.exe" ' & '"' & $sLink & '"')
EndSwitch
WEndFunc WM_COMMAND($hWnd, $iMsg, $iwParam)
[/autoit]
If BitShift($iwParam, 16) = 0x300 Then
If BitAND($iwParam, 0xFFFF) = $cDummy Then
GUICtrlSetData($cIn, GUICtrlRead($cDummy))
GUICtrlSetData($cDummy, '')
ControlFocus($hWnd, '', $cIn)
ElseIf GUICtrlRead($cIn) = '' Then
ControlFocus($hWnd, '', $cDummy)
EndIf
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND -
oder fehlt immernoch (
) die vorgeschlagene Option über die Treiber ID zwischen den ev. mehreren Cams zu wechseln.
Glasklar erkannt. Aber ich werde keinen Code schreiben, den ich mangels Hardware nicht testen kann.
-
Einige Änderungen:
- AVI-Aufzeichnung möglich (Anwendung friert nicht mehr ein)
- Konstantendatei ergänzt
- neues Bsp.s. Post #1
-
Hab mich mal kurz belesen.
Also so, wie du es skizziert hast, ist es wenig sinnvoll. Am letzten Fernseher in der Reihenschaltung hast du dann nur noch ein Schei..signal.
Bei Kabel brauchst du einen 4-fach Verteiler (evtl. mit integriertem Verstärker) am Eingang (der spuckt das Signal dann an allen Ausgängen gleich gut aus). -
[OT]
Noch kein Feedback oder Vorschläge?
Du postest 21:30 Uhr und pushst deinen Thread am Folgetag um 7:30 Uhr wegen mangelnden Feedbacks!
Bist du so geil nach Lobhudelei und Anerkennung, dass du nicht abwarten kannst bis im normalen Zeitablauf jemand dein Skript begutachtet?
Übrigens ist es förderlich das Skript nicht nur anzuhängen, sondern auch im Thread zu posten. Ich persönlich lade nicht ein Skript herunter, nur um mal einen Blick drauf zu werfen. Wozu haben wir den solch gutes Online-Syntaxhighlighting? Warum soll ich da ein Skript noch extra in den Editor laden?
[/OT] -
habe ne 4 Raumwohnung und in die Räume soll überall TV angeschlossen werden.
Das heißt, in jedem Zimmer wird ein anderes Programm geschaut. Also ist erst mal wichtig, dass du von der Signalquelle (die du nicht erwähnst) mit jeweils eigenem Signalkabel zu den Endstellen verbindest.
Bei Empang über Satellit brauchst du ein Quad-LNB, sodass an jedem Anschluß zeitgleich eine unterschiedliche Empfangsebene genutzt werden kann (Horizontal Low, Horizontal High, Vertikal Low, Vertikal High).
Mit Kabel-TV kenn ich mich nicht aus, ich vermute da gibt es dann spezielle Verteiler.
Verstärker solltest du dir nicht antun. Sind in den meisten Fällen totaler Unfug und werden in der Regel nur verbaut um die Rechnung hochzutreiben. Lieber etwas mehr Geld in vernünftiges Kabel investieren und auf eine ordentliche Verlegung achten! (Niemals knicken oder in Kabelkanälen rechtwinklig von waagerechten auf senkrechten Kanal wechseln)
Also der Baumarkt sollte auf keinen Fall dein Einkaufsziel sein.
Wofür aber sollen die T-Stücke gut sein? Du kannst (wie oben beschrieben) das Signal nicht einfach abzweigen und weiterleiten, wie bei einem Stromverteiler.
Edit: Es gibt zwar (z.B. in Mehrfamilienhäusern verbaute) Einkabelsysteme, aber deren Installation benötigt wesentlich mehr Hardware, da alle Empangsebenen in eine Ebene geswitcht werden. Da kannst du mal locker 1.000 € für lassen.

-
Gibt es in Scite eigentlich eine Möglichkeit den Ordner zu öffnen in dem sich das Script befindet.
Was genau möchtest du dort? (Datei/neu/öffnen/speichern(unter) nutzt perse diesen Pfad bereits)
Ein Explorer-Fenster öffnen mit dem aktuellen Skriptverzeichnis? Das sollte kein großer Aufwand sein, das in das Kontextmenü einzuarbeiten (LUA sei Dank :D). Also gib Bescheid, wie du es dir vorstellst, dann setz ich mich die Tage mal ran. -
Danke,
damit klappt es wieder - wobei der 3.te Schlüssel nicht in HKCU sondern ebenfalls in HKLM ist.
Und damit wir AutoIt alle Ehre machen, das ganze als Mini-Skript:
[autoit]Local $sPathIcon = 'C:\Windows\System32\Empty.ico' ; <== Euer Pfad zum Icon
[/autoit]
Local $aReg[3][4] = [['HKCR\lnkfile', 'IsShortcut','REG_SZ', ''], _
['HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons','29','REG_SZ',$sPathIcon], _
['HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer','link','REG_BINARY',0x00000000]]
Local $value
For $i = 0 To 2
$value = RegRead($aReg[$i][0], $aReg[$i][1])
If @error Or $value <> $aReg[$i][3] Then RegWrite($aReg[$i][0], $aReg[$i][1], $aReg[$i][2], $aReg[$i][3])
Next -
Mich hat es schon immer genervt, dass in Windows standardmäßig keine Funktion enthalten ist, den kpl. Pfad einer markierten Datei im Explorer auszugeben.
Da ich das jedoch häufig verwende und keine Lust habe mir für diese eine Funktion ein extra Tool zu installieren, habe ich selbst eine Anwendung dafür erstellt.
Damit es nicht zu "nackig" ist, besteht folgender Funktionsumfang:
Kopiere in Zwischenablage:
- den/die kompletten Dateipfad(e) der markierten Datei(en)
- nur den/die Dateinamen
- nur den Ordnerpfad
- die Größe(n) der markierten Datei(en) ==> Ausgabe: Dateiname @TAB Dateigröße (in Bytes)Dank eurer Hilfe habe ich auch den richtigen Registryschlüssel gefunden um das Skript im Kontextmenü eintragen zu lassen.

Und hier nun das Produkt, Einsatz natürlich nur kompiliert möglich (Es sei denn ihr tragt in der Registry den AutoIt3.exe - Aufruf mit dem Skript als Parameter ein, aber bin mir grad nicht sicher, ob _Singleton dann auch wirkt).
Explorer_GetSelected(1.0).au3
[autoit]
[/autoit] [autoit][/autoit] [autoit]
; ===============================================================
; == Registrieren im Kontextmenü des Explorers für alle Dateien
; == Schlüssel: HKEY_CLASSES_ROOT\*\shell\CMD
; == Wert: (Standard) = "Name_des_Menüeintrages"
; == Schlüssel: HKEY_CLASSES_ROOT\*\shell\CMD\COMMAND
; == Wert: (Standard) = "Pfad_zum_kompilierten_Skript"
; ===============================================================#Region - TimeStamp
[/autoit] [autoit][/autoit] [autoit]
; 2011-09-11 13:37:20 v 1.0
#EndRegion - TimeStamp
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#Include <Misc.au3>_Singleton(@ScriptName) ; == sonst erfolgt Skriptaufruf für jede markierte Datei
[/autoit] [autoit][/autoit] [autoit]Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]
Local $aDeskSize[2] = [@DesktopWidth,@DesktopHeight]
Local $aMPos = MouseGetPos()
Local $x = $aMPos[0], $y = $aMPos[1]
Local $iWGUI = 120, $iHGUI = 85
If $x + $iWGUI > $aDeskSize[0] Then
$x = $aDeskSize[0] - $iWGUI
EndIf
If $y + $iHGUI > $aDeskSize[1] Then
$y = $aDeskSize[1] - $iHGUI
EndIf
Local $GUI = GUICreate('', $iWGUI, $iHGUI, $x, $y, BitOR($WS_POPUP,$WS_BORDER))
GUISetOnEvent($GUI_EVENT_CLOSE, '_close')
Local $cLV = GuiCtrlCreateListView('LV', 0, 0, $iWGUI, $iHGUI, BitOR($LVS_NOCOLUMNHEADER,$LVS_SINGLESEL), BitOR($LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT))
_GUICtrlListView_SetColumnWidth(GUICtrlGetHandle($cLV), 0, $LVSCW_AUTOSIZE_USEHEADER)
Local $cFull = GUICtrlCreateListViewItem('kpl. Dateipfade', $cLV)
GUICtrlSetOnEvent(-1, '_OnClick')
Local $cFile = GUICtrlCreateListViewItem('Dateinamen', $cLV)
GUICtrlSetOnEvent(-1, '_OnClick')
Local $cPath = GUICtrlCreateListViewItem('Pfadname', $cLV)
GUICtrlSetOnEvent(-1, '_OnClick')
Local $cSize = GUICtrlCreateListViewItem('Dateigrößen', $cLV)
GUICtrlSetOnEvent(-1, '_OnClick'); == Markierte Datei(en) auslesen
[/autoit] [autoit][/autoit] [autoit]
Global $aSelected = _ActiveExplorer_GetFilesSelected()
Switch $aSelected[0]
Case 0
Exit MsgBox(0, 'Achtung', 'Keine Datei ausgewählt im Ordner' & @CRLF & $aSelected[1])
Case 1
GUICtrlSetData($cFull, 'kpl. Dateipfad')
GUICtrlSetData($cFile, 'Dateiname')
GUICtrlSetData($cSize, 'Dateigröße')
EndSwitchGUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(50)
WEndFunc _close()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _OnClick()
[/autoit] [autoit][/autoit] [autoit]
Local $sRet = ''
Switch @GUI_CtrlId
Case $cFull
For $i = 2 To $aSelected[0]+1
$sRet &= $aSelected[1] & '\' & $aSelected[$i] & @CRLF
Next
Case $cFile
For $i = 2 To $aSelected[0]+1
$sRet &= $aSelected[$i] & @CRLF
Next
Case $cPath
$sRet = $aSelected[1]
Case $cSize
For $i = 2 To $aSelected[0]+1
Local $iSize = FileGetSize($aSelected[1] & '\' & $aSelected[$i])
$sRet &= $aSelected[$i] & @TAB & $iSize & @CRLF
Next
EndSwitch
ClipPut($sRet)
_close()
EndFunc;===============================================================================
[/autoit]
; Function Name....: _ActiveExplorer_GetFilesSelected
; Description......: Erstellt ein Array mit
; - Anzahl der markierten Dateien
; - dem Pfad des aktiven Explorerfensters und
; - dem/den Pfad/en der markiert/en Datei/en
; Parameter(s).....: keine
; Requirement(s)...: offenes Explorerfenster
; Return Value(s)..: Array mit den Daten, $a[0] = Anzahl, $a[1] = Ordnerpfad, $a[2..] = Dateiname
; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
;===============================================================================
Func _ActiveExplorer_GetFilesSelected()
Local $oShell = ObjCreate("Shell.Application")
Local $oExplorer, $sPath, $oFolderView, $iCount, $n = 2
For $i = 0 To $oShell.Windows.Count - 1
$oExplorer = $oShell.Windows($i)
$sPath = StringReplace(StringReplace(StringTrimLeft($oExplorer.LocationURL, 8), '%20', ' '), '/', '\')
If WinGetTitle('[ACTIVE]') = $sPath Then ExitLoop
Next
$oFolderView = $oExplorer.Document.SelectedItems()
$iCount = $oFolderView.Count
Local $aOut[$iCount +2]
$aOut[0] = $iCount
$aOut[1] = $sPath
If $iCount = 0 Then
ReDim $aOut[3]
$aOut[2] = 'NO FILE SELECT'
Else
For $oFolderItem In $oFolderView
$aOut[$n] = $oFolderItem.Name
$n += 1
Next
EndIf
Return $aOut
EndFunc ; ==>_ActiveExplorer_GetFilesSelected -
OK, Danke.
Habs jetzt im Pfad HKEY_CLASSES_ROOT\* eingetragen und läuft.
Den Eintrag bei den Ordnern habe ich wieder entfernt, das kann ja Windows mit Bordmitteln. -
Du hast zwar versucht in deinem Skript eine Struktur unterzubringen - diese ist jedoch nur schwer zu lesen.
Und den Erfolg der Funktion "GUISetOnEvent" abzufragen halte ich für deutlich übertrieben (Welchen Sinn macht das Skripten, wenn du selbst native Funktionen in Frage stellst. Es sei denn du traust dir nicht zu korrekte Event- und Funktionsnamen einzutragen. ;)).
Bau mal dein Skript in etwa so auf:
- Includes, Optionen
- Variablen Deklarationen
- GUI1 erstellen mit allen Controls
- zugehörige Events setzen
dann dasselbe mit allen weiteren GUI.
- Hauptschleife des Skripts erstellen
- alle im Skript erforderlichen Funktionen erstellen
Anderenfalls ist es (wie jetzt bei dir) nur schwer nachvollziehbar, was wann wo passiert. Es ist dann wie beim Versuch Spaghetti-Code zu lesen - man muß hin- und herspringen. -
Hi,
ich hatte bisher zum Verdecken der Verknüpfungspfeile in Win 7 diese Lösung verwendet.
Aber scheinbar wurde wohl mit dem letzten Windows-Update eine Veränderung im System vorgenommen. Denn jetzt sind die Link-Icon mit einem schwarzen Quadrat bedeckt. Ich vermute, dass es am Update liegt, da ich keinen anderen zeitlichen Zusammenhang zu Veränderungen an meinem Rechner habe. (Da ich mich aber im Normalfall nicht abmelde, sondern nur in den Energiesparmodus schalte, kann ich das nicht mit Sicherheit bestimmen).
Ist das bei euch auch der Fall - und hat evtl. jemand eine Alternative? -
Diese Doku könnte als Ergänzung zur AutoIt-Hilfe dienen. Zuvor sollte jedoch eine Überprüfung durch einen der AutoIt-Macher aus dem deutschen Sprachraum stattfinden
Nun, dazu haben meine Vorredner schon das Wesentliche gesagt.
Eine Fehlinterpretation deinerseits betreff der Events ist mir beim Überfliegen aber sofort ins Auge gefallen:ZitatWill man ein normales OnClick-Ereignis auf das GUI auswerten, kommt man mit
GUISetOnEvent($Form1, "GUI_OnClick")
nicht zum Erfolg. Offensichtlich wird dieses „GUI_OnClick“-Event nicht unterstützt!$Form1 ist kein Event! Die Events findest du in der Hilfe aufgelistet. Das hier zutreffende wäre: $GUI_EVENT_PRIMARYUP (man könnte auch .._DOWN verwenden, das Loslassen der Maustaste auszuwerten ist jedoch sinnvoller).
