Beiträge von Oscar
-
-
Mit GUIRegisterMsg bekommst Du auch heraus, welches Input-Control gerade den Focus besitzt:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#Include <WinAPI.au3>
#include <IE.au3>
#include <StaticConstants.au3>
#include <Misc.au3>
#include <Array.au3>
;~ #include <adfunctions.au3>
#include <GUIListBox.au3>
#Include <Constants.au3>#Region ### START Koda GUI section ### Form=\\wetp030a\uid67481$o$\scripte\source\-=project=-\finder\gui\frmfinder_v2.kxf
[/autoit] [autoit][/autoit] [autoit]
$frmFinder = GUICreate("Finder", 233, 183, -1, -1, BitOR($WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS))
WinSetTrans($frmFinder,"",1)
$txtLeo = GUICtrlCreateInput("search dictLeo...", 5, 154, 191, 21)
$txtLeo_Trans = _GuiCtrlMakeTrans(-1,175)
$cmdLeo = GUICtrlCreateButton("(Not allowed)", 201, 149, 26, 26, BitOR($BS_FLAT,$BS_BITMAP))
$cmdLeo_Trans = _GuiCtrlMakeTrans(-1,175)
GUICtrlSetImage(-1, "", 0)
$txtIntranet = GUICtrlCreateInput("search IntraNet...", 5, 130, 191, 21)
$txtIntranet_Trans = _GuiCtrlMakeTrans(-1,175)
$cmdIntranet = GUICtrlCreateButton("(Not allowed)", 201, 125, 26, 26, BitOR($BS_FLAT,$BS_BITMAP))
$cmdIntranet_Trans = _GuiCtrlMakeTrans(-1,175)
GUICtrlSetImage(-1, "", 0)
$txtUser = GUICtrlCreateInput("search User...", 6, 105, 191, 21)
$txtUser_Trans = _GuiCtrlMakeTrans(-1,175)
$cmdUser = GUICtrlCreateButton("(Not allowed)", 201, 100, 26, 26, BitOR($BS_FLAT,$BS_BITMAP))
$cmdUser_Trans = _GuiCtrlMakeTrans(-1,175)
GUICtrlSetImage(-1, "", 0)
$txtLocal = GUICtrlCreateInput("search Local...", 5, 80, 191, 21)
_GuiCtrlMakeTrans(-1,175)
$cmdLocal = GUICtrlCreateButton("(Not allowed)", 201, 75, 26, 26, BitOR($BS_FLAT,$BS_BITMAP))
_GuiCtrlMakeTrans(-1,175)
GUICtrlSetImage(-1, "", 0)
$txtWiki = GUICtrlCreateInput("search Wiki...", 6, 55, 191, 21)
_GuiCtrlMakeTrans(-1,175)
$cmdWiki = GUICtrlCreateButton("(Not allowed)", 201, 50, 26, 26, BitOR($BS_FLAT,$BS_BITMAP))
_GuiCtrlMakeTrans(-1,175)
GUICtrlSetImage(-1, "", 0)
$txtGoogle = GUICtrlCreateInput("search Google...", 5, 30, 191, 21)
_GuiCtrlMakeTrans(-1,175)
$cmdGoogle = GUICtrlCreateButton("(Not allowed)", 201, 25, 26, 26, BitOR($BS_FLAT,$BS_BITMAP))
_GuiCtrlMakeTrans(-1,175)
GUICtrlSetImage(-1, "", 0)
GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
$Label1 = GUICtrlCreateLabel("", 0, 0, 222, 165,"",$GUI_WS_EX_PARENTDRAG)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlCreateGroup("", -99, -99, 1, 1)
TraySetClick("9")
;$displayitem = TrayCreateItem("Anzeige")
$exititem = TrayCreateItem("Beenden")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
WEndFunc MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local $nID = BitAND($wParam, 0x0000FFFF)
Switch $nID
Case $txtLeo
ToolTip('Leo')
Case $txtIntranet
ToolTip('Intranet')
Case $txtUser
ToolTip('User')
Case $txtLocal
ToolTip('Local')
Case $txtWiki
ToolTip('Wiki')
Case $txtGoogle
ToolTip('Google')
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>MY_WM_COMMAND#Region ### Transparency ######################################################################################################
[/autoit] [autoit][/autoit] [autoit];===============================================================================
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;
; Function Name: _WinAPI_SetLayeredWindowAttributes
; Description:: Sets Layered Window Attributes:) See MSDN for more informaion
; Parameter(s):
; $hwnd - Handle of GUI to work on
; $i_transcolor - Transparent color
; $Transparency - Set Transparancy of GUI
; $isColorRef - If True, $i_transcolor is a COLORREF( 0x00bbggrr ), else an RGB-Color
; Requirement(s): Layered Windows
; Return Value(s): Success: 1
; Error: 0
; @error: 1 to 3 - Error from DllCall
; @error: 4 - Function did not succeed - use
; _WinAPI_GetLastErrorMessage or _WinAPI_GetLastError to get more information
; Author(s): Prog@ndy
;
; Link : @@MsdnLink@@ SetLayeredWindowAttributes
; Example : Yes
;===============================================================================
;
Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
If Not $isColorRef Then
$i_transcolor = Hex(String($i_transcolor), 6)
$i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
EndIf
Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
Select
Case @error
Return SetError(@error, 0, 0)
Case $Ret[0] = 0
Return SetError(4, _WinAPI_GetLastError(), 0)
Case Else
Return 1
EndSelect
EndFunc ;==>_WinAPI_SetLayeredWindowAttributesFunc _GuiCtrlMakeTrans($iCtrlID,$iTrans=255)
[/autoit]
Local $pHwnd, $nHwnd, $aPos, $a
$hWnd = GUICtrlGetHandle($iCtrlID);Get the control handle
If $hWnd = 0 then Return SetError(1,1,0)
$pHwnd = DllCall("User32.dll", "hwnd", "GetParent", "hwnd", $hWnd);Get the parent Gui Handle
If $pHwnd[0] = 0 then Return SetError(1,2,0)
$aPos = ControlGetPos($pHwnd[0],"",$hWnd);Get the current pos of the control
If @error then Return SetError(1,3,0)
$nHwnd = GUICreate("", $aPos[2], $aPos[3], $aPos[0], $aPos[1], 0x80000000, 0x00080000 + 0x00000040, $pHwnd[0]);greate a gui in the position of the control
If $nHwnd = 0 then Return SetError(1,4,0)
$a = DllCall("User32.dll", "hwnd", "SetParent", "hwnd", $hWnd, "hwnd", $nHwnd);change the parent of the control to the new gui
If $a[0] = 0 then Return SetError(1,5,0)
If NOT ControlMove($nHwnd,'',$hWnd,0,0) then Return SetError(1,6,-1);Move the control to 0,0 of the newly created child gui
GUISetState(@SW_Show,$nHwnd);show the new child gui
WinSetTrans($nHwnd,"",$iTrans);set the transparency
If @error then Return SetError(1,7,0)
GUISwitch($pHwnd[0]);switch back to the parent Gui
Return $nHwnd;Return the handle for the new Child gui
EndFunc -
Upps! Zwei Stellen nach dem Komma. Kleiner Bug!
So geht's:
[autoit]
[/autoit]
$sFile = FileRead(@ScriptDir & '\text.txt')
If Not @error Then
$aNumber = StringRegExp($sFile, '(\d+,\d{0,2})', 3)
For $i = 0 To UBound($aNumber)-1
$sFile = StringReplace($sFile, $aNumber[$i], StringFormat('%.2f', Number(StringReplace($aNumber[$i], ',', '.'))))
Next
EndIf
MsgBox(0,0,$sFile) -
Der richtige Befehl dafür lautet: GUICtrlRead()
[autoit]
Für Dein Beispiel, also so:
[/autoit]
While 2
$msg = GUIGetMsg()
Select
Case $msg = $save
IniWrite("C:\test.ini", "Autologin", "ID", GUICtrlRead($ID))
IniWrite("C:\test.ini", "Autologin", "PW", GUICtrlRead($PW))
;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Info
MsgBox(64, "Save", "Informationen wurden gespeichert")
EndSelect
WEnd -
Schau Dir mal diesen Thread an: [ gelöst ] Hab da mal eine Frage zur GUI.
-
Achso, Du willst das in einem kompletten Text ersetzen?!
Ich habe mal einen Testtext erstellt:
Spoiler anzeigen
Und mit diesem Script kannst erhälst Du dann eine formatierte Ausgabe:
Spoiler anzeigen
[autoit]
[/autoit]
$sFile = FileRead(@ScriptDir & '\text.txt')
If Not @error Then
$aNumber = StringRegExp($sFile, '(\d+,\d{0,1})', 3)
For $i = 0 To UBound($aNumber)-1
$sFile = StringReplace($sFile, $aNumber[$i], StringFormat('%.2f', Number(StringReplace($aNumber[$i], ',', '.'))))
Next
EndIf
MsgBox(0,0,$sFile) -
Ja, das Problem (nach Datum sortieren) hatte ich auch schonmal. Deswegen war die Lösung nicht fern.

