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

Beiträge von Freaky

  • ff.au3 iframes cross domains & plugins ansprechen

    • Freaky
    • 13. April 2015 um 12:04

    Hallo,

    ist es möglich via ff.au3 und selbstverständlich FireFox die einzelnen PlugIns anzusprechen? Sprich Einstellungen zu verändern und "an" und "aus" Knöpfe zu drücken?
    Die andere Frage wäre ob es möglich ist den Inhalt aus einer iFrame zu lesen und eventuell z.B. ein Formular auszufüllen. Das geht ja mit JS leider nicht. Und mit dem IE bzw. ie.au3 habe ich es auch nicht hinbekommen da es ja auch eig. nur JS benutzt (trotz dieser Funktion um diese same origin policy auszustellen).

  • Windows 8.1 exe Fehler

    • Freaky
    • 1. April 2015 um 23:00

    Hö bitte was? :D

    Habe Win 8.1 x64 drauf.
    Ganz normal AutoIt und ScIte (oder so :D) geladen und installiert.
    Dann ein Script versucht zu kompilieren jeweils in UPX und ohne und halt in x64 und x86 (also 4x insgesammt).
    Keine der Varianten hat funktioniert.

    @Photon
    Ja, auch manueles als Admin ausführen. Mehr als die Abfrage kam nicht.

  • Windows 8.1 exe Fehler

    • Freaky
    • 1. April 2015 um 22:52

    Nope, die EXE hat aber kein Icon und lässt sich nicht starten. Löschen lässt sie sich danach jedenfalls auch nicht mehr. Ebenfalls taucht diese nicht in der Prozesliste auf.
    Habe es schon versucht mit und ohne UPX zu kompilieren genauso wie x64 und x86.

  • Windows 8.1 exe Fehler

    • Freaky
    • 1. April 2015 um 15:03

    Hallo,
    ich habe mir vor kurzem Windows 8.1 installiert und seit dem kann ich meine AutoIt exen nicht mehr ausführen, nachdem sie kompiliert sind.

    Kennt jemand eine Lösung dafür?

    LG
    Freaky

  • Script mit Parametern starten

    • Freaky
    • 18. März 2015 um 20:33

    Ok ich muss mich entschuldigen, irgend wie funktioniert mein Script in einem anderem Verzeichnis problemlos, was mich irgend wie wundert da es keine Sonder oder Leerzeichen hat >.>

  • Script mit Parametern starten

    • Freaky
    • 18. März 2015 um 16:36

    Leider nein.
    Es taucht cmd auf und schliesst sich sofort. Aber das Script wurde leider nicht ausgeführt :/

  • Script mit Parametern starten

    • Freaky
    • 18. März 2015 um 15:53

    Hallo,

    ich benutze in früheren AutoIt Version folgende Funktion um mein Script beim Testen mit Paramtern zu starten:

    [autoit]

    Func _runSelf($command)
    Local $pid
    If @Compiled Then
    $pid = Run(@ScriptFullPath & ' ' & $command, '', @SW_HIDE, 2 + 1)
    Else
    $pid = Run(@AutoItExe & " " & @ScriptFullPath & ' ' & $command, "", @SW_SHOW, 2 + 1)
    EndIf

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

    Return $pid
    EndFunc ;==>_runSelf

    [/autoit]

    Seit dem ich auf die neuste Verison von AutoIt umgestiegen bin geht das leider nicht mehr.
    Weiß jemand woran das liegt und wie ich es lösen könnte?

  • verschiedene OS verschiedene Positionen

    • Freaky
    • 17. März 2015 um 11:57

    Ich glaube du hast mich dabei leider falsch verstanden :(
    Klar, ich weiß, dass ich einfach ne Funktion draus machen kann. Ich müsste dann aber für jeden einzelnen Button eine neue Funktion aufstellen, weil aus was für einem Grund auch immer braucht man für genau einen bestimmten Punkt eine bestimmte Funktion.
    Und bei 170 + @DesktopWidth * 0.147569444444444 ist der X wert nicht 170 sondern 0.1475... Daher ist es ja auch nicht so einfach die Koordinaten zu ändern.

    Das ganze wäre aber ein nerviger drumrum weg der extrem hässlich ist und einen davon eher abrät so zu arbeiten. Daher frage ich ja hier nach Hilfe ob jemand eine Lösung für das ganze Problem hat?

  • verschiedene OS verschiedene Positionen

    • Freaky
    • 16. März 2015 um 23:22

    Ich habe jetzt mehrere Buttons bzw. Bilder eingefügt und festgestellt, dass ich jeden Button 1x richtig positionieren muss, die Koordinaten + Auflösung merken und es an 1-2 weiteren Auflösungen das selbe machen muss (der Button muss 1 zu 1 auf der selben Position stehen in jeder Auflösung). Dann in den Taschenrechner eingeben und durch lineare regression eine Funktion darstellen lassen.
    So wie AutoIt es wollte, darf man diese Schritte für x, y und jeden einzelnen Button machen, da die Funktion leider immer nur für ein einzigen Punkt funktioniert *kotz*.

    Kennt jemand eine etwas leichtere Variante?
    Ich meine, ich werde diese Art von GUI vermutlich des öfteren in verschiedenen Projekten verwenden und/oder auch mal die Buttons verschieben oder neue hinzufügen und da ist es extrem nervig wenn man z.B. 170 + @DesktopWidth * 0.147569444444444 für x und -126 + @DesktopHeight * 0.502314814814815 für y stehen hat :(

  • verschiedene OS verschiedene Positionen

    • Freaky
    • 16. März 2015 um 20:47

    Hö :o

    [autoit]

    $hButton = _GUICtrlCreateImageButton($hGUI, "start.png", "start_hover.png", 750, 600)

    [/autoit]


    Ich setze die den Button auf $hGUI.

    [autoit]

    $hGUI = GUICreate("hans", 450, 610, (@DesktopWidth / 2) - 400, -1, $WS_POPUP, $WS_EX_LAYERED); + $WS_EX_TOPMOST)
    $hGUI_child = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_MDICHILD, $hGUI)

    [/autoit]


    Hier sieht man, dass $hGUI die Parent GUI ist.

    Ich habe aber gerade bemerkt, dass ich $hGUI_child gar nicht brauche. und wenn ich bei $hGUI aus @DesktopWidth einfach -1 mache, dann habe ich keine ändernde Größe mehr drinnen und es müsste theoretisch in jeder Auflösung gleich bleiben. Ist es leider aber nicht :(

  • verschiedene OS verschiedene Positionen

    • Freaky
    • 16. März 2015 um 12:24

    Naja, auch wenn die Leiste oben ist ist 0,0 auch oben links oder nicht? :D
    Ich habe jetzt einfach die Position, die bei mir richtig ist, durch die Desktopbreite geteilt damit ich 0,... bekomme und das lasse ich dann mit @DesktopWidth multiplizieren. So müsste es doch jetzt theoretisch auf jedem Bildschirm gleich sein oder?

    Was mich wundert ist, wieso das hierbei verschiebt und bei normalen GUIs nicht.

    Ich kann es leider gerade auf keinem anderem Rechner testen da ich in der Schule bin X(

  • verschiedene OS verschiedene Positionen

    • Freaky
    • 16. März 2015 um 11:52

    Der Gedanke ist nicht schlecht, aber es ist falsch :D
    Ich setze die Buttons ja auf die normale GUI und wenn ich aus @DesktopHeight & Weight auf 0 setze oder mit 2 multipliziere, dann ändert sich bei mir normal auch nichts.

  • verschiedene OS verschiedene Positionen

    • Freaky
    • 15. März 2015 um 21:42

    Hallo,
    mein Problem ist es, dass Bilder bei mir je nach OS und Build an verschiedenen Positionen angezeigt werden :(

    Script:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <SendMessage.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>

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

    Global $hGUI

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

    _GDIPlus_Startup()

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

    $hGUI = GUICreate("hans", 450, 610, (@DesktopWidth / 2) - 400, -1, $WS_POPUP, $WS_EX_LAYERED); + $WS_EX_TOPMOST)
    $hGUI_child = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_MDICHILD, $hGUI)

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

    $hImage = _GDIPlus_ImageLoadFromFile("bg.png")
    SetBitmap($hGUI, $hImage, 0xFF)
    GUISetBkColor(0, $hGUI_child)
    GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")
    GUISetState(@SW_SHOW, $hGUI)
    GUISetState(@SW_SHOW, $hGUI_child)
    _WinAPI_SetLayeredWindowAttributes($hGUI_child, 0x00, 0xff)
    $hButton = _GUICtrlCreateImageButton($hGUI, "start.png", "start_hover.png", 750, 600)

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

    While 1
    _Funktion()
    WEnd

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

    Func _Funktion()
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    EndSwitch

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

    EndFunc ;==>_Funktion

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

    Func SetBitmap($hGUI, $hImage, $iOpacity = 255)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
    $hScrDC = _WinAPI_GetDC(0)
    $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
    $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
    DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", $iOpacity)
    DllStructSetData($tBlend, "Format", 1)
    _WinAPI_UpdateLayeredWindow($hGUI, $hGUI, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
    _WinAPI_ReleaseDC(0, $hScrDC)
    _WinAPI_SelectObject($hMemDC, $hOld)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteDC($hMemDC)
    EndFunc ;==>SetBitmap

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

    Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    _SendMessage($hGUI, $WM_SYSCOMMAND, 0xF012, 0)
    EndFunc ;==>_WM_LBUTTONDOWN

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

    Func _GUICtrlCreateImageButton($gui_parent, $image, $image_hover, $left, $top)
    $hImage = _GDIPlus_ImageLoadFromFile($image)
    $hImageHover = _GDIPlus_ImageLoadFromFile($image_hover)
    $width = _GDIPlus_ImageGetWidth($hImage)
    $height = _GDIPlus_ImageGetHeight($hImage)
    $gui = GUICreate("Button_" & Random(1, 9999), $width, $height, $left, $top, $WS_POPUP, $WS_EX_LAYERED, $gui_parent)
    GUISetCursor(0, 1, $gui)
    $GUIActiveX = GUICtrlCreateLabel("", -1, -1, $width + 1, $height + 1)
    GUICtrlSetCursor(-1, 0)
    SetBitmap($gui, $hImage, 0xFF)
    GUISetState(@SW_SHOW, $gui)
    $handle = SetError(0, $gui, $gui);

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

    Return $handle
    EndFunc ;==>_GUICtrlCreateImageButton

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

    So, wie man unten bei den Bildern sieht, ist bei win 7 (erstes Bild) das Start Bild weiter unten als bei win 8 (zweites Bild).
    Beim Kumpel mit ner anderen win 7 Version ist das Start Bild noch weiter oben und links. Bei nem Kumpel mit win 8.1 ist das Start Bild unten und weiter rechts.

    Woran liegt das? Und wie kann ich das lösen, ausser es an jedes OS und an jedes Build anzupassen?

  • kommunikation zwischen Scripten

    • Freaky
    • 14. März 2015 um 16:24

    B startet C 3x und D 1x :D

    Ich möchte aber sowas wie, dass alle Cs auf die selbe Adresse zugreifen.

  • kommunikation zwischen Scripten

    • Freaky
    • 14. März 2015 um 14:52
    Zitat von water

    Das nennt sich IPC (Inter Process Communication) und wird im engl. Forum mit mehreren Lösungen diskutiert.
    Mein Favorit ist MailSlot von trancexx.


    Das sieht sehr vielversprechend aus. Ich vermute du hast schon Erfahrung damit.
    Was ist, wenn ich da hunderte von Nachrichten hin und her schicke innerhalb einer sehr kurzen Zeit? z.B. 100 Nachrichten in 3 Sekunden?

    /Edit:
    Ich habe gerade gesehen, dass ich eine "Adresse" immer nur von einem Script abfragen darf.

    [autoit]

    Global $hMailSlot = _MailSlotCreate($sMailSlotName)
    If @error Then
    MsgBox(48 + 262144, "MailSlot", "Failed to create new account!" & @CRLF & "Probably one using that 'address' already exists.")
    Exit
    EndIf

    [/autoit]


    Jetzt zurück zu meinem Beispiel oben. Ich habe Script C aber 3x (machen alle das selbe nur ein verteilten Aufgaben). Ist es irgend wie möglich mehrere Verbindungen zu einer Adresse aufzubauen?

  • kommunikation zwischen Scripten

    • Freaky
    • 14. März 2015 um 14:38

    Moin,

    ich habe 4 Scripte die untereinander via Console kommunizieren.
    Script A startet Script B, Script B startet Script C und Script D. Script B übergibt Script D den Handle zu Script A.

    So, jetzt habe ich das Problem, dass Script D nichts in die Console von Script A schreiben kann. Ist das normale? Von B nach C oder von B nach D funktioniert das problemlos.

    Gibt es dafür einen Grund? Ich könnte mir irgend wie denken, dass nur Parents was an die Children schicken können und von dort auch alles lesen aber nicht andersrum.
    Wenn ich recht habe, gibt es eine Alternative, dass ich von Script D nach Script A etwas verschicken kann?

  • hoher CPU Verbrauch

    • Freaky
    • 12. März 2015 um 16:26

    Hallo,

    mir ist eben aufgefallen, dass AutoIt extrem viel CPU bei extrem kleinen Sachen verbraucht.

    Folgendes ist mir aufgefallen:

    [autoit]

    While 1
    WEnd

    [/autoit]


    Das verbraucht extrem viel CPU

    [autoit]

    While Sleep (10)
    WEnd

    [/autoit]


    Das dafür nicht. Soweit ich weiß setzt AutoIt doch automatisch Sleep(10) nach jedem Befehl oder nicht?

    [autoit]

    While Sleep (10)
    ProcessExists (@AutoItPID)
    WEnd

    [/autoit]


    Das verbraucht ebenfalls viel CPU

    [autoit]

    While Sleep (10)
    ;~ ProcessExists (@AutoItPID)
    WEnd

    [/autoit]


    Wie oben beschrieben, verbraucht dieser Fall sogut wie nichts.

    Ich brauche jedoch für mein Script ProcessExists ständig. Gibt es dafür eine Alternative oder Lösung für das Problem?

  • nur Hover über sichtbaren Teil

    • Freaky
    • 12. März 2015 um 12:08
    Zitat von Kanashius

    Vielleicht gibt es eine bessere Lösung (warscheinlich). Aber:
    Eventuell gibt _GDIPlus_BitmapGetPixel ( $hBitmap, $iX, $iY ) an, ob der Pixel transparent ist. Wenn ja einfach den Pixel an der aktuellen Mausposition abfragen. (Evtl. gibt es da auch ne andere Funktion für)


    Wäre das mit mehren Buttons nicht etwas langsam? Ich habe natürlich noch andere Funktionen nebenbei laufen da sind ja nicht nur einfache Buttons :D

    Zitat von Lottich

    Ich würds vermutlich mit GuiGetCursorInfo() versuchen. Damit die Positionen der Controls ermiteln, die diesen HOver Effekt haben sollen und dann mit Switch das Control ändern.
    Aber auch nur, weil ich noch nie mit GDI gearbeitet habe. Da gibt es sicherlich bessere Möglichkeiten.


    Zeil 71 >.> + Erklärung im Thread

    Zitat von 4ern

    Hierfür gibt es bereits eine passende UDF.

    http://www.autoitscript.com/forum/files/fi…guictrlonhover/


    Danke, das schaue mich mir jetzt sofort an :)

    /Edit:
    Letzte Variante funktioniert problemlos :)

  • extern auf ein IE Objekt zugreifen

    • Freaky
    • 12. März 2015 um 12:03

    Ja die beiden Scripte laufen auf dem selben Rechner, wäre sonst etwas doof für die Console oder? :D
    Und für was 2 Script? Ich finde dieses hinterher fragen eig. extrem unnötig und zeitaufwändig aber naja egal ...
    AutoIt kann nicht mit Threads arbeiten, also lasse ich ein zweites Script im Hintergrund die ganze Zeit arbeiten und möchte seine Ausgabe im ersten Script anzeigen.

    Ich dachte an sowas wie mit Controlblabla zu arbeiten oder ähnlichen. Vielleicht auch irgend wie den Handle zum IE Objekt erfassen und dann ganz normale IE Befehle drauf kloppen. Ich möchte ungern eine richtige Kommunikation zwischen den beiden Scripten führen lassen, aber wenn es nicht anders geht, dann bleibt mir auch nichts anderes übrig :D

  • extern auf ein IE Objekt zugreifen

    • Freaky
    • 11. März 2015 um 15:10

    Hallo,

    ich habe ein Script welches ein Fenster mit nem IE Objekt und einer Seite darin offen hat.
    Dazu habe ich ein zweites Script was im Hintergrund läuft.

    Jetzt möchte mit dem zweiten Script den Inhalt im IE Objekt vom ersten Script steuern. Also z.B. auf ein Button klicken, Texte in Inputs einfügen, bestimmte Wörter anders färben, etc.

    Ist das überhaupt möglich?
    Oder muss ich das umständlich mit StdinWrite und ConsoleRead umsetzen?

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™