1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. nuts

Beiträge von nuts

  • Restart VOR Anmeldefenster

    • nuts
    • 5. November 2009 um 23:42

    Kann man "Anwendungen" ohne Anmeldung ausführen? Nee oder? ?(
    Somit müsste es ein Windowsservice mit eigenem Systemkonto sein.

    Ansonsten:
    Autoadminlogon de-/aktivieren + Reboot Skript
    Pseudocode: de-/aktiviere Autoadminlogon -> counter = 0/1 -> kein reboot/ reboot

  • Prob beim Variablen schreiben

    • nuts
    • 5. November 2009 um 23:30

    Oder gleich

    [autoit]

    _Filewritelog

    [/autoit]


    verwenden.
    Dabei wird gleich Datum und Uhrzeit automatisch mitgeschrieben.

  • 2 Funktionen gleichzeitig machen.

    • nuts
    • 5. November 2009 um 23:15
    Zitat von peethebee

    SEuBo:
    Das hilft nur dann, wenn die Funktionen sich nicht nacheinander gegenseitig aufrufen ;).


    So wie ich das verstanden habe bringt das nichts, bin aber mal auf den Ansatz von SEuBo gespannt.
    Das Problem in mehrere Skripten zu verteilen kann Vorteile bringen, nur mit einem einheitliches Konzept wird man da nicht weit kommen.

    Zitat von peethebee


    Aber geschichte Verlagerung von Code in oder aus der Hauptschleife kann manches Problem in der Richtung lösen.


    Das soweiso, nur wie hilft es dabei mehrere Funktionen "gleichzeitig" auszuführen?

  • einige fragen zu meinem soucecode/projekt

    • nuts
    • 5. November 2009 um 22:57

    Die "Dos-Abfrage":

    [autoit]


    #include<Constants.au3>
    _StartTeknogodsDLL()
    Func _StartTeknogodsDLL()
    local $old
    Local $hPID = Run("ping.exe heise.de", "", @SW_HIDE,$STDERR_MERGED)
    while ProcessExists($hPID)
    Local $readData = StdoutRead($hPID)
    if $old <> $readData then ConsoleWrite($readData & @CRLF)
    wend
    EndFunc ;==>_StartTeknogodsDLL

    [/autoit]


    Den Rest hab ich nicht kapiert. :S

  • Prob beim Variablen schreiben

    • nuts
    • 5. November 2009 um 22:30

    Noch eine Anmerkung:

    [autoit]


    $x=1000*60*60*4

    [/autoit]


    Solche Zeilen solltest du vermeiden.
    Berechnungen ohne Variablen kann auch der Taschenrechner und gehören nicht in die Laufzeit.
    Wirkt sich hier natürlich nicht aus, sieht aber "peinlich" aus. ;)

  • Nur einmal pro ip

    • nuts
    • 5. November 2009 um 00:31

    Mehr als die gleichzeitige Verwendung wird aber nur sehr umständlich zu verhindern sein.
    Eine aus der Hardware ausgelesene Info hat einige Nachteile, dass eben die entsprechende Hardware verwendet werden muss, diese bekannt sein muss usw.

    P.S. Das beste Konzept schützt vor den Decompilierern nicht.

  • GDI+ Doppelbufferung

    • nuts
    • 4. November 2009 um 20:35

    Wie du schon richtig bemerkt hast verwenden viele GDI+Beispiele eine Doppelbufferung.
    Diese hier z.B.: GDI+ Beispiel: Drehende Dreiecke + Drehende Quadrate

  • [Name gesucht] PC von anderen Rechner aus hoch und runterfahren

    • nuts
    • 4. November 2009 um 17:42

    Sehr gut, kann man sicher mal brauchen!

  • GDI+ - ungewollter Farbverlauf beim Strecken von Bildern

    • nuts
    • 4. November 2009 um 01:10

    Die Funktion ist jetzt imho auch nicht richtig eingebaut (kriegs auch nicht hin, morgen mal genauer ansehen ..).

  • Hibernate

    • nuts
    • 3. November 2009 um 14:09
    Spoiler anzeigen
    [autoit]


    Global Const $GUI_EVENT_CLOSE = -3 ;Konstante zum beenden, normal in den incluces drin
    Global $titel = "WakeUp" ;unnötig :)

    [/autoit] [autoit][/autoit] [autoit]

    Global $WM_POWERBROADCAST = 536 ; Konstante für WM_POWERBROADCAST, auch in irgendeinem incluce drin
    Global $PBT_APMRESUMESUSPEND = 0x0007 ; Konstante für PBT_APMRESUMESUSPEND, ka ob es die auch von einem include kommt

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("", 1, 1, 1, 1) ;ob die GUI wirklich gebraucht wird weiss ich gar nicht mehr, theoretisch nicht.

    [/autoit] [autoit][/autoit] [autoit]

    GUIRegisterMsg($WM_POWERBROADCAST, "Standby") ;Registriert den WM_POWERBROADCAST Message Handler und ruft bei einem Event die Standby Funktion auf

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_HIDE, $hGUI)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $GUIMsg = GUIGetMsg()
    Switch $GUIMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func Standby($hWnd, $Msg, $wParam, $lParam) ;für die aktion nach dem standby/ruhezustand
    Switch $wParam ;-> Hier wird das Event geprüft, WM_POWERBROADCAST gibt noch mehr Nachrichten ab, welche genau kommt auch aufs OS an.
    Case $PBT_APMRESUMESUSPEND ;wir wollten das Aufwachen reagieren und definieren hier die entsprechende Nachricht
    MsgBox(1, "", "Ich bin gerade aufgewacht") ;die gewünschte Aktion
    Exit
    EndSwitch
    EndFunc ;==>Standby

    [/autoit]


    Habs mal kommentiert.
    Und hier noch das msdn: http://msdn.microsoft.com/en-us/library/aa373247(VS.85).aspx

  • GUICtrlCreateListViewItem <- strings verwenden?

    • nuts
    • 3. November 2009 um 12:40

    Poste doch mal ein lauffähiges Beispiel mit deinem Problem.
    Natürlich lassen sich Arrayeinträge in ein Listview eintragen. :rolleyes:

  • Hibernate

    • nuts
    • 3. November 2009 um 11:38

    Na so unmöglich ist das nicht ;)
    Funktioniert über WM_POWERBROADCAST, versuchs mal so:

    Spoiler anzeigen
    [autoit]


    Global Const $GUI_EVENT_CLOSE = -3
    Global $titel = "WakeUp"

    [/autoit] [autoit][/autoit] [autoit]

    Global $WM_POWERBROADCAST = 536
    Global $PBT_APMRESUMESUSPEND = 0x0007

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("", 1, 1, 1, 1)
    GUIRegisterMsg($WM_POWERBROADCAST, "Standby")
    GUISetState(@SW_HIDE, $hGUI)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $GUIMsg = GUIGetMsg()
    Switch $GUIMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func Standby($hWnd, $Msg, $wParam, $lParam) ;für die aktion nach dem standby/ruhezustand
    Switch $wParam
    Case $PBT_APMRESUMESUSPEND
    MsgBox(1, "", "Ich bin gerade aufgewacht")
    Exit
    EndSwitch
    EndFunc ;==>Standby

    [/autoit]
  • $cmdline parameter handle

    • nuts
    • 3. November 2009 um 11:31

    Kommunikation zwischen 2 Skripten über WM_Copydata.

    Spoiler anzeigen
    [autoit]


    ;Script2 -> Sender
    #include "MessageHandler.au3"

    [/autoit] [autoit][/autoit] [autoit]

    $Local_ReceiverID_Name = "Script2sReceiverID";This is the ID that the other script will use to send data
    $Remote_ReceiverID_Name = "Script1sReceiverID";This is the ID of the script we want to send data too

    [/autoit] [autoit][/autoit] [autoit]

    $hwnd = _SetAsReceiver($Local_ReceiverID_Name)
    ConsoleWrite("hwnd of the Local_ReceiverID_Name is " & $hwnd & @crlf)
    $myFunc = _SetReceiverFunction("_MyFunc2")
    ConsoleWrite("My data receiver function is " & $myFunc & @crlf)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Str = InputBox(@ScriptName," I am " & @ScriptName & @crlf & "Enter some data to be sent to the other script")

    [/autoit] [autoit][/autoit] [autoit]

    $iSent = _SendData($Str,$Remote_ReceiverID_Name)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _MyFunc2($vText)
    Msgbox(0,@ScriptName,@ScriptName & " has received a message" & @crlf & $vText)
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;Script1 -> Empfänger
    #include "MessageHandler.au3"

    [/autoit] [autoit][/autoit] [autoit]

    $Local_ReceiverID_Name = "Script1sReceiverID";This is the ID that the other script will use to send data
    $Remote_ReceiverID_Name = "Script2sReceiverID";This is the ID of the script we want to send data too

    [/autoit] [autoit][/autoit] [autoit]

    $hwnd = _SetAsReceiver($Local_ReceiverID_Name)
    ConsoleWrite("hwnd of the Local_ReceiverID_Name is " & $hwnd & @crlf)
    $myFunc = _SetReceiverFunction("_MyFunc2")
    ConsoleWrite("My data receiver function is " & $myFunc & @crlf)

    [/autoit]

    Per cmdline:

    Spoiler anzeigen
    [autoit]


    #Include <Array.au3>
    #Include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('WinTitleMatchMode', 3)

    [/autoit] [autoit][/autoit] [autoit]

    global const $TITLE_RECEIVER = 'DVBViewerSleepTimerReceiver'
    global const $WM_COPYDATA = 0x004A
    Global $NewDataAvailable = False, $avData[1]

    [/autoit] [autoit][/autoit] [autoit]

    if WinExists($TITLE_RECEIVER) then
    ; Kommandozeile an schon laufendes Skript weitergeben
    ;MsgBox(1, "", "aha")
    If $CMDLINE[0] = 0 Then Exit
    _SendData(WinGetHandle($TITLE_RECEIVER),$CMDLINERAW)
    Exit
    else
    ; Empfänger mit normalem Skript starten
    _Receiver()
    Exit
    endif

    [/autoit] [autoit][/autoit] [autoit]

    func _Receiver()
    GUICreate($TITLE_RECEIVER)
    GUIRegisterMsg($WM_COPYDATA, '_WM_COPYDATA')

    [/autoit] [autoit][/autoit] [autoit]

    while 1
    Sleep(10)
    if $NewDataAvailable then
    $NewDataAvailable = False
    $sMsg = $avData[1]
    _ArrayDelete($avData,1)
    $aMsg = _ParseCMDLine($sMsg)
    For $i = 0 To UBound($aMsg)-1
    Switch $aMsg[$i][1]
    Case "dauer"
    MsgBox(0, '', "Dauer anzeigen")
    Case "stop"
    MsgBox(0, '', "beenden")
    Exit
    EndSwitch
    Next
    endif
    wend

    [/autoit] [autoit][/autoit] [autoit]

    GUIDelete()
    endfunc; _Receiver

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _ParseCMDLine($CMDString)
    ; Description:: Parses a CMD-String to Parameters with Values
    ; Parameter(s): $CMDString -> String to parse
    ; Requirement(s): ?
    ; Return Value(s): Error: 0 and @error = StringRegExp-Error
    ; Success: 2 Dimensional Array:
    ; $array[$i][0] : Parameter including value
    ; $array[$i][1] : Parameter
    ; $array[$i][2] : Value with quotation marks (only if value has quotaion marks)
    ; $array[$i][3] : Value without quotation marks
    ; Author(s): Prog@ndy
    ;
    ; Basis: http://regexlib.com/REDetails.aspx?regexp_id=1220
    ;===============================================================================
    ;
    Func _ParseCMDLine($CMDString)
    Local $y, $j, $i, $entry
    Local $x = StringRegExp($CMDString,'(?:\s*)(?<=[-|/])(?<name>[^\s-|/:|=]*)(?:(?:[:|=](?:("(?<value1>.*?)(?<!\\)")|(?<value>\S*)))|\w*?)',4)
    If @error Then Return SetError(@error,0,0)
    Local $ResultArray[UBound($x)][4]
    For $i = 0 To UBound($x)-1
    $entry = $x[$i]
    For $y = 0 To UBound($entry)-1
    $j = $y
    If $y > 3 Then $j = 3
    $ResultArray[$i][$j] = $entry[$y]
    Next
    Next
    Return $ResultArray
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    func _SendData($hWnd, $sData)

    [/autoit] [autoit][/autoit] [autoit]

    local $tCOPYDATA, $tMsg

    [/autoit] [autoit][/autoit] [autoit]

    $tMsg = DllStructCreate('wchar[' & StringLen($sData) + 1 & ']')
    DllStructSetData($tMsg, 1, $sData)
    $tCOPYDATA = DllStructCreate('dword;dword;ptr')
    DllStructSetData($tCOPYDATA, 2, DllStructGetSize($tMsg))
    DllStructSetData($tCOPYDATA, 3, DllStructGetPtr($tMsg))
    $Ret = DllCall('user32.dll', 'lparam', 'SendMessageW', 'hwnd', $hWnd, 'int', $WM_COPYDATA, 'wparam', 0, 'lparam', DllStructGetPtr($tCOPYDATA))
    if (@error) or ($Ret[0] = -1) then
    return 0
    endif
    return 1
    endfunc; _SendData

    [/autoit] [autoit][/autoit] [autoit]

    func _WM_COPYDATA($hWnd, $msgID, $wParam, $lParam)

    [/autoit] [autoit][/autoit] [autoit]

    local $tCOPYDATA = DllStructCreate('dword;dword;ptr', $lParam)
    local $tMsg = DllStructCreate('wchar[' & DllStructGetData($tCOPYDATA, 2)/2 & ']', DllStructGetData($tCOPYDATA, 3))

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayAdd($avData, DllStructGetData($tMsg, 1))
    $NewDataAvailable = True

    [/autoit] [autoit][/autoit] [autoit]

    return 0
    endfunc; _WM_COPYDATA

    [/autoit]
  • _arraytostring geht nicht !?

    • nuts
    • 3. November 2009 um 01:53

    _Arraytostring ist nur für 1D Array's.
    Du möchtest aber eh nur einen Eintrag auslesen oder?

    [autoit]

    msgbox(1, "", $array[17][1] ; müsste Eintrag 18 in der zweiten Spalte anzeigen

    [/autoit]
  • GDI Plus Script Sammlung von Simon

    • nuts
    • 30. Oktober 2009 um 17:55

    Derzeit sind die Farben ja praktisch willkürlich im RGB-Farbraum 1-255 (Wieso eigentlich nicht 0-255?)
    Jetzt könnte man die einzlenen Farben von 0 nach 255 laufen lassen.
    Am besten eignet sich dazu wohl eine Sinus oder Cosinus Funktion.

    [autoit]

    Func _Color()
    $i +=$pi/255
    $r=255/2 + sin($i)*255/2
    return '0xFF' & Hex($r, 2) & Hex(255, 2) & Hex(0, 2)
    EndFUnc

    [/autoit]


    So ähnlich, kriegs selbst auch nicht gescheit hin. :S

    "Etwas" mathematisches Grundverständnis scheint mir für GDI+ ziemlich wichtig.
    Ist erschreckend wie schnell man so einfache Sachen wieder vergisst :(

  • GDI Plus Script Sammlung von Simon

    • nuts
    • 30. Oktober 2009 um 16:56

    Gutes und relativ leicht verständliches Beispiel. :thumbup:
    Cool wäre noch eine Variante mit fließenden Farbübergängen.

  • GDI Plus Problem

    • nuts
    • 30. Oktober 2009 um 15:14

    Ein Array mit Farbcodes und per Random den Index ermittlen?

  • Listbox suchen [SektionsName]

    • nuts
    • 30. Oktober 2009 um 15:09
    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 298, 438, 192, 132)
    $List1 = GUICtrlCreateList("", 48, 56, 177, 262)
    $hlist1 = GUICtrlGetHandle($List1) ;handle für die Listbox UDF
    $Button1 = GUICtrlCreateButton("Los gehts", 48, 344, 177, 41, $WS_GROUP)
    GUICtrlSetData($List1, "Pfad zur .ini1|Pfad zur .ini2|Pfad zur .ini3|") ;du füllst deine Listbox mit den richtigen Pfaden
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Button1
    _Suche()
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func _Suche()
    $searchstring = "" ;der gesuchte Sektionsname
    $ergebnis = "" ;hier werden treffer zwischen gespeichert
    $count = _GUICtrlListBox_GetCount($hlist1)
    for $i = 0 to $count -1 ;jedes item durchgehen
    $name = _GUICtrlListBox_GetText($hlist1, $i) ; Auslesen eines Listboxitems -> Pfad der .ini
    $asections=IniReadSectionNames($name) ;alle Sektionnamen der .ini einlesen
    for $i = 0 to UBound($asections)-1 ;array durchgehen
    if $asections[$i] = $searchstring then $ergebnis &= $asections[$i] & "|" ;bei einem Treffen, ...
    next
    next
    ;$ergebnis enthält jetzt alle .ini Namen mit der gesuchten Sektion, abgetrennt von einem "|"
    GUICtrlSetData($List1, "") ;Listbox leeren
    GUICtrlSetData($List1, $ergebnis) ;$ergebnis in die Listbox schreiben
    endfunc

    [/autoit]


    Hier einmal für die Listbox.

    Ich meinte nur, dass du dein Skript ja auf ein Listview abändern kannst.

  • GDI Plus Problem

    • nuts
    • 30. Oktober 2009 um 14:47

    Zeile 21 ;)

  • Listbox suchen [SektionsName]

    • nuts
    • 30. Oktober 2009 um 14:29

    Willst du nicht beim Listview bleiben?
    Eine Listbox ist zwar eigentlich einfacher, aber wenn dir das solche Probleme macht?

    Die Listboxitems (der .ini Name) bekommst du über Guictrlread (bzw. eine Schleife vom ersten bis zum letzten Item).

    Ka ob jetzt wirklich der .ini Dateiname in der Listbox steht, aber mit den dort enthaltenen Infos und den restlichen hinterlegten Daten muss sich der ganze Namen eben zusammensetzen lassen.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™