Bei http://www.autoit.de/dokumentation_…x/GUIStyles.htm fehlt welche Datei includet werden muss, damit man die Konstanten bekommt.
Zum Vergleich: http://www.autoitscript.com/autoit3/docs/a…x/GUIStyles.htm
Grüße
Bei http://www.autoit.de/dokumentation_…x/GUIStyles.htm fehlt welche Datei includet werden muss, damit man die Konstanten bekommt.
Zum Vergleich: http://www.autoitscript.com/autoit3/docs/a…x/GUIStyles.htm
Grüße
Naja, du musst halt beim Klick auf das [X] eine andere Funktion als "EXIT" ausführen:
[autoit]GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
[/autoit][autoit][/autoit][autoit]Func _Exit()
GUISetState($deineGUI, @SW_HIDE)
;GUIDelete($deineGUI)
EndFunc
Entweder du versteckst die GUI einfach, falls du sie später nochmal brauchst, kannst du sie einfach wieder auf @SW_SHOW setzen - oder du löschst sie mit GUIDelete.
Dann ist die GUI weg, aber dein Script kann weiterlaufen
mfg
Ja klar. Wenn ich jetzt
[autoit]GUICtrlSetOnEvent($button, "func_logWrite")
[/autoit]
mache, klappt das schon.
Aber was ist, wenn ich jetzt eine Funktion hat, die Parameter braucht? Geht das auch über SetOnEvent?
So meinte ich das
€: Lux, zeig doch noch ein wenig mehr Code, dann kann man dir besser helfen
Hallo,
also wenn du Variablen an Funktionen übergeben willst geht das auch so:
[autoit]Func func_logWirte($logText) ...
[/autoit]Die übergebene Variable kannste dann in deiner Funktion benutzen.
Wenn das ganze jetzt über einen Button ausgelöst werden soll, geht das glaube ich (Achtung: Halbwissen :)) nicht über die Event-Mode, sondern nur über den Messageloop-Modus (wenn falsch: Bitte klärt mich auf :))
Viel wichtiger wäre jetzt mal für mich zu wissen: Wo kommt den dein $logText her?
Du kannst in Funktionen auch auf globale Variablen zugreifen und müsstest auch net unbedingt was übergeben.
mfg
Werds mir die Tage mal anschauen.
Die GUI auf den Screenshots schaut super aus.
GUIs mit Java sind doch ein Graus, da würde ich vorher durchdrehen, bis das so gut aussieht :pinch:
OT:
Ich sag nur:
Wenn du das nicht verstehst , dann hör lieber mit Autoit auf!!!
Manchen stellt sich da halt die Nackenhaare auf (verständlicherweise).
Antivir ist für seine Fehlalarme doch bekannt
Benutzt du evtl. UPX beim Kompilieren? Das soll ja auch ab und an Probleme veruraschen, afaik.
Du könntest evtl., wenn ich dich richtig verstanden hab, dein Programm einfach alle 15min vom Taskplaner ausführen lassen.
Systemsteuerung > Geplante Tasks
#include <IE.au3>
Global $Name = "Berlin" ;Beispiel
$oIE = _IECreate("http://www.meteo24.de/wetter/index.php?go=7&cid=49X2823&design=9&cityName=" & $Name & "&disableflash=1", 1, 1, 0, 1)
_IELoadWait($oIE)
_IEQuit($oIE)
Wenn du nach _IECreate gleich ein _IEQuit machst, beendet er ja sofort darauf den IE wieder, so schnell kann die Seite ja nicht geladen werden.
Probier mal mit LoadWait dazwischen, dann läds auch
Evtl hilft dir das weiter:
http://www.meteo24.de/wetter/Wetterp…Homepage,7.html
http://www.wetteronline.de/homepage/index.html
Ansonsten ist wetteronline.de auch relativ einfach aufgebaut.
Oder hier per RSS-Feed http://www.rssweather.com/wx/de//munich/wx.php
(sofern deine Stadt schon dabei ist)
Grüße,
alfred
Da geb ich dir Recht
Du lädst deine Programme halt per FTP rauf, herunterladen tust du aber per HTTP.
FTP ist ein anderes Protokoll und braucht i.d.R. einen Benutzername und Passwort.
Inetget ist einfach eine Verbindung auf Port 80 (standardmäßig) auf einen WEBServer
Ah, cool.
Solange man nicht auf einen anderen Computer speichert, ist das ne gute Idee
Danke
Hi,
so, mein erstes "größeres" Programm hier
Hintergrund:
Ich hab vor Ewigkeiten Spybot Search & Destroy installiert und diese schöne Liste mit "gefährlichen" Seiten in meine HOSTS-Datei aufgenommen - und schreibgeschützt.
Jetzt muss ich das Ding aber ab und an ändern (VHOSTS für Apache z.B.) - damit ich jetzt nicht immer von Hand die Datei suchen muss, Schreibschutz raus, ändern, Schreibschutz rein, usw., hab ich mir ein kleines Programm gebastelt.
Die meisten werden es wohl nicht brauchen, da man ja nicht so oft an der hosts was ändert, aber wäre cool wenn der ein oder andere mal über den Code fliegen könnte und schön Kritik übt, wie gesagt, mein erstes größeres Prog in Autoit
Ein paar Sachen werde ich noch ändern bzw. ergänzen (nachträgliches Ändern des Backup-Orts z.B....)
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\Icons\bogdangc.deviantart.com\glob-v2.ico
#AutoIt3Wrapper_Res_Description=HOSTS bearbeiten und sichern.
#AutoIt3Wrapper_Res_Fileversion=0.1.0.0
#AutoIt3Wrapper_Res_LegalCopyright=alfred for http://www.autoit.de
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
Opt("GUIOnEventMode", 1)
AutoItSetOption("TrayIconHide", 1)
Const $ERR_INI = "ini"
Const $sIni = @ScriptDir & "\" & @ComputerName & ".ini"
Global $sHostsFolder
Global $sHostsFileName = IniRead($sIni, "Config", "hosts", $ERR_INI)
Global $sFolderBackups = addSlash(IniRead($sIni, "Config", "backup", $ERR_INI))
Global $fFirstStart = True
Global $sHosts, $editHosts, $guiHosts, $guiFirstStart
Global $inputBackups, $inputHostsFile
startProgram()
buildGUI()
; Prüft ob Windows-Version passt, ob die INI-Datei i.O. ist, sowie ob die HOSTS-Datei überhaupt existiert:
Func startProgram()
; Check, ob richtige Windows Version:
If @OSVersion = "WIN_XP" Or @OSVersion = "WIN_2003" Or @OSVersion = "WIN_2000" Or @OSVersion = "WIN_VISTA" Then
$sHostsFolder = @WindowsDir & "\system32\drivers\etc\"
$sHostsFileName = $sHostsFolder & "hosts"
Else
showError("Programm kann nur unter Windows 2000/XP/2003 oder Vista ausgeführt werden.")
_exit()
EndIf
; Checken, ob INI und Einstellungen vorhanden:
If Not FileExists($sIni) Then
firstStart()
ElseIf $sHostsFileName = $ERR_INI Or $sHostsFileName = "" Or $sFolderBackups = $ERR_INI Or $sFolderBackups = "" Then
FileSetAttrib($sIni, "-R")
firstStart() ; INI korrupt? -> Ordner neu abfragen
Else
FileSetAttrib($sIni, "-R")
EndIf
; HOSTS-Datei Schreibschutz entfernen:
FileSetAttrib($sHostsFileName, "-R")
$sHosts = FileRead($sHostsFileName)
If $sHosts = "" Then
showError("Konnte HOSTS-Datei nicht lesen." & @CRLF & "Programm wird beendet.")
_exit()
EndIf
EndFunc ;==>startProgram
; Beim ersten Start werden vom Benutzer Speicherort der HOSTS-Datei, sowie ein Backup-Verzeichnis abgefragt:
Func firstStart()
$sBackupFolder = @MyDocumentsDir
$guiFirstStart = GUICreate("HOSTS - Erster Start", 563, 121, 424, 271)
$labelHostsFile = GUICtrlCreateLabel("Speicherort der hosts-Datei:", 8, 16, 135, 17)
$inputHostsFile = GUICtrlCreateInput($sHostsFileName, 152, 13, 369, 21)
$labelBackups = GUICtrlCreateLabel("Speicherort für Backups:", 8, 54, 121, 17)
$inputBackups = GUICtrlCreateInput($sBackupFolder, 152, 51, 369, 21)
$buSelectHosts = GUICtrlCreateButton("...", 531, 12, 25, 25, 0)
$buSelectBackups = GUICtrlCreateButton("...", 531, 50, 25, 25, 0)
$buOk = GUICtrlCreateButton("OK", 357, 88, 75, 25, 0)
$buCancel = GUICtrlCreateButton("Abbrechen", 445, 88, 75, 25, 0)
GUICtrlSetOnEvent($buSelectHosts, "setHosts")
GUICtrlSetOnEvent($buSelectBackups, "setBackups")
GUICtrlSetOnEvent($buOk, "saveIni")
GUICtrlSetOnEvent($buCancel, "_exit")
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
GUISetState(@SW_SHOW)
While $fFirstStart
Sleep(100)
WEnd
EndFunc ;==>firstStart
; Speichert die INI und beendet die "firstStart"-GUI:
Func saveIni()
$sBackupFolder = addSlash(GUICtrlRead($inputBackups))
$sHostsFile = GUICtrlRead($inputHostsFile)
If $sBackupFolder <> "" And $sHostsFile <> "" And FileExists($sHostsFile) Then
; Backup-Verzeichnis erstellen, falls nicht vorhanden:
If Not FileExists($sBackupFolder) Then
$fCreateBackupFolder = DirCreate($sBackupFolder)
EndIf
IniWrite($sIni, "Config", "hosts", $sHostsFile)
IniWrite($sIni, "Config", "backup", $sBackupFolder)
$sHostsFileName = $sHostsFile
$sFolderBackups = $sBackupFolder
GUISetState($guiFirstStart, @SW_HIDE)
GUIDelete($guiFirstStart)
$fFirstStart = False
Else
showError("Bitte HOSTS-Datei und Backup-Verzeichnis angeben.")
EndIf
EndFunc ;==>saveIni
; Speichert, sofern Änderungen vorgenommen wurden, die HOSTS-Datei:
Func saveHosts()
$sHostsNew = _GUICtrlEdit_GetText($editHosts)
If $sHostsNew <> $sHosts Then
$sHostsFile = FileOpen($sHostsFileName, 2)
If $sHostsFile <> -1 Then
$fFileWritten = FileWrite($sHostsFile, $sHostsNew)
If $fFileWritten <> 1 Then
showError("Konnte Datei nicht schreiben!")
Else
showInfo("Datei gespeichert.")
$sHosts = FileRead($sHostsFileName)
EndIf
FileClose($sHostsFile)
Else
showError("Konnte Datei nicht öffnen!")
EndIf
Else
showInfo("Es wurden keine Änderungen vorgenommen." & @CRLF & "Nicht gespeichert.", "Keine Änderungen")
EndIf
EndFunc ;==>saveHosts
; Startet das Backup:
Func startBackup()
$sToday = @YEAR & "-" & @MON & "-" & @MDAY
$sNewFileNameStart = $sToday & " - " & @ComputerName & " - hosts"
$iCounter = "1"
$sFileExtension = ".txt"
$sNewFileName = addSlash($sFolderBackups) & $sNewFileNameStart & $sFileExtension
While FileExists($sNewFileName)
$sNewFileName = $sFolderBackups & $sNewFileNameStart & " " & $iCounter & $sFileExtension
$iCounter += 1
WEnd
$copy = FileCopy($sHostsFileName, $sNewFileName)
If FileExists($sNewFileName) Then
showInfo("Backup erstellt:" & @CRLF & "Datei: " & $sNewFileName)
FileSetAttrib($sNewFileName, "+R")
Else
showError("Konnte Backup nicht erstellen!")
EndIf
EndFunc ;==>startBackup
; Erstellt die GUI:
Func buildGUI()
; GUI bauen:
$guiHosts = GUICreate("HOSTS", 701, 573, 245, 146)
$labelCurrentHosts = GUICtrlCreateLabel("Hosts:", 6, 14, 40, 17)
$inputCurrentHosts = GUICtrlCreateInput($sHostsFileName, 56, 10, 265, 21, $ES_READONLY)
$labelCurrentBackups = GUICtrlCreateLabel("Backups:", 333, 14, 57, 17)
$inputCurrentBackups = GUICtrlCreateInput($sFolderBackups, 394, 10, 265, 21, $ES_READONLY)
;~ $buChange = GUICtrlCreateButton("...", 667, 8, 25, 25, 0)
$editHosts = _GUICtrlEdit_Create($guiHosts, "", 0, 44, 697, 489)
;~ $editHosts = GUICtrlCreateEdit("", 0, 0, 697, 489)
;~ GUICtrlSetFont(-1, 8, 400, 0, "Courier")
$buEdit = GUICtrlCreateButton("Änderungen speichern", 2, 542, 137, 25, 0)
$buBackup = GUICtrlCreateButton("Backup erstellen", 561, 542, 137, 25, 0)
; Fonts:
GUICtrlSetFont($labelCurrentHosts, 8, 800, 0, "MS Sans Serif")
GUICtrlSetFont($labelCurrentBackups, 8, 800, 0, "MS Sans Serif")
; Edit-Feld setzen:
_GUICtrlEdit_SetText($editHosts, $sHosts)
; Events:
GUICtrlSetOnEvent($buEdit, "saveHosts")
GUICtrlSetOnEvent($buBackup, "startBackup")
;~ GUICtrlSetOnEvent($buChange, "changeHostsFolder")
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
; GUI anzeigen:
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WEnd
EndFunc ;==>buildGUI
; Liest den vom Benutzer eingegeben Speicherort der HOSTS-Datei aus und setzt ihn in das Input-Feld:
Func setHosts()
Local $sHostsSelect = FileOpenDialog("HOSTS-Datei wählen", $sHostsFolder, "Alle (*.*)", 1)
If $sHostsSelect <> "" Then
GUICtrlSetData($inputHostsFile, $sHostsSelect)
EndIf
EndFunc ;==>setHosts
; Liest den vom Benutzer eingegeben Speicherort der Backups aus und setzt ihn in das Input-Feld:
Func setBackups()
Local $sBackupFolder = FileSelectFolder("BACKUP-Verzeichnis wählen", "", 7, @MyDocumentsDir)
If $sBackupFolder <> "" Then
GUICtrlSetData($inputBackups, $sBackupFolder)
EndIf
EndFunc ;==>setBackups
; Fügt, falls notwendig, einen Slash zu einem Pfad hinzu:
Func addSlash($dir)
$length = StringLen($dir)
$check = StringInStr($dir, "\", 0, -1)
If $length <> $check Then
$dir = $dir & "\"
EndIf
Return $dir
EndFunc ;==>addSlash
; Zeigt einen Fehler an:
Func showError($sError, $sTitle = "Fehler")
MsgBox(16, $sTitle, $sError)
EndFunc ;==>showError
; Zeigt eine Info an:
Func showInfo($sInfo, $sTitle = "Information")
MsgBox(64, $sTitle, $sInfo)
EndFunc ;==>showInfo
; Setzt die HOSTS-Datei und die INI auf schreibgeschützt und beendet das Programm:
Func _exit()
FileSetAttrib($sHostsFileName, "+R")
FileSetAttrib($sIni, "+R")
Exit
EndFunc ;==>_exit
Screenshot:
bsp4.JPG
getestet unter Windows XP Pro SP2 32bit und Vista Business 32bit
mfg,
alfred
IniWrite("C:\Programme\asd.ini", "lala", "lulu", "lili")
[/autoit]Er erstellt dann (sofern Rechte passen) eine neue Datei und schreibt da rein
Hmm, also ich DENKE welcher Prozess benutzt wird, ist schwer, es werden ja meistens mehrere Prozesse gleichzeitig "verwendet".
Aber man könnte das aktive Fenster rausfinden.
Evtl. per WinList eine komplette Liste aller Fenster holen und dann per Schleife durchgehen und per WinGetState die Eigenschaften prüfen.
Super, ich danke dir!
Dein Bsp. funzt bei mir auch... hmm...
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <IE.au3>
#include <Word.au3>
buildGUI()
[/autoit] [autoit][/autoit] [autoit]Func buildGUI()
; Settings
Opt("GUIOnEventMode", 1)
; Main GUI:
$guiMain = GUICreate("SytemScheine", 634, 479, 256, 223)
$guiLogo = GUICtrlCreatePic("res\ssp.gif", 1, 0, 631, 55)
; Login:
$labelUser = GUICtrlCreateLabel("Benutzer:", 8, 63, 49, 17)
$inputUser = GUICtrlCreateInput("...", 64, 60, 145, 21)
$labelPwd = GUICtrlCreateLabel("Passwort:", 222, 63, 50, 17)
$inputPwd = GUICtrlCreateInput("...", 278, 60, 145, 21, BitOR($ES_PASSWORD, $ES_AUTOHSCROLL))
$buLogin = GUICtrlCreateButton("Login", 438, 58, 48, 25, 0)
$iconLogin = GUICtrlCreateButton("1", 497, 58, 24, 24, $BS_ICON)
GUICtrlSetImage(-1, "res\loggedout.ico")
; Tabs
$tabs = GUICtrlCreateTab(0, 88, 633, 369)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
; Tab: Neuer Systemschein
$tsNew = GUICtrlCreateTabItem("Systemschein anlegen")
$labelSN = GUICtrlCreateLabel("Seriennummer:", 16, 128, 74, 17)
$inputSN = GUICtrlCreateInput("", 96, 126, 153, 21)
$buCheckSN = GUICtrlCreateButton("Abfragen", 256, 125, 57, 25, 0)
; Tab: Vorhandene Sytemscheine
$tsExisting = GUICtrlCreateTabItem("Vorhandene Systemscheine")
; Menu:
$mItemFile = GUICtrlCreateMenu("Datei")
$mItemClose = GUICtrlCreateMenuItem("Beenden", $mItemFile)
$mItemDB = GUICtrlCreateMenu("Datenbank")
$mItemBackup = GUICtrlCreateMenuItem("DB Backup", $mItemDB)
$mItemOptions = GUICtrlCreateMenu("Optionen")
$mItemInfos = GUICtrlCreateMenu("Info")
GUISetState(@SW_SHOW)
; Events
;GUICtrlSetOnEvent($buLogin, "login")
GUICtrlSetOnEvent($mItemClose, "_Exit")
GUICtrlSetOnEvent($mItemBackup, "test")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
While 1
Sleep(100)
WEnd
EndFunc ;==>buildGUI
[/autoit] [autoit][/autoit] [autoit]Func test()
MsgBox(0, "", "12345")
EndFunc
Func _Exit()
MsgBox("", "", "lala")
Exit
EndFunc ;==>_Exit
Der test()-Aufruf funktioniert auch nicht
Lass ich die Tabs weg, funktionierts. Komisch - jemand ne Idee?
Danke!
Hallo,
ich hab folgendes Menü:
[autoit]
Opt("GUIOnEventMode", 1)
[...]
$mItemFile = GUICtrlCreateMenu("Datei")
$mItemClose = GUICtrlCreateMenuItem("Beenden", $mItemFile)
GUICtrlSetOnEvent($mItemClose, "_Exit")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
Beim Klick aufs X klappt das Beenden auch, beim Klick auf das Menu-Item nicht, es passiert nichts.
Woran liegts?
Danke!
mfg,
Alfred
#Region
#AutoIt3Wrapper_icon=deinicon.ico
#EndRegion
Noch einfacher:
Scite benutzen und dort Extras > Kompilieren
mfg