Hi,
Du solltest die GUIs in Funktionen stecken und Dir
[autoit]#include
[/autoit]ansehen ...
Gruß
Greenhorn
Hi,
Du solltest die GUIs in Funktionen stecken und Dir
[autoit]#include
[/autoit]ansehen ...
Gruß
Greenhorn
Hi,
baue bitte mal diese Funktion ein, dann hast Du Gewissheit ...
GUIRegisterMsg ($WM_COMMAND, "WM_COMMAND")
; ...
[/autoit] [autoit][/autoit] [autoit]Func WM_COMMAND ($hwnd, $message, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]If ($lParam and LOWORD($wParam) == $cEdit) Then
[/autoit] [autoit][/autoit] [autoit]; Nachrichten des Eingabefeldes
Switch (HIWORD($wParam))
Case $EN_ERRSPACE
ContinueCase
Case $EN_MAXTEXT
MsgBox (BitOR ($MB_OK, $MB_ICONSTOP), _
$sTitle, "Kapazitätsgrenze erreicht.")
EndSwitch
EndIf
Return $GUI_RUNDEFMSG
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]Func LOWORD($DWORD)
Return BitAND($DWORD, 0xFFFF)
EndFunc
Func HIWORD($DWORD)
Return BitShift($DWORD, 16)
EndFunc
... und um das Limit zu ändern ...
; Textlimit festlegen: 1 MB ANSI; 2 MB Unicode (UTF-16)
GUICtrlSendMsg ($IDC_EDIT, $EM_LIMITTEXT, 1024 ^ 2, 0)
Gruß
Greenhorn
Hi,
#include <Constants.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
Global $IDC_BUTTON1
Global $IDC_EDIT1
Func Test ( )
[/autoit] [autoit][/autoit] [autoit]Local $hWnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$hwnd = GUICreate ("test", 400, 120, -1, -1, BitOR ($WS_CAPTION, $DS_MODALFRAME, $DS_SETFOREGROUND), $WS_EX_TOPMOST)
[/autoit] [autoit][/autoit] [autoit]GUICtrlCreateLabel ("Bitte Passwort eingeben", 20, 20)
[/autoit] [autoit][/autoit] [autoit]$IDC_EDIT1 = GUICtrlCreateInput ("", 20, 40, 360, 22, $ES_PASSWORD)
[/autoit] [autoit][/autoit] [autoit]$IDC_BUTTON1 = GUICtrlCreateButton ("OK", 160, 90, 80, 24, $BS_DEFPUSHBUTTON)
[/autoit] [autoit][/autoit] [autoit]GUISetState (@SW_SHOW, $hwnd)
[/autoit] [autoit][/autoit] [autoit]WinFlash ($hwnd)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While (TRUE)
[/autoit] [autoit][/autoit] [autoit]Switch (GUIGetMsg (FALSE))
[/autoit] [autoit][/autoit] [autoit]Case $IDC_BUTTON1
; Hier der Code zum Auslesen des Inputs (ContinueCase dann entfernen) ...
ContinueCase
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Return 0
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Exit (Test ())
;««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
Gruß
Greenhorn
Hi,
GUIControlCreatePic funktioniert bei mir einwandfrei, das Bild wird skaliert ...
Gruß
Greenhorn
Sei ihr euch sicher, dass es so passt.
Ich bin nämlich genauso wie PokerFace der Meinung, dass es andersrum sein sollte.
Oder liege ich da falsch?
Ja, das ist alles richtig so.
Der Ordner Programme (x86) existiert nicht wirklich, sondern ist ein virtueller welcher.
Und der Ordner SysWOW64 enthält die 32bit Versionen der Systemdateien (WOW64 = Windows On Windows 64).
Gruß
Greenhorn
Meine herzlichsten Glückwünsche, mein Guter ! ![]()
Drücke dir die Daumen, daß dein Master ebenso gelingt.
Lass' dich schön feiern.
Gruß
Greenhorn
Hi,
man kann keine Funktionen dynamisch erzeugen.
Ich habe ein kleines Beispiel geschrieben, wie ich es machen würde.
Vielleicht hilft dir das ja weiter ...
#include <Constants.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
Global $aIniButton
Global $aIniToolTip
Global $aBtnInfo[1][2]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$aIniButton = IniReadSection ("test.ini", "Button")
$aIniToolTip = IniReadSection ("test.ini", "ToolTip")
Func ButtonProc ($id_button)
[/autoit] [autoit][/autoit] [autoit]MsgBox (BitOR ($MB_OK, $MB_ICONASTERISK), _
GUICtrlRead ($id_button) , _
StringFormat ("Button mit der ID %d wurde gedrückt", $id_button))
Return TRUE
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func AutoItMain ( )
[/autoit] [autoit][/autoit] [autoit]Local $hwnd
Local $top = 20
$hwnd = GUICreate ("Demo", 640, 480)
[/autoit] [autoit][/autoit] [autoit]ReDim $aBtnInfo[$aIniButton[0][0] + 1][2]
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $aIniButton[0][0]
[/autoit] [autoit][/autoit] [autoit]$aBtnInfo[$i][0] = GUICtrlCreateButton ($aIniButton[$i][0], 20, $top, 80)
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetImage ($aBtnInfo[$i][0], $aIniButton[$i][1])
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetTip ($aBtnInfo[$i][0], StringFormat ($aIniToolTip[$i][1], 0))
[/autoit] [autoit][/autoit] [autoit]$aBtnInfo[0][0] += 1
$top += 30
Next
GUISetState (@SW_SHOW, $hwnd)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While (TRUE)
[/autoit] [autoit][/autoit] [autoit]$msg = GUIGetMsg (FALSE)
[/autoit] [autoit][/autoit] [autoit]Switch ($msg)
[/autoit] [autoit][/autoit] [autoit]Case $aBtnInfo[1][0] To $aBtnInfo[$aBtnInfo[0][0]][0]
[/autoit] [autoit][/autoit] [autoit]ButtonProc ($msg)
[/autoit] [autoit][/autoit] [autoit]Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Return 0
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Exit (AutoItMain ( ))
[/autoit] [autoit][/autoit] [autoit];«««««««««««««««««««««««««««««««« End Of File «««««««««««««««««««««««««««««««««
[/autoit]Gruß
Greenhorn
Hi,
probiere bitte mal das hier ...
; Waiting for user to close the window
While (TRUE)
Switch (GUIGetMsg( ))
Case $GUI_EVENT_CLOSE
ExitLoop
;Case $msg = $GUI_Button_Home
;_IENavigate ($oIE, "http://localhost/CSS_Button/index.html")
;Hier die Buttons
Case $var_btn[1][0] To $var_btn[UBound ($var_btn) - 1][0]
_screibe( $var_text[$ii][1])
;Bis hier die Buttons
Case $GUI_Button_Stop
_IEAction ($oIE, "stop")
_IEQuit($oIE)
GUIDelete()
Exit
EndSwitch
WEnd
GUIDelete()
[/autoit] [autoit][/autoit] [autoit]Func _screibe($a)
MsgBox(0,0,$a)
EndFunc
Gruß
Greenhorn
Hi,
Wenn es nur Text ist, dann geht's ...
Konsolenausgabe:
>"C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "D:\A1\AutoIt\Temp\NeuTest.au3" /autoit3dir "C:\Program Files (x86)\AutoIt3" /UserParams
+>23:31:36 Starting AutoIt3Wrapper v.2.0.0.3 Environment(Language:0407 Keyboard:00000407 OS:WIN_VISTA/ CPU:X64 OS:X64)
>Running AU3Check (1.54.19.0) from:C:\Program Files (x86)\AutoIt3
+>23:31:36 AU3Check ended.rc:0
>Running:(3.3.6.1):C:\Program Files (x86)\AutoIt3\autoit3_x64.exe "D:\A1\AutoIt\Temp\NeuTest.au3"
--- sText : {\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
{\colortbl ;\red255\green0\blue0;}
{\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\sa200\sl276\slmult1\cf1\lang7\f0\fs22 Hallo Welt!\par
}
+>23:31:47 AutoIT3.exe ended.rc:0
+>23:31:48 AutoIt3Wrapper Finished
>Exit code: 0 Time: 11.793
Alles anzeigen
Gruß
Greenhorn
Außerdem sollte man erklären was die Begriffe:
Nicht-aufzeichnende Gruppe
Aufzeichnende Gruppe, ...
Nicht-aufzeichnende Gruppe bedeutet, daß diese Gruppe nicht in der Rückgabe gespeichert wird ...
In der deutschen Hilfe stehen gegenüber der englischen Hilfe noch die Parameter
(?-i ... ) und
(?i ... ) drin.
Sind diese korrekt?
Wenn diese in der englischen Hilfe nicht mehr drin sind, dann müsste man es mal testen ...
C:\Programme\AutoIt3\include\StringRegExpGUI.au3
Gruß
Greenhorn
Hi,
Paketverwaltung anschmeissen und libgtk2.0-dev in die Suchmaske eingeben.
Es kann sein, daß man evtl. noch mehr Pakete braucht, weiß ich nicht mehr genau.
Sollte das libgtk2.0-dev Paket nicht ausreichen, dann gib einfach "GTK" und "develop" in die Suchmaske ein. Schau dir dann die Beschreibungen der *-dev Pakete für GTK+ an. Sind aber nicht viele und evtl. reicht ja auch schon die libgtk2.0-dev.
Gruß
Greenhorn
Dann hat der angebissene Apfel jetzt auch sein Mike RoweSoft ...
Hallo Greenhorn,
ich wollte gerade dein Skipt unter WinXP SP3 Winodws-XP - Style testen. Klappte leider nicht, Ausgabe Scite-Konsole;
Code>Running:(3.3.6.1):C:\Programme\AutoIt3\autoit3.exe "C:\Programme\AutoIt3\Downloads\Greenhorn\Themed_Ownerdraw.au3" C:\Programme\AutoIt3\Downloads\Greenhorn\Themed_Ownerdraw.au3 (558) : ==> Subscript used with non-Array variable.: Return $aRes[0] Return $aRes^ ERROR ->03:53:04 AutoIT3.exe ended.rc:1 >Exit code: 1 Time: 4.194mfg autoBert
Windows 7 x86: Das gleiche.
Hi,
für x86 Systeme müsst ihr SetWindowLongPtr und GetWindowLongPtr ändern. ![]()
So sollte es auf beiden Architekturen laufen ...
Func GetWindowLongPtr ($hWnd, $nIndex)
Local $aRes
[/autoit] [autoit][/autoit] [autoit]If (@OSArch == "X86") Then
[/autoit] [autoit][/autoit] [autoit]$aRes = DllCall ($user32dll, "LONG", "GetWindowLongW", _
"HWND", $hWnd, _
"INT" , $nIndex)
Else
$aRes = DllCall ($user32dll, "LONG_PTR", "GetWindowLongPtrW", _
"HWND", $hWnd, _
"INT" , $nIndex)
EndIf
Return $aRes[0]
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]Func SetWindowLongPtr ($hWnd, $nIndex, $dwNewLong)
[/autoit] [autoit][/autoit] [autoit]Local $aRes
[/autoit] [autoit][/autoit] [autoit]If (@OSArch == "X86") Then
[/autoit] [autoit][/autoit] [autoit]$aRes = DllCall ($user32dll, "LONG", "SetWindowLongW", _
"HWND", $hWnd, _
"INT" , $nIndex, _
"LONG", $dwNewLong)
Else
$aRes = DllCall ($user32dll, "LONG_PTR", "SetWindowLongPtrW", _
"HWND", $hWnd, _
"INT" , $nIndex, _
"LONG_PTR", $dwNewLong)
EndIf
Return $aRes[0]
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit]Gruß
Greenhorn
Moin,
da ja doch ab und an mal danach gefragt wird, stelle ich hier mal ein Beispielskript vor, wie man visuelle Stile in selbstgezeichneten oder -erzeugten Steuerelementen benutzen kann.
In dem Skript setzen wir das OWNERDRAW-Flag in einer Schaltfläche und zeichnen diese mit dem aktuellen visuellen Stil (sofern visuelle Stile aktiviert sind).
Gruß
Greenhorn
Hi,
dieses Skript hier von Mega sollte Dir weiterhelfen.
Ich habe die SysTray.au3 etwas verändert, damit sie bei mir (Win7 x64) läuft.
Gruß
Greenhorn
Anderer Vorschlag:
2 = Die Markierung der vom Benutzer erzeugten Menüelemente wird bei Anklicken nicht automatisch entfernt
Gruß
Greenhorn
So, habe das Skript nun getestet und die Patzer entfernt ...
Der ursprüngliche Fehler war in dem rekursiven Aufruf in Deiner Funktion zu finden, Volumeman. ![]()
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]$DirZiel = @DesktopDir & "\Ziel"
$DirStart = @DesktopDir & "\Quelle"
_unterordner ($DirZiel, $DirStart)
[/autoit] [autoit][/autoit] [autoit]Func _unterordner ($DirZiel, $DirStart)
[/autoit] [autoit][/autoit] [autoit]Local $search, $file, $iSize, $aFiles[1]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$search = FileFindFirstFile($DirStart & "\*.*")
[/autoit] [autoit][/autoit] [autoit]If ($search == -1) Then _ ; Keine Dateien gefunden.
Return $aFiles
While (TRUE)
[/autoit] [autoit][/autoit] [autoit]$file = FileFindNextFile($search)
[/autoit] [autoit][/autoit] [autoit]If (@error) Then _ ; Keine weiteren Dateien gefunden.
ExitLoop
If (StringInStr(FileGetAttrib($DirStart & '\' & $file), 'D')) Then
[/autoit] [autoit][/autoit] [autoit]; Die gefundene Datei ist ein Ordner, also weitersuchen ...
[/autoit] [autoit][/autoit] [autoit]$aFiles = _unterordner ($DirZiel, $DirStart & '\' & $file)
[/autoit] [autoit][/autoit] [autoit]If ($aFiles[0]) Then
[/autoit] [autoit][/autoit] [autoit]; Das Subverzeichnis enthält Dateien nach unseren Suchkriterien,
; also prüfen wir, ob der Ordner bereits im Zielverzeichnis existiert ...
If (not FileExists ($DirZiel & '\' & $file)) Then
[/autoit] [autoit][/autoit] [autoit]; Es existiert noch kein Zielverzeichnis mit diesem Namen,
; also veschieben wir den ganzen Ordner.
DirCreate ($DirZiel & '\' & $file)
If (DirCopy ($DirStart & '\' & $file, $DirZiel & '\' & $file, 1)) Then _
FileDelete ($DirStart & '\' & $file)
;~ DirMove ($DirStart & '\' & $file, $DirZiel, 1)
Else
; Das Zielverzeichnis existiert bereits, also veschieben wir
; nur die Dateien.
$bSuccess = TRUE
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $aFiles[0]
[/autoit] [autoit][/autoit] [autoit]If (FileCopy ($aFiles[$i], $DirZiel & '\' & $file & '\', 9)) Then
FileDelete ($aFiles[$i])
Else
$bSuccess = FALSE
EndIf
;~ FileMove ($aFiles[$i], $DirZiel & '\', 9)
Next
If ($bSuccess) Then
FileDelete ($DirStart & '\' & $file)
Else
ConsoleWrite ("! Fehler beim Kopieren der Datei(en)" & @CRLF & _
"- Quellordner wird nicht gelöscht!")
EndIf
EndIf
ReDim $aFiles[1]
$aFiles[0] = 0
EndIf
ElseIf (StringCompare (StringRight ($file, 4), ".TXT", 0) == 0) Then
[/autoit] [autoit][/autoit] [autoit]; Die gefundene Datei ist entspricht den Suchkriterien,
; also prüfen wir, ob sie bereits im Zielverzeichnis existiert.
; Wenn ja, dann auf Aktualität prüfen.
If (FileExists($DirZiel & '\' & $file)) Then
[/autoit] [autoit][/autoit] [autoit]If (FileGetTime($DirStart & '\' & $file, 0,1) <> _
FileGetTime($DirZiel & '\' & $file, 0,1)) Then
$iSize = UBound ($aFiles)
ReDim $aFiles[$iSize + 1]
$aFiles[$iSize] = $DirStart & '\' & $file
$aFiles[0] = $iSize
EndIf
Else
$iSize = UBound ($aFiles)
ReDim $aFiles[$iSize + 1]
$aFiles[$iSize] = $DirStart & '\' & $file
$aFiles[0] = $iSize
EndIf
EndIf
WEnd
FileClose($search)
Return $aFiles
EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit]Gruß
Greenhorn
Hi,
rein theoretisch könnte es so funktionieren, wenn ich es richtig verstanden habe ... (ungetestet) ![]()
Ich hoffe es sind nicht zu grobe Patzer drinnen
$DirZiel = "\\Fileserver"
$DirStart = "\\Cluster"
_unterordner ($DirZiel, $DirStart)
[/autoit] [autoit][/autoit] [autoit]Func _unterordner ($DirZiel, $DirStart)
[/autoit] [autoit][/autoit] [autoit]Local $search, $file, $iSize, $aFiles[1]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$search = FileFindFirstFile($DirStart & "\*.*")
[/autoit] [autoit][/autoit] [autoit]If ($search == -1) Then _ ; Keine Dateien gefunden.
Return $aFiles
While (TRUE)
[/autoit] [autoit][/autoit] [autoit]$file = FileFindNextFile($search)
[/autoit] [autoit][/autoit] [autoit]If (@error) Then _ ; Keine weiteren Dateien gefunden.
ExitLoop
If (StringInStr(FileGetAttrib($DirStart & '\' & $file), 'D')) Then
[/autoit] [autoit][/autoit] [autoit]; Die gefundene Datei ist ein Ordner, also weitersuchen ...
[/autoit] [autoit][/autoit] [autoit]$aFiles = _unterordner ($DirZiel & '\' & $file, $DirStart & '\' & $file)
[/autoit] [autoit][/autoit] [autoit]If ($aFiles[0]) Then
[/autoit] [autoit][/autoit] [autoit]; Das Subverzeichnis enthält Dateien nach unseren Suchkriterien,
; also prüfen wir, ob der Ordner bereits im Zielverzeichnis existiert ...
If (not FileExists ($DirZiel & '\' & $file)) Then
[/autoit] [autoit][/autoit] [autoit]; Es existiert noch kein Zielverzeichnis mit diesem Namen,
; also veschieben wir den ganzen Ordner.
DirCreate ($DirZiel & '\' & $file)
DirMove ($DirStart & '\' & $file, $DirZiel & '\' & $file, 1)
Else
; Das Zielverzeichnis existiert bereits, also veschieben wir
; nur die Dateien.
For $i = 1 To $aFiles[0]
FileMove($aFiles[$i], $DirZiel & '\' & $file & '\', 9)
Next
EndIf
EndIf
ElseIf (StringCompare (StringRight ($file, 4), ".TXT", 2)) Then
[/autoit] [autoit][/autoit] [autoit]; Die gefundene Datei ist entspricht den Suchkriterien,
; also prüfen wir, ob sie bereits im Zielverzeichnis existiert.
; Wenn ja, dann auf Aktualität prüfen.
If (FileExists($DirZiel & '\' & $file)) Then
[/autoit] [autoit][/autoit] [autoit]If (FileGetTime($DirStart & '\' & $file, 0,1) <> _
FileGetTime($DirZiel & '\' & $file, 0,1)) Then
$iSize = UBound ($aFiles)
ReDim $aFiles[$iSize + 1]
$aFiles[$iSize] = $DirStart & '\' & $file
$aFiles[0] = $iSize - 1
EndIf
Else
$iSize = UBound ($aFiles)
ReDim $aFiles[$iSize + 1]
$aFiles[$iSize] = $DirStart & '\' & $file
$aFiles[0] = $iSize - 1
EndIf
EndIf
WEnd
FileClose($search)
Return $aFiles
EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit]Alles Gute und herzlichen Glückwunsch zum Burzeltag ! ![]()
LG
Greenhorn