Was genau meinst Du mit "funktioniert nicht"?
Bei mir funktioniert das.
Was genau meinst Du mit "funktioniert nicht"?
Bei mir funktioniert das.
So sollte es gehen:
[autoit]
$download = InetGet("http://user.funpic.de/version.txt", "file.txt", 1)
If $download Then
$read = FileRead("file.txt")
MsgBox(64, "bla", $read)
EndIf
Vielleicht sowas:
#include <GUIConstants.au3>
$out = _InputBox('Bitte Namen eingeben!')
MsgBox(0, '', $out)
Func _InputBox($text)
$OnEvent = Opt('GUIOnEventMode', 0)
$GUI_Input = GUICreate('Inputbox', 400, 200, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
WinSetOnTop('Inputbox', '', 1)
GUICtrlCreatePic('rund.gif', 0, 0, 400, 200)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateLabel($text, 100, 60, 240, 30)
GUICtrlSetColor(-1, '0xffff00')
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 14, 800, 0, 'Times New Roman')
$Input = GUICtrlCreateInput('', 100, 100, 200, 30)
GUICtrlSetFont(-1, 14, 800, 0, 'Times New Roman')
GUICtrlSetBkColor(-1, '0xfffffe')
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Input
ExitLoop
EndSwitch
WEnd
$out = GUICtrlRead($Input)
GUIDelete($GUI_Input)
Opt('GUIOnEventMode', $OnEvent)
Return $out
EndFunc
Für das Beispiel brauchst Du noch das Bild aus dem Anhang.
Kommt darauf an, was in der MsgBox alles angezeigt werden soll (nur Text, Text+Bild) und was für Buttons Du haben willst.
Schreib doch mal, was Dir da so vorschwebt. Für eine universelle MsgBox fehlt mir momentan die Zeit.
Geht nur, wenn Du Dir Deine eigene MsgBox programmierst (eigene Funktion).
Wenn man das Skript im Forum anhängt, muss bei FileInstall das Bild extra angehängt werden.
Ok, bei einer Veröffentlichung (z.B. hier im Forum), wo man das Script weitergibt, da muss auch das Bild mitgeschickt werden. Sonst kann man daraus keine Exe erstellen.
Mir ging es jetzt nur um das funktionieren von FileInstall(), wenn man also das Script nur mal eben testen will.
Edit: Äh, progandy, Dein Link zeigt auf diesen Thread.
Dein Beispiel von ganz oben hätte auch funktioniert, wenn das Script sich ebenfalls im Hauptpfad (z.B. C:\) befunden hätte, denn dann liefert @ScriptDir einen Backslash als letztes Zeichen, also z.B. C:\ (was meiner Meinung nach ein Fehler ist). Einen Workaround für diesen "Fehler" wäre eine kleine Funktion "_AddBacksl()":
[autoit]
#include<GUIConstants.au3>
FileInstall("C:\logo.gif", _AddBacksl(@ScriptDir, "logo.gif"))
GUICreate('Test', 640, 480)
GUICtrlCreatePic(_AddBacksl(@ScriptDir, "logo.gif"), 10, 10)
GUISetState()
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Func _AddBacksl($macro, $path)
If StringRight($macro, 1) <> '\' Then $macro &= '\'
Return $macro & $path
EndFunc
FileInstall() sollte schon funktionieren (auch wenn es "nur" als Script läuft). Du hast aber einen Backslash bei der Pfadangabe vergessen:
Beispiel:
[autoit]
FileInstall("C:\logo.gif", @ScriptDir & "\logo.gif")
GUICreate('Test', 640, 480)
GUICtrlCreatePic(@ScriptDir & "\logo.gif", 10, 10)
Man kann auch den Windows-Taschenrechner nehmen, im Menü auf "Ansicht/Wissenschaftlich" umschalten und z.B. 99999999 [n!] Fakultät rechnen lassen. Bei Mehrkern-Prozessoren den Taschenrechner entsprechend oft starten und die Aufgabe berechnen lassen.
Das irgendwann aufgehende Fenster "Der angeforderte Vorgang kann sehr viel Zeit in Anspruch nehmen..." einfach ignorieren, dann wird im Hintergrund weitergerechnet und die CPU-Auslastung liegt bei 100%.
Vielleicht so:
[autoit]
ControlListView("Konfiguration der Nachrichten-Kanäle","","[CLASSNN:SysListView321]","SelectClear")
Es kommt halt immer darauf an, für wen oder warum man etwas verschlüsselt. In vielen Fällen reicht es aus die Daten mit einem, im Programm versteckten, Password zu verschlüsseln. Wenn man dann beim Compilieren noch den Obfuscator drüberlaufen lässt, wird es für potentielle Angreifer schon verdammt schwer.
Das geht mit USBDLM aber auch. Musst dann allerdings für jede Platte einen Eintrag in die INI-Datei machen.
Oh Mann! Manchmal ist die Lösung sooo einfach...
Man braucht gar kein AutoIt-Script. Die ursprüngliche Idee mit USBDLM war schon richtig. Ich hätte mir nur die Kommandozeilen-Parameter von TrueCrypt mal durchlesen sollen. Einfach "/l" weglassen und es wird der nächste freie Buchstabe genommen.
Die Lösung: Einfach diese Zeilen in die "USBDLM.ini" einfügen:
;Laufwerksbuchstaben entfernen, ist eh nutzlos
[DriveLetters10]
DeviceType=TrueCrypt
Letter=-
[OnArrival10]
DeviceType=TrueCrypt
open=C:\Programme\TrueCrypt\TrueCrypt.exe /v %PartitionName% /q /a
Alles anzeigen
Dann wird beim einstecken eines TrueCrypt-Laufwerks nach dem Password gefragt und das Laufwerk wird mit dem nächsten freien Buchstaben gemountet. Funktioniert auch mit mehreren Laufwerken.
Schau Dir mal _StringEncrypt() an.
Äh? Wie geht das denn? Ein Label für ein "unformatiertes" Laufwerk?
Ich habe meinen USB-Stick mit TrueCrypt komplett als Laufwerk verschlüsseln lassen und wenn der nur eingesteckt ist, also noch nicht mit TrueCrypt gemountet, dann hat der kein Label und ich kann das auch nicht ändern. Laufwerksbuchstabe ja, aber kein Label und keine Seriennummer.
Es reicht das 0x in Anführungszeichen zu setzen:
[autoit]
$R = 127
$G = 10
$B = 56
$str2 = "0x" & Hex($R,2) & Hex($G,2) & Hex($B,2)
GUICreate("test")
GUISetBKColor($str2)
GUISetState()
msgbox(0,'',$str2)
Weil es mich interessiert hat, habe ich mich mal rangesetzt und versucht so ein Script zu schreiben, aber es ist etwas komplizierter als ich dachte, weil ein verschlüsseltes (noch nicht gemountetes) TC-Laufwerk von Windows nicht als Datenträger erkannt wird und somit auch keine Seriennummer bekommt, die man mit DriveGetSerial() auslesen könnte. Man könnte die Funktion von Bugfix " _GetMountedUSB_Drives()" etwas abgeändert einsetzen, aber die erkennt externe Festplatten nur, wenn sie als Wechseldatenträger eingebunden werden.
Ich bin jetzt noch ein wenig am experimentieren. Mal sehen, ob ich es hinkriege...
Du zählst ja nur in Sekundenschritten. Bei z.B. 8.2349 sek würde Dein Script also bis 9 zählen.
Benutze statt Deiner eigenen Zählschleife in _Start() lieber TimerInit() und zur abfrage dann TimerDiff().
Das hat BugFix doch bereits geschrieben (steht auch in der Hilfe): Beim Random-Befehl den letzten Parameter auf 0 setzen oder ganz weglassen.