-
Suche benutzen, das gab es hier schon mehrmals.
P.S.: Willkommen hier im Forum!

-
Vor allem:
ZitatKann mir einer das machen?
Wieviel willst Du denn bezahlen?

Wir helfen gern, aber wenn hier einer ankommt mit "Schreibt mir mal mein Script", dann führt das schnell dazu, dass man denjenigen einfach ignoriert.
-
Ohje, stimmt!
Wenn man in der Konfiguration unter "Erweiterte Gefahrenkategorien" den Haken bei "Security Privacy Risk" gesetzt hat, dann werden AutoIt-Exe-Dateien als SPR/AutoIt.Gen erkannt.
Abhilfe: Haken rausnehmen. -
Und damit es auch im März noch richtig sortiert:

Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>Local $asDate[7] = [6]
[/autoit] [autoit][/autoit] [autoit]
$asDate[1] = "27-02-2009 18-20-00"
$asDate[2] = "22-02-2009 13-00-00"
$asDate[3] = "25-02-2009 20-20-00"
$asDate[4] = "01-03-2009 20-30-00"
$asDate[5] = "22-02-2009 20-05-00"
$asDate[6] = "27-02-2009 14-20-00"
_Sort($asDate)
_ArrayDisplay($asDate, "Sorted")Func _Sort(ByRef $asDate)
[/autoit]
For $i = 1 To UBound($asDate) - 1
$asDate[$i] = StringRegExpReplace($asDate[$i], '(\d{2})-(\d{2})-(\d{4})(.+)', '$3-$2-$1$4')
Next
_ArraySort($asDate, 0, 1)
For $i = 1 To UBound($asDate) - 1
$asDate[$i] = StringRegExpReplace($asDate[$i], '(\d{4})-(\d{2})-(\d{2})(.+)', '$3-$2-$1$4')
Next
EndFunc -
Wie? Was?
Jetzt sollen es Tabs sein?
Was willst Du eigentlich machen? Beschreibe doch mal Dein Problem und nicht Deine Lösungsansätze... -
Ja, benutze ein ListView! Dort stehen die Einträge nebeneinander.

