Weil du mit
[autoit]If $msg = $GUI_EVENT_CLOSE Or $Msg = $ok Then ExitLoop
[/autoit]
Nur die While 1 schleife verlässt aber nicht die GUI versteckst/löscht
wenn du vor dem exitlook noch ein guisetstate(@SW_HIDE) machst dann funktioniert es auch
Weil du mit
[autoit]If $msg = $GUI_EVENT_CLOSE Or $Msg = $ok Then ExitLoop
[/autoit]
Nur die While 1 schleife verlässt aber nicht die GUI versteckst/löscht
wenn du vor dem exitlook noch ein guisetstate(@SW_HIDE) machst dann funktioniert es auch
Boah sorry aber die Formatierung ist grausam...
Du kannst den vollen Pfad kürzen. Nimm einfach
[autoit]Stringtrimleft()
StringInStr()
Und verwende bei Stringinstr die Occurrance -1 (4ter Parameter)
Herzlich Willkommen und viel Spaß hier im Forum
Leute die was lernen wollen sind hier immer gerne gesehen
Mit ein bisschen basteln gehts auf jeden Fall
Was du brauchst ist eine Listview als Tile View (siehe MSDN)
Nach googln bin ich auf das gestoßen. Damit sollts funktionieren
http://www.autoitscript.com/forum/topic/12…view-additions/
Die Imagelist Funktion wird dafür verwendet eine Liste aus Icons für ein einzelnes Control zu verwenden.
In deinem Beispiel setzt du alle drei Icons für den ersten Button.
Das erste Icon wird im normalen Zustand angezeigt. Das zweite wärend du mit der Maus über dem Button bist (Hover) und das dritte wird angezeigt wenn du den Button gerade drückst. (vgl. Hilfe zu _GUICtrlButton_SetImageList)
Wenn du einfach nur ein Icon setzten willst ist ImageList auch vollkommen "überdimensioniert".
Ein einfaches GUICtrlSetImage() bzw. _GUICtrlButton_SetImage() würde da ausreichen.
Am besten führst du gleich direkt das Makro aus das durch den Buttonclick ausgelöst wird.
Das ginge in etwa so:
Dim $oExcel
$oExcel = ObjCreate("Excel.Application")
With $oExcel.Application
.Visible = True ; gibt an ob excel sichtbar sein soll oder nicht
.Workbooks.Open ("C:\Book1.xlsm"); Voller Pfad zur Datei
.Run("test") ; MacroName
EndWith
Hallo WhiteF und herzlich willkommen im Forum
Warum ist denn alles so unbekannt?^^
Was ist das für eine Anwendung die du steuern willst?
Hast du schonmal versucht mit den erweiterten Fenstertiteln zu arbeiten?
Bzw mit der Class der Controls zu arbeiten hilft meistens auch. Sofern sich das Program überhaupt steuern lässt...
PuReIroNie:
Und was ist wenn man mal ein USB-Stick einsteckt oder ein neues Netzlaufwerk verbindet?
x0r:
Ja hast schon recht, dass es gecrackt wird musst du nicht wirklich befürchten nur weil du im Scriptdir speicherst.
Aber bei solchen kleinen Tools gehen die meisten davon aus sie können sie in einen anderen Order verschieben. Nur blöd wenn dann die serial.txt nicht mitverschoben wird...
Deswegen lieber dort speichern, wo der User nicht mit in Berührung kommt
Also grundsätzlich ist die Diskussion immer die gleiche. Jemand der Autoit gut kennt weiß, dass man sowas immer relativ leicht umgehen kann.
Ich hab auch ein paar kleinere Tools geschrieben und da hab ich immer irgendetwas leichtes verwendet (MAC Adresse prüfen oder sowas).
Außerdem hab ich etwas versucht zu vertuschen dass es in Autoit geschrieben ist (Standard Icon ändern, Tray Menü abändern/ausblenden, Programminformationen ändern, ...)
@UserProfileDir solltest du nur verwenden wenn nur ein bestimmter User auf einem bestimmten Rechner arbeiten darf.
Wenn alle User am Rechner das Programm verwenden dürfen dann kannst du @ComputerName oder sowas nehmen.
Wenn ein User an verschiedenen Rechnern das Program verwenden darf dann brauchst irgendwo eine Zentrale Ablage (FTP, HTML, CIFS oder sonstwas)
Und Vergleichen würde ich nicht mit einer Datei im Scriptpfad sondern irgendwo, wo man seine Settings normalerweise speichert (Registry, @Appdata, ...)
Im Scriptpfad finde ich immer sehr unsauber bzw. fehleranfällig und in dem Fall auch etwas "durchschaubar"
Wie man Remote Schlüssel löscht steht doch in der Hilfe
ZitatEs ist möglich, Registries im Netzwerk zu bearbeiten. Dazu ist "\\Computername\Schlüsselname" zu verwenden. Um diese Funktion verwenden zu können, muss man die entsprechenden Zugriffsrechte besitzen.
Systemrechte braucht man dafür nicht
#Requireadmin eventuell schon
Laufen muss das Program natürlich unter einem User der auf dem Remoterechner Admin ist
Jup YaeroxXO, das ist die Zeile
Die saubere Lösung denke ich wäre mit Begin- und EndUpdate zu arbeiten. Ich frag BugFix mal ob er das nicht in die Udf aufnehmen will.
Du könntest es anpassen indem du Zeile 91 in der UDF durch den 3Zeiler ersetzt
[autoit]
_GUICtrlListView_BeginUpdate($hLV)
GUICtrlSetStyle(_WinAPI_GetDlgCtrlID($hLV), BitOR($iStyle,$LVS_REPORT,$LVS_OWNERDRAWFIXED))
_GUICtrlListView_EndUpdate($hLV)
Hi BugFix,
Zunächst mal: Sehr schöne UDF, die ich auch schon das ein oder andere mal gebrauchen konnte
Schade eigentlich dass sie so unbekannt ist. Ich denke gerade deswegen verzeiht man mir die Leichenschändung^^
Grund warum ich schreibe ist dass es ein Problem gibt, wenn Scrollbalken vorhanden sind.
Die Scrollbalken werden nach einem OwnSelectionAdd nicht mehr angezeigt. (Auch in deinem Beispiel)
Behoben kann es durch ein Begin bzw Endupdate vor und nach Zeile 91
_GUICtrlListView_BeginUpdate($hLV)
GUICtrlSetStyle(_WinAPI_GetDlgCtrlID($hLV), BitOR($iStyle,$LVS_REPORT,$LVS_OWNERDRAWFIXED))
_GUICtrlListView_EndUpdate($hLV)
Edit1 Zur Ergänzung:
Auf das Problem ist Ram3000 gestoßen. Hier der Thread
[ offen ] ListView und Selected Item BGC
Sicher dass sich das Listview nicht besser auslesen lässt?
Mit welchen Befehlen hast dus denn probiert?
Hallo und herzlich Willkommen im Forum
Bitte poste zu Fragen immer dein Script damit wir sehen was du machst.
Sonst können wir nur raten wo das Problem liegt
Du solltest dich schon an den Aufbau einer ini halten...
[Section]
Schlüssel=Wert
Schlüssel bzw werte enthalten keine Zeilenumbrüche und werden durch ein = getrennt
Wenn das nicht so ist dann kommt bei inireadsection auch nichts vernünftiges raus...
Weißt du nicht wann der Cronjob ausgeführt wird?
Damit hättest du ja den Zeitstempel und könntest die Datei auch ganz einfach laden
Ansonsten hast du doch bestimmt auch nen FTP Server laufen oder?
Dann würde ich die FTP Funktionen nutzen
_FTP_Open()
_FTP_Connect()
_FTP_ListToArray()
_FTP_Close()
wget finde ich da etwas übertrieben
Edit: FTP siehe chess
Man kann auch ein neues Thema aufmachen und darin auf das alte verlinken, das hält alles übersichtlicher
in Zeile 34 musst du dann natürlich auch auf den jeweiligen Pfad zugreifen.
Am einfachsten so:
ShellExecuteWait($aIni[$i+1][1], 1)
[/autoit]Du musst nur in der ButtonStart Funktion abfragen welche Checkboxen gesetzt sind und dann die jeweiligen Programme installieren.
So in der Art:
Func Button_Install()
If Guictrlread($Checkbox_Firefox) = 1 Then
RunWait("FirefoxVersion23.0.exe", @WindowsDir, @SW_HIDE)
MsgBox(0, "Firefox", "Firefox wurde installiert")
EndIf
If Guictrlread($Checkbox_Chrome) = 1 Then
RunWait("ChromeStandaloneSetup_28.0b1500.95.exe")
MsgBox(0, "Chrome", "Chrome wurde installiert")
EndIf
If Guictrlread($Checkbox_Opera) = 1 Then
RunWait("Opera_15.0.1147.153_Setup.exe")
MsgBox(0, "Opera", "Opera wurde installiert")
EndIf
; usw
EndFunc