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

Beiträge von Greenhorn

  • Frage zu PixelChecksum (und nem BMP)

    • Greenhorn
    • 13. September 2008 um 00:55
    Zitat von neo123

    Hallo,

    ich hätte mal ne grundsätzliche Frage zu PixelChecksum

    Kann ich "PixelChecksum" eines BMP einlesen und es mit der eines (gleichgroßen) Rechtecks des Bildschirms vergleichen?


    Ja.

    Zitat von neo123

    Konkreter Fall:
    Ich schiebe "VoiceOverlay" nach 0,0 und hab ein BMP vom deaktivierten Button. Kann ich das BMP mit dem Rechteck auf dem Desktop vergleichen? Oder muss ich den Umweg gehen, dass ich das BMP im einem GUI "lade" und dann erst vergleiche?
    (Falls das funzt, fallen mir bestimmt noch 1000 Sachen ein, das zu nutzen :S )


    Der Desktop ist auch nur eine GUI !!! (s. Window Info Tool) ;)

    Zitat von neo123

    Ach ja & BTW: Kann ich au3-Dateien aus meinem "Starter-GUI" starten ohne dem Umweg sie zu EXEs zu konvertieren


    Ja, einfach die AutoIt3.exe mit dem Pfad zu deinem Script als Argument starten: C:\Programme\AutoIt3\AutoIt3.exe "D:\Eigene Dateien\MeinScript.au3"
    Es ist aber nur eine Instanz möglich, soweit ich weiß, mussst Du mal probieren ...


    Gruß
    Greenhorn

  • sound endlosschleife bzw. wecker

    • Greenhorn
    • 11. September 2008 um 02:05

    Moin,

    so in etwa ?

    Spoiler anzeigen
    [autoit]

    ;#include <Sound.au3>

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

    Global Const $MSG_OK = 1

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

    While True

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

    ; Get initial checksum
    $checksum = PixelChecksum(0,0, 256,500)

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

    ; Wait for the region to change, the region is checked every 100ms to reduce CPU load
    While $checksum = PixelChecksum(0,0, 256, 500)
    Sleep(100)
    WEnd

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

    ; Find a orange pixel in the range 0,0-20,300
    $coord = PixelSearch( 0, 0, 256, 500, 0xE66008)

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

    If IsArray ($coord) Then

    Functionsname()
    ; MessageBox Flags = 262144 + 4096 + 64 + 0
    $iMsg = MsgBox(266304,'Achtung','Angriff!' & @TAB & @CRLF)
    ; Prüfen ob der OK Button gedrückt wurde
    If $iMsg == $MSG_OK Then ExitLoop

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

    EndIf
    WEnd

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

    Func Functionsname()

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

    $sound = SoundPlay("H:\Alarm.wav", 0)

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

    EndFunc

    [/autoit]


    Gruß
    Greenhorn

  • Alle CheckBoxes aktivieren nach einer bestimmten Checkbox

    • Greenhorn
    • 6. September 2008 um 02:51

    Die "Beschreibung" einer Datei kannst Du mit

    [autoit]

    FileGetVersion ("xyz.exe", "FileDescription")

    [/autoit]

    ermitteln, dazu muss die Datei natürlich eine Beschreibung haben.


    Gruß

  • Alle CheckBoxes aktivieren nach einer bestimmten Checkbox

    • Greenhorn
    • 3. September 2008 um 22:56

    N'abend,

    [autoit]

    If GUICtrlGetState ($CheckboxAll) = $GUI_CHECKED Then

    [/autoit]


    Gruß

  • Hilfe Gesucht

    • Greenhorn
    • 1. September 2008 um 12:46

    Hmmm, das funzt nicht ?

    [autoit]

    $validatePassw = "longju10"
    $pass = InputBox("PickUpBot Metin2 By Amelie", "Bitte gib hier das Metin2 Passwort ein", "", "*")

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

    If StringCompare ($validatePassw, $pass, 1) == 0 then
    MsgBox(266304, "Richtiges Passwort","Richtiges Passwort, Sie können das PickUpProgramm jetzt starten.")
    Else
    MsgBox(266256, "Falsches Passwort","Falsches Passwort, das PickUpProgramm beendet sich jetzt !", 4)
    exit
    EndIf

    [/autoit][autoit]

    Func Start () ;startet den func
    Do ;startet die schleife
    $msg = GUIGetMsg()
    Send ("{^}") ;druckt ^ wartet 0,1 sec und druckt wieder ^
    Until $msg = $GUI_EVENT_CLOSE or $msg = $ExitID ;beendet die schleife
    EndFunc ; beendet den func

    [/autoit]


    Gruß
    Greenhorn

  • Hilfe Gesucht

    • Greenhorn
    • 1. September 2008 um 12:16

    Moin,

    sieh' dir mal

    [autoit]

    StringCompare ()

    [/autoit]

    an ... ;)


    Gruß
    Greenhorn

  • Alle CheckBoxes aktivieren nach einer bestimmten Checkbox

    • Greenhorn
    • 1. September 2008 um 11:19

    Moinsen,

    so zum Beispiel ...

    Spoiler anzeigen
    [autoit]

    ; ========================================================================
    ; Starten des Scriptes
    ; ========================================================================

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

    _ReadFiles()
    _CreateWindow()

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

    While True

    $msg = GUIGetMsg()

    Switch $msg
    Case $CheckboxAll
    If GUICtrlGetState ($CheckboxAll, $GUI_CHECKED) Then
    For $i = 0 To $CheckboxID[$CntFiles-1]
    GUICtrlSetState ($CheckboxID[$i], $GUI_UNCHECKED)
    Next
    Else
    For $i = 0 To $CheckboxID[$CntFiles-1]
    GUICtrlSetState ($CheckboxID[$i], $GUI_CHECKED)
    Next
    EndIf
    Case $CheckboxID[0] To $CheckboxID[$CntFiles-1]
    If GUICtrlGetState ($msg, $GUI_CHECKED) Then
    GUICtrlSetState ($msg, $GUI_UNCHECKED)
    Else
    GUICtrlSetState ($msg, $GUI_CHECKED)
    EndIf
    EndSwitch

    WEnd

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

    ;*********************************************************************************

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

    Func _Install()
    For $o = 0 To $CntFiles-1
    If GUICtrlRead($CheckboxID[$o]) == $GUI_CHECKED Then
    MsgBox(48, "AddIn Install", "Dieses AddIn wurde installiert: " & $Files[$o])
    ;~ DLLs-Kopierern & Registrieren
    RunWait ('regsrv32.exe "D:\Bla\Bli\' & $Files[$o] & '"')
    EndIf
    Next
    EndFunc

    [/autoit]


    Gruß
    Greenhorn

  • Automatische Konfiguration von Outlook

    • Greenhorn
    • 30. August 2008 um 04:46

    Versuche es doch mal nur mit WinWait ...

    [autoit]

    ;WinWaitActive("Internet-E-Mail - ", "Geben Sie Ihren Benutzernamen und Ihr Kennwort", )
    WinWait("Internet-E-Mail - ", "Geben Sie Ihren Benutzernamen und Ihr Kennwort" )

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

    ;If WinExists("Internet-E-Mail - Persönliches Postfach", "") Then
    ControlSetText("Internet-E-Mail - Persönliches Postfach", "", "[CLASS:Edit;INSTANCE:1]", $passwd )
    ControlClick("Internet-E-Mail - Persönliches Postfach", "", "[CLASS:Button;INSTANCE:1]")
    ControlClick("Internet-E-Mail - Persönliches Postfach", "", "[CLASS:Button;INSTANCE:2]")
    ;Endif

    [/autoit]


    Control... funktioniert auch mit nicht aktiven oder sichtbaren Fenstern.


    Gruß
    Greenhorn

  • Startzeit / Laufzeit 1 Stunde

    • Greenhorn
    • 22. August 2008 um 10:52

    Moin,

    "While 1" ist eine Endlos-Schleife. Du hast keine Bedingung eingebaut, die die Schleife unterbricht. ;)
    Siehe

    [autoit]

    ExitLoop

    [/autoit]


    Gruß
    Greenhorn

  • Eure Meinung ist gefragt - 32bit oder 64bit, XP oder Vista

    • Greenhorn
    • 19. August 2008 um 01:29

    Moin,

    http://www.tomshardware.com/de/cpu-skalier…hte-239877.html

    http://www.tomshardware.com/de/CPU-oder-GP…hte-240002.html

    hilft vllt auch ein wenig ...


    Gruß
    Greenhorn

  • TabItem abfragen?

    • Greenhorn
    • 18. August 2008 um 21:59

    Ist schon richtig, was Du vermutest. Das Bsp. zeigt es auch ... ;)

    [autoit]

    While 1
    $msg = GUIGetMsg()

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

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    If $msg = $tab Then
    ; display the clicked tab
    WinSetTitle("My GUI Tab", "", "My GUI Tab" & GUICtrlRead($tab))
    EndIf
    WEnd

    [/autoit]


    Gruß
    Greenhorn

  • Download GUI - downloads via http?

    • Greenhorn
    • 2. August 2008 um 03:35

    Moin,

    [autoit]

    InetGet()

    [/autoit]


    Gruß
    Greenhorn

  • taste gedrückt halten

    • Greenhorn
    • 2. August 2008 um 03:33

    Kommt darauf an, was Du damit erreichen möchtest, aber rein theoretisch geht das u.U. schon.


    Gruß
    Greenhorn

  • CLASS auslesen von nem Programm

    • Greenhorn
    • 1. August 2008 um 12:47

    Moin,

    [autoit]

    $hWnd = GUICreate ('Test-Fenster')
    GUISetState ()

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

    $WndClass = GetClassName($hWnd)

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

    MsgBox (266304, 'Info', $WndClass)
    Exit

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

    Func GetClassName($hWnd)

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

    Local $aRes, $szBuf = DllStructCreate ('char[260]')
    $aRes = DllCall('user32.dll', 'int', 'GetClassName', _
    'hwnd', $hWnd, _
    'ptr', DllStructGetPtr ($szBuf), _
    'int', DllStructGetSize ($szBuf))

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

    Return DllStructGetData ($szBuf, 1)

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

    EndFunc

    [/autoit]


    Gruß
    Greenhorn

  • Kernel32.dll - GetProcessId

    • Greenhorn
    • 1. August 2008 um 04:52

    So, nun habt ihr mit doch weichgekaut ... :rolleyes::D

    Listet alle PIDs eines Prozessnamens auf. ;)
    (Sofern die Bedingung erfüllt ist, dass der Prozess
    PROCESS_QUERY_INFORMATION (0x0400) und
    PROCESS_VM_READ (0x0010)
    unterstützt, und das tun nicht alle oder nur teilweise. S. z.B. svchost.exe, oder Bug in meinem Code)

    Eigentlich das gleiche wie ProcessList (), also eher Spielerei ... :rolleyes:
    Hm, irgendwo ist da noch der Wurm drin ... :whistling:

    Aber vllt hilft dir das trotzdem weiter bei deinen Forschungen ... ;)

    GetProcessIdByName ($szFileName)

    Spoiler anzeigen
    [autoit]

    ; GetProcessIdByName Demo.
    $aPID = GetProcessIdByName ('svchost.exe')

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

    _ArrayDisplay ($aPID)
    $aPID = ProcessList ('svchost.exe')

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

    _ArrayDisplay ($aPID)
    $aListPID = EnumProcesses ()
    _ArrayDisplay ($aListPID)

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

    Func GetProcessIdByName ($szFileName)

    Local $hProcess, $ahModules, $szModuleName, $aReturnPID[512], $c = 1, $NULL = Ptr (0)

    $aListPID = EnumProcesses ()

    For $i = 1 To $aListPID[0]

    $hProcess = OpenProcess (BitOR (0x0400, 0x0010), False, $aListPID[$i])

    If $hProcess <> $NULL Then
    $ahModules = EnumProcessModules ($hProcess)
    If $ahModules[0] <> 0 Then
    $szModuleName = GetModuleBaseName ($hProcess, $ahModules[1])
    If $szFileName == $szModuleName Then
    $aReturnPID[0] += 1
    $aReturnPID[$aReturnPID[0]] = $aListPID[$i]
    EndIf
    EndIf
    EndIf
    CloseHandle ($hProcess)
    Next

    ReDim $aReturnPID[$aReturnPID[0] + 1]

    Return $aReturnPID

    EndFunc

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

    Func GetModuleBaseName ($hProcess, $hModule = 0)

    Local $szReturn
    $szBasename = DllStructCreate ('char[260]')

    $aRes = DllCall ('Psapi.dll', 'int', 'GetModuleBaseName', _
    'ptr', $hProcess, _
    'ptr', $hModule, _
    'ptr', DllStructGetPtr ($szBasename), _
    'int', DllStructGetSize ($szBasename))
    If $aRes[0] <> 0 Then
    $szReturn = DllStructGetData ($szBasename, 1)
    EndIf

    Return $szReturn

    EndFunc

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

    Func OpenProcess ($dwDesiredAccess, $bInheritHandle, $dwProcessId)

    $aRes = DllCall ('Kernel32.dll', 'ptr', 'OpenProcess', _
    'dword', $dwDesiredAccess, _
    'int' , $bInheritHandle, _
    'dword', $dwProcessId)
    Return $aRes[0]

    EndFunc

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

    Func CloseHandle ($handle)

    $aRes = DllCall ('Kernel32.dll', 'int', 'CloseHandle', 'ptr', $handle)

    Return $aRes[0]

    EndFunc

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

    Func EnumProcessModules ($hProcess)

    Local $aReturn[512], $ahProcessModules, $cbNeeded, $aRes

    $cbNeeded = DllStructCreate ('dword')
    $ahProcessModules = DllStructCreate ('ptr[511]')

    $aRes = DllCall ('Psapi.dll', 'int', 'EnumProcessModules', _
    'ptr' , $hProcess, _
    'ptr' , DllStructGetPtr ($ahProcessModules), _
    'dword', DllStructGetSize ($ahProcessModules), _
    'ptr' , DllStructGetPtr ($cbNeeded))
    If $aRes[0] <> 0 Then
    $aReturn[0] = DllStructGetData ($cbNeeded, 1) / 4 ; enthält Anzahl der Elemente
    For $i = 1 To $aReturn[0]
    $aReturn[$i] = DllStructGetData ($ahProcessModules, 1, $i)
    Next
    ReDim $aReturn[$aReturn[0] + 1]
    EndIf

    Return $aReturn

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

    EndFunc

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

    Func EnumProcesses ()

    Local $aReturn[512], $aProcessIds, $cbNeeded, $aRes

    $cbNeeded = DllStructCreate ('dword')
    $aProcessIds = DllStructCreate ('dword[511]')

    $aRes = DllCall ('Psapi.dll', 'int', 'EnumProcesses', _
    'dword', DllStructGetPtr ($aProcessIds), _
    'dword', DllStructGetSize ($aProcessIds), _
    'dword', DllStructGetPtr ($cbNeeded))
    If $aRes[0] <> 0 Then
    $aReturn[0] = DllStructGetData ($cbNeeded, 1) / 4 ; enthält Anzahl der Elemente
    For $i = 1 To $aReturn[0]
    $aReturn[$i] = DllStructGetData ($aProcessIds, 1, $i)
    Next
    ReDim $aReturn[$aReturn[0] + 1]
    EndIf

    Return $aReturn

    EndFunc

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


    Gruß
    Greenhorn

  • Kernel32.dll - GetProcessId

    • Greenhorn
    • 1. August 2008 um 02:19
    Zitat von GtaSpider

    Hallo

    Greenhorn: Er will nur die PID eines Prozesses herrausfinden, nicht sowas wie ProcessList()^^

    Mfg Spider

    Genau so ist es ! ;)

    Also, noch mal von vorn ...

    GetProcessID() verlangt einen HANDLE zu einem Prozess.
    Einen HANDLE zu einem Prozess erhält man mit OpenProcess().
    OpenProcess() verlangt wiederum eine ID zu einem Prozess.

    Zitat von teh_hahn

    Gibt es also eine Möglichkeit einen Prozesshandle mit Hilfe des Prozessnamen (z.B. notepad.exe) zu erstellen?


    Mit einer einzigen Win32API Funktion nicht !

    Zitat von teh_hahn

    Naja, trotzdem würde es mich noch interessieren, wie man die obige Funktion realisieren kann (quasi ein ProcessExist in Autoit...)


    ProcessExist ist Autoit ;)
    Aber wir können im Quellcode von AutoIt nachschauen, wie Jon es gemacht hat ... :)

    Zitat von Greenhorn

    Hast Du dir die Beispiele nicht angesehen ?
    http://msdn.microsoft.com/en-us/library/ms682623(VS.85).aspx


    Dieses Beispiel ist einfacher zu verstehen als die Funktion im AutoIt Quellcode, macht aber letzten Endes schon fast das Gleiche.
    Das einzige was fehlt ist der Stringvergleich auf z.B. "notepad.exe" !


    Gruß
    Greenhorn

  • ClipGet in GUICtrlCreatePic und das noch in Original Größe?!

    • Greenhorn
    • 31. Juli 2008 um 23:46

    Nein, Valve, das tut es nicht, aber es wird zum Botbau verwendet.

    Ich habe nach dem Programm gegoogelt und hier ist einer der drei einzigen Einträge, die mir erschienen.

    http://gwsystems.de/include.php?path=forumsthread&threadid=7&PHPKITSID=9z3Uaz94WPYvFrzv0c12Yeq8b1lyHbBE

    Solltest Du aber ernsthaft etwas sinnvolles damit verbinden, dann entschuldige bitte. ;)


    Gruß
    Greenhorn

  • Kernel32.dll - GetProcessId

    • Greenhorn
    • 31. Juli 2008 um 23:34
    Zitat von teh_hahn

    Danke für Deine Mühe, aber das ist eigentlich nicht das, nachdem ich gefragt hatte. Mir ging es um die Funktion GetProcessId und ihre Implementierung in AutoIt.


    Ich habe dir doch die Hinweise gegeben ...
    Hast Du dir die Beispiele nicht angesehen ?
    http://msdn.microsoft.com/en-us/library/ms682623(VS.85).aspx

    Dieses Bsp. listet alle laufenden Prozesse auf und ermittelt den Namen der Prozesse.
    Danach musst Du dann deinen Suchstring mit der Liste abgleichen, das war's ... ;)

    Genauso macht es AutoIt auch !
    Ich habe im Quelltext der Version 3.1.x nachgesehen ;)

    Also erst EnumProcesses, dann die Liste abklappern mit OpenProcess() und GetModuleBaseName() um den Namen des Prozesses zu bekommen, und dann nochmal oder zeitgleich mit deinem Suchstring vergleichen.
    Die Funktion, die ich geposted habe ist nur der erste Schritt, den Rest musst Du schon selbst machen.


    Gruß
    Greenhorn

  • WinWaitActive - ohne win aber Desktop??

    • Greenhorn
    • 31. Juli 2008 um 11:04

    WinWaitActive() ist auch nichts anderes als eine Schleife ... ;)


    Gruß

  • WinWaitActive - ohne win aber Desktop??

    • Greenhorn
    • 31. Juli 2008 um 11:00

    Wenn Du die Namen der Spiele kennst, dann brauchst Du doch nur eine Liste erstellen und diese jede Minute abfragen via ProcessExists() ...

    [autoit]

    If ProcessExists ('hearts.exe') Then ; ...

    [/autoit]

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™