Falls das nicht gemeint ist, dann beschreibe Dein Problem genauer.
-
Das erste Problem kannst Du dadurch lösen, dass Du einen kleineren Font benutzt:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
GUICreate("", 150, 40)
GUICtrlCreateButton("Oaofaol", 10, 10, 130, 20)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetFont(-1, 7)GUISetState()
[/autoit] [autoit][/autoit] [autoit]While GUIGetMsg() <> -3
[/autoit]
Sleep(10)
WEndDen Rest habe ich nicht verstanden. Wie meinst Du das?
-
Ich habe mal ein Script geschrieben, mit dem man noch viel mehr auslesen kann: Computer-Info
Edit: Das @NumParams dient dazu, dass man rauskriegt, mit wie vielen Parametern eine Funktion aufgerufen wurde.
[autoit]
Beispiel:
[/autoit][autoit][/autoit][autoit]
Test(1, 2, 3)Func Test($a = 1, $b = 2, $c = 3, $d = 4)
[/autoit]
MsgBox(0,0,@NumParams)
EndFunc -
Dazu können bzw. dürfen wir keine Antwort geben, da es in einen Bereich gehen würde, der den Forenregeln widerspricht.
-
Na gut, ich habe Dein Script mal etwas geändert, um Dir zu zeigen, wie man das eigentlich macht:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <DateTimeConstants.au3>
#include <GUIConstantsEx.au3>
Opt("GUICloseOnESC", 1)GUICreate("Zeitanzeige", 345, 138)
[/autoit] [autoit][/autoit] [autoit]
GUISetBkColor(0xb8bcc5)
$go1 = GUICtrlCreateButton("Start", 240, 30, 40, 22)
$exit = GUICtrlCreateButton("Exit", 1, 100, 343, 17)
$wann = GUICtrlCreateLabel("Um wieviel Uhr soll der PC herruntergefahren werden?", 10, 10, 310)
GUICtrlSetFont(-1, 10)
$hTime = GUICtrlCreateDate("", 10, 30, 70, 20, $DTS_TIMEFORMAT)
$TimeHMS = GUICtrlCreateLabel("", 10, 10, 400, 90)
GUICtrlSetFont(-1, 60)
GUICtrlSetState(-1, $GUI_HIDE)
$HN = GUICtrlCreateCombo("", 130, 30, 100)
GUICtrlSetData(-1, "Herunterfahren|Neustarten|Abmelden", "Herunterfahren")
$bs = GUICtrlCreateLabel(" HH:MM:SS", 9, 54, 100, 20)
$Status = GUICtrlCreateLabel("", 0, 118, 345, 20, Default, $WS_EX_CLIENTEDGE)
GUICtrlSetFont(-1, 10)
GUICtrlSetBkColor(-1, 0xeeeeee)
GUISetState(@SW_SHOW)$go = False
[/autoit]
$oldTime = @HOUR & ':' & @MIN & ':' & @SEC
While 1
$sTime = @HOUR & ':' & @MIN & ':' & @SEC
If $sTime <> $oldTime Then
$oldTime = $sTime
GUICtrlSetData($TimeHMS, $sTime)
EndIf
If $go = True And GUICtrlRead($hTime) = $sTime Then
Switch GUICtrlRead($HN)
Case "Herunterfahren"
MsgBox(64, "Herunterfahren", "Der Pc wird sich nun herunterfahren!")
Case "Neustarten"
MsgBox(64, "Neustarten", "Der PC wird sich nun neustarten!")
Case "Abmelden"
MsgBox(64, "Abmelden", "Der PC wird sich nun Abmelden!")
EndSwitch
EndIf
Switch GUIGetMsg()
Case $go1
GUICtrlSetState($go1, $GUI_HIDE)
GUICtrlSetState($bs, $GUI_HIDE)
GUICtrlSetState($HN, $GUI_HIDE)
GUICtrlSetState($wann, $GUI_HIDE)
GUICtrlSetState($hTime, $GUI_HIDE)
GUICtrlSetState($TimeHMS, $GUI_SHOW)
GUICtrlSetData($Status, GUICtrlRead($HN) & " um: " & GUICtrlRead($hTime))
$go = True
Case $exit, $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd -
Da sind gleich mehrere Fehler im Script:
1. Du erstellst immer wieder (jede Sekunde) ein Label: $TimeHMS = GUICtrlCreateLabel ($timeH & ":" & $timeM & ":" & $timeS, 10, 10, 400, 90)
Das führt dazu, dass AutoIt irgendwann (nach ein paar tausend erstellten Label) sehr langsam wird und irgendwann sogar abstürzt (max. Anzahl an Controls erreicht)
Abhilfe: Label nur am Anfang erstellen und später dann die Daten mit GUICtrlSetData dort eintragen.2. Sleep(1000) im Zusammenhang mit: If $TimeH = $H And $TimeM = $M And $TimeS = $S Then... ist eine sehr wackelige Konstruktion, da bereits eine Millisekunde darüber entscheiden kann, ob Dein Script korrekt funktioniert oder nicht.
Abhilfe: Sleep-Wert reduzieren auf z.B. 500 oder die Abfrage ändern in: ...And $TimeS >= $S3. Wäre das benutzen eines Timers flexibler. Man könnte dann auch anbieten: in XX Sek/Min/Std runterfahren etc.
-
Habe ich jetzt auch keinen Ansatz für, um das allgemeingültig zu behandeln.

Falls Du nur etwas zum programmieren suchst, schreib doch erstmal nur einen einfachen Rechner mit den Grundrechnungen.
Hab ich auch schonmal gemacht. Falls es Dich interessiert, such mal nach "Rechner+" bei den Scripten. -
Nicht mit Execute. Das musst Du dann schon nach x auflösen und entsprechend ausrechnen.