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. Oscar

Beiträge von Oscar

  • Leute gesucht für AutoIt Task-mgr

    • Oscar
    • 26. April 2009 um 12:28

    BugFix hatte mal eine schöne Funktion "_GetPathByPID" erstellt, die ihr für euren Taskmanager bestimmt gebrauchen könnt.
    Habe mal ein Beispiel dazu geschrieben:

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <ListViewConstants.au3>
    #include <WinAPI.au3>

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

    Global $iCount = 0, $aWinList = WinList()
    $hGui = GUICreate('Task-Liste', 640, 240, -1, -1, BitOr($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX))
    $hTaskList = GUICtrlCreateListView('Task|Pfad', 10, 10, 620, 220)
    GUICtrlSendMsg($hTaskList, $LVM_SETCOLUMNWIDTH, 0, 270)
    GUICtrlSendMsg($hTaskList, $LVM_SETCOLUMNWIDTH, 1, 340)
    For $i = 1 To $aWinList[0][0]
    If $aWinList[$i][0] <> '' And IsVisible($aWinList[$i][1]) Then
    $sPath = _GetPathByPID(WinGetProcess($aWinList[$i][1]))
    If Not @error Then GUICtrlCreateListViewItem($aWinList[$i][0] & '|' & $sPath, $hTaskList)
    EndIf
    Next
    GUISetState()
    Do
    Until GUIGetMsg() = -3

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

    Func IsVisible($handle)
    Return BitAND(WinGetState($handle), 2)
    EndFunc ;==>IsVisible

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

    ;===============================================================================
    ; Function Name: _GetPathByPID($PID=-1)
    ; Description:: Get full path of an running application by using PID
    ; Parameter(s): $PID - PID, if not set will used PID from active Window
    ; Requirement(s): #include <WinAPI.au3>
    ; Return Value(s): Success Full ApplicationPath
    ; Failure set @error 1 - process handle failed
    ; 2 - process image failed
    ; 3 - query dosdevice failed
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _GetPathByPID($PID = -1)
    If $PID = -1 Then $PID = WinGetProcess(WinGetTitle("[active]"))
    $hProcess = _WinAPI_OpenProcess(0x00000400, True, $PID, True)
    If Not $hProcess Then Return SetError(1, 0, 0)
    Local $ret, $path, $DevicePath, $DeviceLetter, $strPath = DllStructCreate("char path[256]")
    DllCall(@SystemDir & '\Psapi.dll', "uint64", "GetProcessImageFileNameA", _
    "hwnd", $hProcess, "ptr", DllStructGetPtr($strPath), "int", 256)
    If @error Then Return SetError(2, 0, 0)
    $path = DllStructGetData($strPath, 'path')
    $DevicePath = StringRegExp($path, "\\Device\\\w*", 1)
    Local $lpTargetPath, $aDrive = DriveGetDrive("ALL")
    For $i = 1 To UBound($aDrive) - 1
    $ret = DllCall("kernel32.dll", "long", "QueryDosDeviceA", "str", $aDrive[$i], "str", $lpTargetPath, "long", 256)
    If @error Then Return SetError(3, 0, 0)
    If $ret[2] = $DevicePath[0] Then
    $DeviceLetter = $aDrive[$i]
    ExitLoop
    EndIf
    Next
    DllCall("kernel32.dll", "long", "CloseHandle", "long", $hProcess)
    Return StringReplace($path, $DevicePath[0], StringUpper($DeviceLetter))
    EndFunc ;==>_GetPathByPID

    [/autoit]
  • Old-Style programmieren

    • Oscar
    • 26. April 2009 um 12:23

    Jam00: Ich weiß! Ich habe das Script vorher ausprobiert. Und Dein Fenster kann man nicht größer ziehen.
    Dazu benötigt man den zusätzlichen Style "$WS_SIZEBOX".

  • Old-Style programmieren

    • Oscar
    • 26. April 2009 um 11:44

    Da fehlt doch aber noch:

    [autoit]

    GUICreate($title, 400, 600, -1, -1, BitOR($WS_POPUP, $WS_DLGFRAME, $WS_SIZEBOX)) ; <- $WS_SIZEBOX

    [/autoit]


    sonst kann man das Fenster gar nicht vergrößern.

  • LogIn-Box

    • Oscar
    • 25. April 2009 um 23:18

    Ich habe das Beispiel zu meiner Funktion noch etwas erweitert.
    Damit ist es jetzt möglich, ein eigenes AutoIt-Script erst nach Authentifizierung zu starten. Alles weitere siehe Post #1.

  • Es ist vorbei...

    • Oscar
    • 25. April 2009 um 21:46

    Die Überschrift liess mich schon Schlimmes erahnen. Meine Vorahnung (autoit.de wird geschlossen) wurde (zum Glück) nicht bestätigt.

    Nichtstdestotrotz ist es schade, dass Du nicht mehr die Zeit hast alles zu lesen. Andererseits habe ich Verständnis dafür. Das Forum bekommt immer mehr (aktive) User und die Anzahl der täglichen Posts nimmt immer mehr zu, was ja ansich eine tolle Sache ist, aber einem 100%-Leser ziemlich viel Zeit abverlangt.
    Da werde ich mir, als Mod, mal Mühe geben die Bot-Threads und ähnlichen Mist zu entfernen, damit Deine gelesenen 50% wenigstens die "guten" Threads betreffen. :)

    An dieser Stelle ein kleiner Hinweis an unsere "Groß-/Kleinschreibungs- & Zeichensetzungsverweigerer": Eure Postings sind schneller und besser lesbar, wenn ihr euch beim schreiben etwas mehr Mühe geben würdet!

  • Disabled Comboboxen einfärben

    • Oscar
    • 24. April 2009 um 20:05

    Statt die Comboboxen zu disablen kannst Du doch einfach ein transparentes Label drüberlegen. So lassen sie sich auch nicht mehr bedienen und sie sehen noch genau so aus wie sonst. :)

  • TCP funktion

    • Oscar
    • 24. April 2009 um 19:30

    Das hat möglicherweise mit der TCP-Paketgröße (Stichwort: MTU) zu tun.
    Versuch's mal mit:

    [autoit]

    $1 = TCPRecv ($sock,1024)

    [/autoit]
  • Prozessnamen

    • Oscar
    • 24. April 2009 um 18:59

    Das Beispiel aus der Hilfe...

    [autoit]


    ; Dieses Skript benötigt volle Administratorrechte
    #requireadmin

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

    MsgBox(0, "Info", "Dieses Skript hat Adminrechte! ")

    [/autoit]


    ...hast Du mal ausprobiert?

  • Prozessnamen

    • Oscar
    • 24. April 2009 um 18:50

    Gut, dann eben aus der deutschen Hilfe:

    Zitat


    Wenn das Skript ausgeführt wird, prüft AutoIt, ob es bereits Adminrechte hat. Wenn nicht, veranlasst AutoIt das Betriebssystem, mittels UAC die Genehmigung vom Benutzer einzuholen. Verweigert der die Genehmigung, wird das Skript beendet.

  • Prozessnamen

    • Oscar
    • 24. April 2009 um 18:43
    Zitat


    When the script runs AutoIt will check if it already has full admin rights and if not it will cause the operating system to prompt the user for permission as shown in "UAC Prompts".

    Edit: Pee, ich hätte doch den dicken, roten Pfeil dazumalen sollen. :D

  • Prozessnamen

    • Oscar
    • 24. April 2009 um 17:52

    Also, wenn ich "admin" in das Suchefeld eingebe, dann erscheint bei mir als erster Eintrag "AutoIt on Windows Vista" und wenn ich dort doppelklicke, dann erscheint rechts:

    Zitat


    AutoIt on Windows Vista
    Windows Vista brings new security features to restrict the running of files that require administrative rights. Even administrator users will be prompted every time an executable runs which will perform some administrative operation (such as writing to the registry key HKEY_LOCAL_MACHINE or writing to the C:\Windows directory). This is called User Account Control (UAC).

    By default AutoIt scripts run with standard user permissions but AutoIt has been coded to allow the script writer the option to "tag" a script in order to tell AutoIt if it needs to run with full admin rights or not.

    To force a script to attempt to run itself with administrative rights add the #requireadmin directive at the top of your script as follows:

    ; This script requires full Administrative rights
    #requireadmin

    MsgBox(0, "Info", "This script has admin rights! ")


    When the script runs AutoIt will check if it already has full admin rights and if not it will cause the operating system to prompt the user for permission as shown in "UAC Prompts". If permission is not given by the user the script will terminate.

    Alles anzeigen

    Muss ich jetzt auch noch einen dicken, roten Pfeil dazumalen? :P

  • Prozessnamen

    • Oscar
    • 24. April 2009 um 17:41

    Aber es gibt eine Hilfedatei und wenn man dort den Suchbegriff "Admin" eingibt, dann bekommt man das Gewünschte.
    Wir verlangen ja nicht viel, aber so ein bißchen mitdenken ist hier durchaus erlaubt. ;)

  • Taskmanager in autoit^^

    • Oscar
    • 24. April 2009 um 17:34

    GUIOnEvent und GUIGetMsg zusammen sind nicht erlaubt. Musst Dich für einen Modus entscheiden.
    Und das mit den Adminrechten haben wir Dir schon in dem anderen Thread erzählt.

  • Prozessnamen

    • Oscar
    • 24. April 2009 um 17:31

    Wieso Begriffe raten?
    Du willst Adminrechte. Wie wäre es da mit dem naheliegenden Suchwort: "Admin"?

  • guigetmsg

    • Oscar
    • 24. April 2009 um 17:19

    Es funktioniert auch so:

    [autoit]


    #include <GUIConstantsEx.au3>
    $gui = GUICreate('test')
    $pic = GUICtrlCreatePic(@SystemDir & '\oobe\images\merlin.gif', 10, 10, 0, 0)
    GUISetState()
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $pic
    MsgBox(0, '', 'Du hast Auf das Bild geklickt')
    EndSwitch
    WEnd

    [/autoit]
  • Anfänger benötigt Hilfe

    • Oscar
    • 24. April 2009 um 17:11

    Hier die kommentierte Version der Funktion:

    [autoit]


    Func _ArrayDiff(ByRef $aNow, ByRef $aPrev)
    Local $sDiff = '', $Tmp
    For $i = 1 To UBound($aNow) - 1 ; Schleife, um alle Elemente des Arrays $aNow durchzugehen
    $Tmp = True ; Vergleichsvariable, ob der Inhalt des Elements $aNow[$i] im Array $aPrev vorhanden ist
    For $j = 1 To UBound($aPrev) - 1 ; Schleife für alle Elemente des zweiten Arrays ($aPrev)
    If $aNow[$i] = $aPrev[$j] Then ; hier kommt der Vergleich, ob das aktuelle Element von $aNow mit einem der Elemente des zweiten Arrays übereinstimmt
    $Tmp = False ; Wenn ja, dann die Vergleichsvariable auf False
    ExitLoop ; und die For $j Schleife verlassen
    EndIf
    Next
    If $Tmp Then $sDiff &= $aNow[$i] & '|' ; Wenn die Vergleichsvariable = True (Array-Element aus $aNow ist nicht in Array $aPrev vorhanden), dann das Element in die Ausgabevariable übernehmen.
    Next
    Return StringSplit(StringTrimRight($sDiff, 1), '|', 2) ; hier wird die Ausgabevariable anhand der Trennmarkierungen in ein Array aufgesplittet und an die aufrufende Funktion zurückgegeben.
    EndFunc

    [/autoit]
  • IP und MAC Adressen

    • Oscar
    • 24. April 2009 um 04:49

    Ich denke, Du hast die Funktionsweise eines Routers nicht ganz verstanden. ;)
    Der Router übernimmt die "Einwahl" (ist eigentlich nur eine Authentifizierung) bei Deinem DSL-Provider und bekommt von diesem eine IP-Adresse (WAN) zugewiesen. Alle Rechner, die per Kabel oder WLAN an den Router angeschlossen sind, bekommen IP-Adressen zugewiesen (DHCP) oder besitzen statische IP-Adressen, die für ein lokales Netz vorgesehen sind (z.B.: 192.168.1.xxx). Ein Verbindungsaufbau zwischen den lokalen Rechnern funktioniert damit ganz ohne die WAN-IP-Adresse. Erst wenn jemand von außerhalb des Routers eine Verbindung zu Dir aufbauen will, kommt die WAN-IP-Adresse ins Spiel. Dann muss es auch eine Port-Weiterleitung geben (aber das ist eine andere Geschichte ;) ).

  • Anfänger benötigt Hilfe

    • Oscar
    • 24. April 2009 um 04:33

    Einen Vergleich (vorher -> nachher) könnte man so machen (Ergebnis ist ein Array mit allen neuen Verzeichnissen):

    [autoit]


    #include <Array.au3>
    #include <File.au3>
    $aPrev = _FileListToArray(@ScriptDir, '*.*', 2)
    _ArrayDisplay($aPrev) ; Anstelle dieser Zeile kommt die Installation des Programms
    $aNow = _FileListToArray(@ScriptDir, '*.*', 2)
    $aOut = _ArrayDiff($aNow, $aPrev)
    _ArrayDisplay($aOut)

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

    Func _ArrayDiff(ByRef $aNow, ByRef $aPrev)
    Local $sDiff = '', $Tmp
    For $i = 1 To UBound($aNow) - 1
    $Tmp = True
    For $j = 1 To UBound($aPrev) - 1
    If $aNow[$i] = $aPrev[$j] Then
    $Tmp = False
    ExitLoop
    EndIf
    Next
    If $Tmp Then $sDiff &= $aNow[$i] & '|'
    Next
    Return StringSplit(StringTrimRight($sDiff, 1), '|', 2)
    EndFunc

    [/autoit]
  • IP und MAC Adressen

    • Oscar
    • 23. April 2009 um 19:47

    Hä?
    Wenn ihr beide am gleichen Router hängt, dann habt ihr auch beide die gleiche WAN-Adresse.

  • EXE to *.au3

    • Oscar
    • 23. April 2009 um 19:31

    [Thread closed]

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™