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

Beiträge von name22

  • UDF: GDI+ Alternativer ToolTip

    • name22
    • 27. Dezember 2010 um 22:40

    So... Habe mal aus Langeweile einen neuen Style für die ToolTip UDF gemacht. :D Und ein cooleres Beispiel ist jetzt auch mit dabei. Erwartet aber nicht zuviel, da ich es erstens wie gesagt aus Langeweile gemacht habe und zweitens auch keine guten Ideen für einen neuen Style einfallen wollen. :S Falls ihr Ideen oder andere Verbesserungsvorschläge habt, dann teilt es mir mit ;) .

  • Desktopsymbole schnell ein-/ausblenden

    • name22
    • 27. Dezember 2010 um 20:05
    Zitat

    explorer.exe kilen?^^


    Prima Idee :rolleyes: ....

  • Einem Pixel eine Farbe zuordnen

    • name22
    • 27. Dezember 2010 um 19:03
    Zitat

    Und Buttons und so kann man nichtmehr anklicken, wenn amn die übermalt.


    Ja, mein Script macht im Prinzip nur die sichtbaren Teile des Fensters klickbar... Aber ist das ein problem? Ich meine wieso sollte ich unbedingt etwas anklicken wollen, wenn ich es noch nicht einmal sehen kann? Ich hatte bis jetzt auch nie das verlangen, durch das Firefox Fenster hindurch auf meinem Dekstop herumzuklicken :whistling: .

  • files downloaden?

    • name22
    • 27. Dezember 2010 um 18:22

    Bei FilePut musst du als erstes den Pfad der lokalen Datei angeben, und dann den Zielpfad auf dem FTP Server ;).

  • MsgBox Button "Wiederholen" -Script von vorne

    • name22
    • 27. Dezember 2010 um 17:28

    So?

    Spoiler anzeigen
    [autoit]

    Dim $erstezahl, $zweitezahl, $ergebnis, $auswahl

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

    While True
    $auswahl = InputBox("Auswählen:", _
    "Was möchtest du amchen?" & _
    @LF & "Addieren (1)" & _
    @LF & "Subtrahieren (2)" & _
    @LF & "Multiplizieren (3)" & _
    @LF & "Dividieren (4)", "1")

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

    Switch $auswahl
    case 1
    _add()
    case 2
    _sub()
    case 3
    _multi()
    case 4
    _divi()
    case Else
    MsgBox(0, "Error", "Dies ist eine ungültige Funktion!", 5)
    Exit
    EndSwitch
    If MsgBox(69, "Ergebnis", "Das Ergebnis ist: " & $ergebnis &".") <> 4 Then Exit
    WEnd

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

    Func _add()
    $erstezahl = Inputbox("1. Zahl", "Bitte hier die erste Zahl eingeben.")
    $zweitezahl = Inputbox("2. Zahl", "Bitte hier die zweite Zahl eingeben.")
    $ergebnis = $erstezahl + $zweitezahl
    EndFunc

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

    Func _sub()
    $erstezahl = Inputbox("1. Zahl", "Bitte hier die erste Zahl eingeben.")
    $zweitezahl = Inputbox("2. Zahl", "Bitte hier die zweite Zahl eingeben.")
    $ergebnis = $erstezahl - $zweitezahl
    EndFunc

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

    Func _multi()
    $erstezahl = Inputbox("1. Zahl", "Bitte hier die erste Zahl eingeben.")
    $zweitezahl = Inputbox("2. Zahl", "Bitte hier die zweite Zahl eingeben.")
    $ergebnis = $erstezahl * $zweitezahl
    EndFunc

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

    Func _divi()
    $erstezahl = Inputbox("1. Zahl", "Bitte hier die erste Zahl eingeben.")
    $zweitezahl = Inputbox("2. Zahl", "Bitte hier die zweite Zahl eingeben.")
    $ergebnis = $erstezahl / $zweitezahl
    EndFunc

    [/autoit]
  • Einem Pixel eine Farbe zuordnen

    • name22
    • 27. Dezember 2010 um 14:42

    Scheinbar wird die 2te GUI immer deaktiviert, weil sie sonst vor dem 1ten Fenster währe. :S Du kannst den _WinApi_SetWindowPos Befehl entfernen, aber musst dann auch darauf verzichten, dass auch über Fenster wie TaskManager etc. gezeichnet werden kann.

  • FileCommander

    • name22
    • 27. Dezember 2010 um 02:14
    Zitat

    Für was ist dieser Teil deines Skriptes zuständig?


    Damit wird das im Vorschaufenster angezeigte Bild, z.B. im Falle einer Überlappung, neugezeichnet ;). Das ist nötig, weil eine GDI+ Grafik sich im Gegensatz zu den restlichen Controls nicht slbstständig neuzeichnet sobald das WM_PAINT Event an die GUI gesendet wurde.

  • Könnt ihr bitte ein Blick drüber werfen??

    • name22
    • 27. Dezember 2010 um 00:46

    Du musst bei den beiden letzten Parametern von _ScreenCapture_Capture auch die rechte und untere Kante des Rechtecks angeben, nicht die Breite und Höhe ;).

  • $WS_EX_TOPMOST hat nicht die hoechste Prioritaet

    • name22
    • 27. Dezember 2010 um 00:37
    Zitat


    Kurze Nachfrage: Auch wenn das Programm z.B. 2-3 Stunden laeuft, ist das immer noch nicht schlimm, oder?


    Doch, es sollen teilweise schon PCs von der großen Last regelrecht explodiert sein :rolleyes: . Nein im Ernst du kannst mir vertrauen, auch nach 2-3 Stunden wird diese Funktion deinen Prozessor kaum mehr auslasten als Warcraft 3 ;).

  • $WS_EX_TOPMOST hat nicht die hoechste Prioritaet

    • name22
    • 27. Dezember 2010 um 00:27
    Zitat

    Es funktioniert jetzt, aber ich habe etwas "Angst", dass, wenn da ununterbrochen was weiss ich wie oft in der Minute das abgefragt wird, es schlecht fuer die Performance ist?


    Das glaube ich kaum, weder BitAnd noch WinGetState sind besonders Prozessorlastig. Aber wenn du so große "Performance-Angst" hast kannst du ja den TaskManager verwenden um die Prozessorauslastung auszulesen und einen Test mit TimerInit und TimerDiff machen um den Zeitverbrauch der If Abfrage zu messen ;).

  • $WS_EX_TOPMOST hat nicht die hoechste Prioritaet

    • name22
    • 27. Dezember 2010 um 00:09

    Du kannst es ja mal mit dieser Zeile versuchen.

    [autoit]

    If BitAND(WinGetState($hWnd), 2) <> 2 Then _WinAPI_SetWindowPos($hWnd, $HWND_TOPMOST, 0, 0, 0, 0, BitOR($SWP_NOSIZE, $SWP_NOMOVE))

    [/autoit]


    Als Include benötigst du die WinAPI.au3 und die Constants.au3.

  • Programmierer gesucht

    • name22
    • 26. Dezember 2010 um 23:46
    Zitat

    steht das in der Konsole unten:


    Skype hat eine Konsole?! 8|

  • Könnt ihr bitte ein Blick drüber werfen??

    • name22
    • 26. Dezember 2010 um 23:45
    Zitat

    oder ist das eine Standard-DLL von Windows 7?


    Kann ich mir nicht vorstellen... :huh:
    Ich würde einfach die _ScreenCapture_Capture Funktion verwenden :S . (Wo du doch sowieso schon die ScreenCapture.au3 includest :rolleyes: ).

  • Einem Pixel eine Farbe zuordnen

    • name22
    • 26. Dezember 2010 um 21:49
    Zitat

    Vielleicht lag es daran , dass ich ihm Fenster Modus spiele :)


    Ja, das wäre gut möglich... :rolleyes:

  • Einem Pixel eine Farbe zuordnen

    • name22
    • 26. Dezember 2010 um 21:01

    Hab den Befehl wiedergefunden :D.
    So kann man zumindest schon mal auf den TaskManager zeichnen... Aber ob das jetzt auch bei DirectX Anwendungen klappt :S .

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <Misc.au3>
    #include <Constants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    HotKeySet("{ESC}", "_Exit")

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

    $vU32DLL = DllOpen("User32.dll")

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

    $iGUIColorBG = 0xFFFFFFFF
    $iGUIWidth = @DesktopWidth
    $iGUIHeight = @DesktopHeight

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

    $hWnd = GUICreate("Test", $iGUIWidth, $iGUIHeight, 0, 0, BitOR(0x80000000, 0x08000000), BitOR(0x00080000, 0x00000008, 0x00000080))
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGUIWidth, $iGUIHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)

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

    $hPen = _GDIPlus_PenCreate(0xFF000000, 2)

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

    $hDC = _WinAPI_GetDC($hWnd)
    $hCDC = _WinAPI_CreateCompatibleDC($hDC)

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

    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", $iGUIWidth)
    DllStructSetData($tSize, "Y", $iGUIHeight)
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 255)
    DllStructSetData($tBlend, "Format", 1)
    $tPoint = DllStructCreate($tagPOINT)
    $pPoint = DllStructGetPtr($tPoint)
    DllStructSetData($tPoint, "X", 0)
    DllStructSetData($tPoint, "Y", 0)

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

    GUIRegisterMsg($WM_PAINT, "_ReDraw")
    $aMousePosOld = MouseGetPos()

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

    While True
    $aMousePosNew = MouseGetPos()
    If _IsPressed("A3", $vU32DLL) Or _IsPressed("A2", $vU32DLL) Then
    If $aMousePosOld[0] <> $aMousePosNew[0] Or $aMousePosOld[1] <> $aMousePosNew[1] Then _GDIPlus_GraphicsDrawLine($hBuffer, $aMousePosOld[0], $aMousePosOld[1], $aMousePosNew[0], $aMousePosNew[1], $hPen)
    _ReDraw()
    EndIf
    If BitOR(WinGetState($hWnd), 2) <> 2 Then _WinAPI_SetWindowPos($hWnd, $HWND_TOPMOST, 0, 0, 0, 0, BitOR($SWP_NOMOVE, $SWP_NOSIZE))
    $aMousePosOld = $aMousePosNew
    WEnd

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

    Func _ReDraw()
    Local $hBitmapTmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _WinAPI_SelectObject($hCDC, $hBitmapTmp)
    _WinAPI_UpdateLayeredWindow($hWnd, $hDC, 0, $pSize, $hCDC, $pSource, 0, $pBlend, 2)
    _WinAPI_DeleteObject($hBitmapTmp)
    EndFunc

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

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_Shutdown()
    DllClose($vU32DLL)
    Exit
    EndFunc

    [/autoit]


    Edit: Mit linker oder rehcter Strg Taste zeichnen.

  • Einem Pixel eine Farbe zuordnen

    • name22
    • 26. Dezember 2010 um 20:52
    Zitat

    Mit GDI+ gehts, aber es flackert dann sehr stark


    Ist ja auch logisch, wenn du versuchst auf ein Fenster zu malen während eine andere Anwendung gerade das selbe, womöglich noch mit einer anderen Framerate, macht...
    Man kann versuchen das Fenster über alle "OnTop" Fenster (z.B. Task Manager, oder viele PC Spiele) zu setzen. Ich habe mal einen _WinApi Befehl dafür gefunden, aber ich weiß nicht mehr wie dieser heißt... :pinch:

  • Einem Pixel eine Farbe zuordnen

    • name22
    • 26. Dezember 2010 um 20:40
    Zitat

    wie bekommt man das hin, dass man mit euren programmen auch in Direct X anwendungen malen kann?


    Das geht so leider nicht ;). Und ich bin mir nicht mal sicher, ob es überhaupt in AutoIt möglich ist... :S

  • Einem Pixel eine Farbe zuordnen

    • name22
    • 26. Dezember 2010 um 05:18
    Zitat

    name22: Dein script klappt bei mir nicht , keine ahnung warum. Habe auch die DLLCLose funktion eingebaut


    Bei mir funktioniert es... Versuch mal die rechte STRG Taste bei _IsPressed durch eine andere Taste zu ersetzen.

  • Script wertet nur erste If-Abfrage von insgesamt zwei If-Abfragen aus

    • name22
    • 26. Dezember 2010 um 02:21

    Dein Code macht für mich wenig Sinn... Eine If Abfrage wartet nicht bis ihre Bedingung erfüllt wurde. Eine EndlosSchleife macht da mehr Sinn ;).
    Das hier wäre eine Möglichkeit... Wobei ich nicht verstehe wozu du die Variable $x brauchst.

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>

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

    $dll = DllOpen("user32.dll")
    $x = 0

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

    While Sleep(20)
    If _IsPressed("01", $dll) And $x = 0 And (_IsPressed("A2", $dll) Or _IsPressed("A3", $dll)) Then
    MsgBox(64, "test", "klick 1")
    $x = 1 ; Was genau bringt diese Variable?
    ExitLoop
    EndIf
    WEnd

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

    While Sleep(20)
    If _IsPressed("01", $dll) And (_IsPressed("A2", $dll) Or _IsPressed("A3", $dll)) Then
    MsgBox(64, "test", "klick 2")
    ExitLoop
    EndIf
    WEnd

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

    DllClose($dll)

    [/autoit]


    Für mich sieht es allerdings so aus, als hättest du etwas ähnliches bereits versucht und dann wieder entfernt :huh: .

  • Script wertet nur erste If-Abfrage von insgesamt zwei If-Abfragen aus

    • name22
    • 25. Dezember 2010 um 23:56
    Zitat

    neee, das war der ganze quellcode.


    Das kann alleine schon deswegen nicht stimmen weil das #include <Misc.au3>, welches zur korrekten Funktionalität des Scriptes notwendig ist, fehlt. :rolleyes:
    In diesem Codeschnipsel kann ich kein wirkliches Problem erkennen... Und da ich keine Glaskugel für Wahrsager wie AutoBert habe und seine gerade vermutlich wieder einmal in Reparatur ist bräuchten wir schon einen vollständigen Code...

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™