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

Beiträge von vivus

  • Funktionen von außen aufrufen

    • vivus
    • 26. April 2013 um 11:15

    @ chesstiger .. geile sache dein Script .. Praktisch dass jemand anderes die gleichen Probleme hat wie ich ...

    eine Farge hab ich aber noch dazu. :D

    Angenommen, dass besagte Script arbeitet bereits im Hintergrund und ich mache dann wieder den EXE call allerdings mit Parameter z.b. "_callMe" dann wird doch in diesem Moment eine Zweite Instance des Prozesses / Programmes ausgeführt.

    Wenn also in meiner Funktion "_callMe" auf etwas zurückgegriffen wird, dass im Hintergrundprozess erst bereitgestellt werden muss, oder etwas in diesem Prozess verändern soll, funktioniert das ja dann nicht. ..
    ( WEIL anderer Speicherbereich, da andere Instance )

    .. fällt dir da spontan ne Möglichkeit ein, das zu koppeln ? sozusagen, dass man die Funktion des Laufenden Hintergrundprozesses anstupst ? das sollte doch mit event's oder sowas gehen ..
    NUR wie ? ?(

  • GUICtrlCreatePic funktioniert nicht mehr

    • vivus
    • 3. April 2013 um 15:21

    DANKE !! :thumbup: jetzt funktioniert's !!


    hab ich wohl übersehen ;) ist mir ja jetzt fast peinlich ;)

  • GUICtrlCreatePic funktioniert nicht mehr

    • vivus
    • 3. April 2013 um 14:20

    HY @ all !

    ich habe hier ein Script

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GDIPlus.au3>

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

    $hGUI = GUICreate("Show JPG", 1000, 600)

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

    GUISetState(@SW_SHOW, $hGUI)

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

    $iX = 1000
    $iY = 600

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

    $GDIPlus_AKTIVIERT = 0
    $PicturePath = @ScriptDir & "\lougth.jpg"

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

    _GDIPlus_Startup()

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

    If $GDIPlus_AKTIVIERT Then
    $hImage = _GDIPlus_ImageLoadFromFile($PicturePath)
    $iX = _GDIPlus_ImageGetWidth($hImage)
    $iY = _GDIPlus_ImageGetHeight($hImage)
    EndIf

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

    MsgBox(0, "", $iX & "- -" & $iY)

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

    $bild = GUICtrlCreatePic($PicturePath, 0, 0, $iX, $iY)

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    Exit

    [/autoit]

    wenn ich GDIPlus NICHT verwende, lässt sich das Bild in die Gui einbinden. ( allerdings verzerrt )
    Jetzt wollte ich mit hilfe von GDIPlus die X-Y ( breite / höhe ) des Bildes auslesen.

    Funktioniert auch.. ABER dann wird das Bild nicht mehr in der GUI angezeigt.

    Hat jemand eine Idee ? woher das kommen kann, ...
    oder wie man das abändern kann, dass das Bild an einer gewünschten Position in der Gui unverzerrt und entsprechend Skaliert dargestellt werden kann ?

  • exe weiter laufen lassen und erneut mit Parametern aufrufen

    • vivus
    • 11. März 2013 um 16:57

    ?( doch schon sehr geil .. !!!

    ich denk mich mal rein 8|

    aber erst versuche ich's mal mit

    Spoiler anzeigen
    [autoit]


    DllStructSetData($a, 1, 99999999)

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

    MsgBox(0,"a",DllStructGetData($a, 1))
    $var = DllStructGetPtr($a)

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

    ; §var wir jetzt als parameter übergeben ..

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

    MsgBox(0,$var,VarGetType ( $a ))
    $b = DllStructCreate("int",$var)
    MsgBox(0,"b",DllStructGetData($b, 1))

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

    gib mir mal n paar minuten ..

  • modbus

    • vivus
    • 11. März 2013 um 13:16

    mmm .. seltsam .. das habe ich anderst gelernt. ?(

    und zwar so : ...
    es gibt immer nur einen Server(Master) im System, welcher das "Programm" steuert.
    alles andere sind die Client(Salve) Systeme.

    also wäre bei mir die IO-Hardware egal in welcher Anzahl und welcher Hersteller der Client(Slave).
    Weil der Client ja ohne Server nix macht.( gar nix machen kann, weil er ja "dumm" ist.)

    und der Server wäre hier das Autoit Programm .. weil diese den Programmteil abarbeitet / Steuert.

    aber ist ja auch wurst .. wie wir das definieren ich weis jetzt was du jetzt willst.
    Du willst mit einem Modbus-Master auf Register zugreifen, welche der PC als Slave bereitstellt. ;)

    müsste doch gehen .. mit meinem "nativ" Code teil.

    Dort poole ich den TCP-Port bis wieder eine Antwort auf meine Frage kommt.

    Das könntest du als "Slave" umbauen.

    eine POOL-schleife, welche auf ein bestimmten Modbus String-Wartet.

    und entsprechend wie du es wünscht darauf Antworten.

    ich hab leider keinen anderen Master vor Ort. ich guck mal, ob ich vielleicht nen Zweiten Rechner als Master Startklar bekomme.

    Jetzt muss ich aber erst mal das mit dem Steppercontroller hin bekommen ;)

  • modbus

    • vivus
    • 11. März 2013 um 09:20

    wäre dann der PC(die Software) nicht der client ? ... wenn du mit der SPS darauf zugreifen willst ?

    wäre natürlich auch ne geile Sache .. dann wäre das Thema mit dem Realtime auch gegessen ..

    für die Zeitkritischen sachen oder Sicherheitsrelevanten Abläufe könnte man die SPS nehmen ... und für die Visu das Script ..

    mmm .. hab ich habe leider nicht die Hardware um das zu testen .. aber können wir ja im Hinterkopf behalten !! wäre n Geiles Feature ...

  • modbus

    • vivus
    • 11. März 2013 um 09:03

    Serverfunktionen ?

    Das Script / UDF ist doch der Server im Modbus .. oder meinst du jetzt was anderes ?

    d.h. du brauchst nur einen Feldbuskoppler ( ich habe hierzu den WAGO 750-341 verwendet ) und das Autoit "Programm".

    sonst keine Andere Software mehr. Du Steuerst mit der UDF direkt die IO's des Feldbuskopplers an.

    ..

  • exe weiter laufen lassen und erneut mit Parametern aufrufen

    • vivus
    • 10. März 2013 um 16:54

    mmm .. alles gute idee'n .. aber befriedigt bin ich rigend wie noch nicht nicht ...

    ... ich meine .. nehmen wir einmal ein ganz simples dll Beispiel ..

    dll open .. -> dll Befehl -> dll Befehl -> dll close ..

    das müsste doch auch mit einer Exe machbar sein .. eine dll ist doch eigentlich nix anderes .. nur halt das diese im Gegensatz
    zu einer exe keine eigene "Main" Funktion hat.

    oder hab ich da was falsch verstanden ...

    ich müsste noch mal suche, aber hier im Forum gibt es eine CommMG.dll für den RS232 Port

    Da muss man z.b. die DLL "Starten" und den Port definieren. ( zb. als Funktion 1 )

    anschließend liest oder schreibt man nur noch Werte. ( z.b. als Funktion n+)

    der DLL call ansich benötigt aber keine definition, welcher Port gemeint ist. d.h. dass sich die DLL dieses merkt.
    ( logisch, dazu ist diese ja da )

    Dass muss doch auch mit einer EXE gehen.

    ggrrr.. verflixt .. wieso komm ich nicht drauf ... ?(

    mit einem virtuellen oder versteckten "irgendwas" fühl ich mich nicht wohl .. die Zwischenablage ist mir zu Fehleranfällig
    ( hab n Programmierer Kolleg, der die Zwischenablage mit einem Programm belegt um einen Video-Steam um 90 ° zu drehen.
    furchtbahr.. !!!!!!!!!!!!!!!!!!!!!!!!!!! sobald man was kopieren will, hat man plötzlich ein Bild im Text .. igitigit !! :cursing: )

    die REG finde ich ( persönlich ) sollte nicht so häufig gepoolt werden .. hab aber keine Ahnung, ob das Windows interessiert oder nicht ..

    eine hidden TXT oder ini finde ich auch ziemlich fehlerlastig . .. ich denke da vor allem an Antivirus Programme.. o.ä.
    wenn diese entsprechend scharf gestellt werden, prüfen die bei jedem Zugriff.. . . kann bei ein paar Variablen exponentiell werden ..

    mmm .mm .. m

  • modbus

    • vivus
    • 10. März 2013 um 16:40

    8) ich bekenne mich schuldig .. 8|

    war eher mit der Richtigkeit des UDF's beschäftigt, als mit der Visualisierung. :rolleyes:

    wenn ich das mit dem Schrittmotor implementiert habe ( in die UDF ) wird eine ansprechendere Visualisierung incl. deiner Verbesserungen folgen ..

    lust mit zu helfen ?

  • exe weiter laufen lassen und erneut mit Parametern aufrufen

    • vivus
    • 5. März 2013 um 15:11

    das mit dem lokalen TCP Server .. macht das nicht Probleme mit der Firewall ?

    Glaub bevor ich da noch den IP-Stack mit ein beziehe versuche ichs doch lieber mit der Registry ... oder hast du n sample parad ?

    @ chesstiger .. das mit dem StdInWrite / StdOutRead hat ich gemeint mit dem IO-Steam den ich nicht benutzen wollen würde ..
    das habe ich bei einem anderen projekt schon mal probiert und hatte problemchen mit gehabt....
    da lass ich lieber die finger davon ..

    Sonstige Vorschläge ?

    @ Nachid .. wie hast du das gemeint, mit der überprüfung, ob meine EXE 2 mal vorhanden ist ?
    Ich meine, wenn das Programm einen Dynamischen namen bekommt, dann kann das ja leider nicht wissen , wie die "zweite" instance heist .. oder ?

    .. kann man vielleicht über die Comand-line ein handle by Ref ? oder sowas in der art übergeben. ... ?
    muss ich mal probieren .. ein Gui Handle geht ja ..

  • exe weiter laufen lassen und erneut mit Parametern aufrufen

    • vivus
    • 5. März 2013 um 09:37

    Hi @ all !

    Ich habe da mal eine Frage :

    Wenn ich eine exe ( ein Compiliertes Script ) aufrufe, kann ich diese ja via cmd-line parametrisieren.

    Dann wird diese abgearbeitet und beendet.

    Ich möchte jetzt aber die Exe so schreiben, dass ich Diese einmal Starte z.b. parameter "-start"

    Diese dann im Hintergrund weiter arbeitet, und wenn ich dann diese erneut aufrufe, Sie nicht erneut startet sondern einfach nur neue Parameter übernimmt z.b. "-parameter=5"


    Ich habe hier mal etwas vorbereitet, das das vielleicht etwas genauer erklärt.

    Hier mein Haupt Script welches die EXE aufrufen soll.

    Spoiler anzeigen
    [autoit]

    HotKeySet("{ESC}", "Terminate")
    HotKeySet("+1", "callFunc1") ; Shift+Number
    HotKeySet("+2", "callFunc2") ; Shift+Number
    HotKeySet("+q", "callFuncQ") ; Shift+Number

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

    $subExe = "subEXE.exe"

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

    While 1

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

    Sleep(100)

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

    ToolTip(@HOUR & ":" & @MIN & " ->Shift+Number drücken", 0, 0)

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

    WEnd

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

    Func callFunc1()
    Run(@ScriptDir&"\"&$subExe & " -start=5","")
    EndFunc ;==>callFunc

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

    Func callFunc2()
    Run(@ScriptDir&"\"&$subExe & " -param=2","")
    EndFunc ;==>callFunc

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

    Func callFuncQ()
    Run(@ScriptDir&"\"&$subExe & " -exit","")
    EndFunc ;==>callFunc

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

    Func Terminate()

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

    Exit 0
    EndFunc ;==>Terminate

    [/autoit]


    und hier die EXE ( welche im Hintergrund laufen soll )

    Spoiler anzeigen
    [autoit]

    $_IND_Start = "start"
    $_IND_Parameter = "param"
    $_IND_Exit = "exit"

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

    Static $value = 0

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

    If $CMDLINE[0] > 0 Then
    ;MsgBox(0, "", "SubExe" & $CMDLINE[1])
    ;MsgBox(0, "", StringLeft($CMDLINE[1],StringLen($_IND_Start)+1))
    ;MsgBox(0,$_IND_Start,StringCompare(StringLeft($CMDLINE[1],StringLen($_IND_Start)+1), "-"&$_IND_Start))
    ;MsgBox(0,$_IND_Parameter,StringCompare(StringLeft($CMDLINE[1],StringLen($_IND_Parameter)+1), "-"&$_IND_Parameter))
    ;MsgBox(0,$_IND_Exit,StringCompare(StringLeft($CMDLINE[1],StringLen($_IND_Exit)+1), "-"&$_IND_Exit))

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

    If StringCompare(StringLeft($CMDLINE[1], StringLen($_IND_Start) + 1), "-" & $_IND_Start) = 0 Then
    MsgBox(0, $_IND_Start, $_IND_Start)
    $value = StringTrimLeft($CMDLINE[1], StringLen($_IND_Start) + 2)

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

    ElseIf StringCompare(StringLeft($CMDLINE[1], StringLen($_IND_Parameter) + 1), "-" & $_IND_Parameter) = 0 Then
    MsgBox(0, $_IND_Parameter, $_IND_Parameter)
    $value = StringTrimLeft($CMDLINE[1], StringLen($_IND_Parameter) + 2)

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

    ElseIf StringCompare(StringLeft($CMDLINE[1], StringLen($_IND_Exit) + 1), "-" & $_IND_Exit) = 0 Then
    MsgBox(0, $_IND_Exit, $_IND_Exit)
    Exit 0
    Else
    MsgBox(0, "ELSE", "Else")
    EndIf

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

    Else
    MsgBox(0, "", "SubExe" & $CMDLINE[0])

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

    EndIf

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

    MsgBox(0, "$value", $value)

    [/autoit]

    ist natürlich nicht fertig ..
    Zile ist es : Die exe mit "-Start=5" zu starten.

    5 soll dann als fix wert hinterlegt werden.

    Jedes mal, wenn dann die Exe mit "-parameter=..." aufgerufen wird soll z.b. zu dem Startwert die "...." ( hier 2) dazugezählt werden.


    Ich möchte das ohne den IO-Steam machen .. und ohne das verwenden von ini-oder Registry

    Warum die Frage:
    Ich habe ein Programm welches via Parameter ( "-reuse-instance" ) genau diese Funktion bereitstellt und möchte wissen wie das geht und eventuell selber in einer anderen Anwendung nachbauen.
    Finde ich nämlich richtig praktisch.

    Jemand ne idee ==?? ?(

  • pdf Viewer UDF -> Sumatra

    • vivus
    • 4. März 2013 um 13:29

    Hallo community !!

    Ich habe relativ häufig Projekte in denen ich ein PDF in einer GUI anzeigen will.
    Bisher habe ich das immer über das Acrobar Reader Object realisiert.

    Funktioniert auch recht gut, leider stürzt mir der aus ungeklärter Ursache hin und wieder ab.
    ( bei Laufzeiten über 6 Stunden )
    Auch das zusätzliche installieren des Readers ist finde ich etwas nervig.

    Deshalb habe ich mir jetzt mal die Mühe gemacht ein UDF zu schreiben, mit dem man PDF Files in eine GUI einbinden kann, OHNE den Acrobat Reader zu verwenden.
    Die läuft über das Open Source Project Sumatra -> http://blog.kowalczyk.info/software/sumat…-reader-de.html

    Im Anhang findet ihr eine ZIP mit allen benötigten Dateien.

    Der Sumatra Reader wird bei mir als Portable Version verwendet. d.h. es ist keine gesonderte Installation notwendig.

    Aus Zeitgründen habe ich nur die Funktionen implementiert, welche ich persönlich auch brauche,
    Wenn jetzt hier aber jemand noch eine Funktion zwingend braucht, werde ich diese natürlich noch einbauen. ( möglichst zeitnah )

    mit dabei habe ich auch ein ganz ganz kleines Sample .. ^^

    würde mich über Feedback freuen.

    BYE Vi

    -> _sumatraPDF_udf-Release 2013.03.04 V1
    Da der Upload auf maximal 1,5 MB beschränkt ist sind es leider 4 Teile

    wer das nicht runter laden möchte, hier die Source

    Spoiler anzeigen
    [autoit]

    #include-Once
    Global Static $_sumatraPDF_UDF_Version = 1
    Global Static $_sumatraPDF_UDF_ReleaseDatum = "2013.03.03"
    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Author: Marc Neininger

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

    Script Function:
    UDF um das Open Source Project Sumatra als Portable Version in eine Eigene Gui einzubinden.
    ( somit wird Autoit um die PDF Anzeige erweitert )

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

    Quelle Sumatra -> http://blog.kowalczyk.info/software/sumat…-viewer-de.html

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

    #ce ----------------------------------------------------------------------------

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

    ;-Funktionen --------------------------------------------------------------------------------------------------------------------
    ;Settings
    ; _SumatraPDF_UDF_clear()
    ; _SumatraPDF_UDF_generateObject()
    ; _SumatraPDF_UDF_run(ByRef $ThisStructHandle,$ViewMode, $PDFFilePath = "0")
    ; _SumatraPDF_UDF_loadFile(ByRef $ThisStructHandle, $PDFFilePath)
    ; _SumatraPDF_UDF_inset($ThisGUI, ByRef $ThisStructHandle, $Mode = 0, $x_Start = 0, $y_Start = 0, $width = 0, $height = 0)
    ; _SumatraPDF_UDF_visibility(ByRef $ThisStructHandle, $visibility = 0)
    ; _SumatraPDF_UDF_resize(ByRef $ThisStructHandle, $x_Start = 0, $y_Start = 0, $width = 0, $height = 0)
    ; _SumatraPDF_UDF_loadFile(ByRef $ThisStructHandle, $PDFFilePath)
    ; _SumatraPDF_UDF_PageUp(ByRef $ThisStructHandle)
    ; _SumatraPDF_UDF_PageDown(ByRef $ThisStructHandle)
    ; _SumatraPDF_UDF_Print(ByRef $ThisStructHandle)
    ; _SumatraPDF_UDF_Close(ByRef $ThisStructHandle)
    ; _SumatraPDF_UDF_ShowObjectData($thisStruct, $Promt = "0")
    ; =====================================================

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

    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>
    #include <GuiMenu.au3>

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

    FileInstall(".\SumatraPDF.exe", ".\SumatraPDF.exe")
    FileInstall(".\_sumatraPDF_UDF.au3", ".\_sumatraPDF_UDF.au3")
    FileInstall(".\_sumatraPDF_UDF.pdf", ".\_sumatraPDF_UDF.pdf")

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

    #cs
    ;###################### simple sample ###################################################################
    #include <_sumatraPDF_UDF.au3>

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

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

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

    Opt("GUIOnEventMode", 1) ; Change to OnEvent mode , damit gui protokoll anderst abgearbeitet wird ( mit funktionen , nicht case )

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

    Global $dpfFullPath = "c:\1.pdf"

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

    _SumatraPDF_UDF_clear()
    Global $SUMObject1 = _SumatraPDF_UDF_generateObject()

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

    _SumatraPDF_UDF_run($SUMObject1,$__SV_VM_facing)
    ;_SumatraPDF_UDF_run($SUMObject2,$__SV_VM_facing, $dpfFullPath)

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

    Global $hGUI = GUICreate("Pdf Test", 1000, 1000, -1, -1, BitOR($WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_CLIPCHILDREN, $WS_SIZEBOX))
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") ; wenn event $GUI_EVENT_CLOSE aktiviert wird, wird funktion "CLOSEClicked" aufgerufen

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

    _SumatraPDF_UDF_inset($hGUI, $SUMObject1, $__SV_MenueHide, 100, 0, 150, 150,$GUI_HIDE)
    ;_SumatraPDF_UDF_inset($hGUI, $SUMObject2, 1, 100, 500, 150, 150)

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

    $alabel = GUICtrlCreateLabel("Line 1 Cell 1", 10, 30) ; first cell 70 width
    $button_P = GUICtrlCreateButton("P", 10, 100)
    $button_N = GUICtrlCreateButton("N", 10, 150)
    GUICtrlSetOnEvent($button_P, "Button_P")
    GUICtrlSetOnEvent($button_N, "Button_N")

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

    GUISetState()

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

    Global $zaehler = 0

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

    ;_SumatraPDF_UDF_loadFile($SUMObject1, $dpfFullPath)

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

    _SumatraPDF_UDF_visibility($SUMObject1,$GUI_SHOW )

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

    While 1
    $msg = GUIGetMsg()
    If $msg = -3 Then ExitLoop

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

    $zaehler = $zaehler + 1

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

    GUICtrlSetData($alabel, $zaehler)

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

    Sleep(10)

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

    WEnd

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

    Func CLOSEClicked()
    Terminate()
    EndFunc ;==>CLOSEClicked

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

    ;-------------------------------------------------------------------------------------------------------------------------------
    Func Button_P()

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

    ;_SumatraPDF_UDF_resize($SUMObject1,300,0,500,0)
    ;_SumatraPDF_UDF_Close($SUMObject1)
    _SumatraPDF_UDF_PageUp($SUMObject1)
    ;_SumatraPDF_UDF_PageDown($SUMObject1)
    ;_SumatraPDF_UDF_loadFile($SUMObject1, $dpfFullPath)
    ;_SumatraPDF_UDF_visibility($SUMObject1,$GUI_SHOW )
    ;_SumatraPDF_UDF_ShowObjectData($SUMObject1)
    ;_SumatraPDF_UDF_ShowObjectData($SUMObject2)

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

    EndFunc ;==>Button_P
    ;-------------------------------------------------------------------------------------------------------------------------------
    Func Button_N()
    ;_SumatraPDF_UDF_PageUp($SUMObject1)
    ;_SumatraPDF_UDF_visibility($SUMObject1, $GUI_HIDE)
    _SumatraPDF_UDF_PageDown($SUMObject1)
    EndFunc ;==>Button_N
    ;-------------------------------------------------------------------------------------------------------------------------------
    Func Terminate()
    Exit 0
    EndFunc ;==>Terminate
    ;-------------------------------------------------------------------------------------------------------------------------------

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

    ;###################### simple sample END ###################################################################
    #ce

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

    ;-Strukturen für ObjectHandle
    ;------------------------------------------------------------------------------------------------------------------------------------
    Global $__SV_State = "Status"
    Global $__SV_Headline = "Headline"
    Global $__SV_FullPath = "FullPath"
    Global $__SV_X_POS = "XPOS"
    Global $__SV_Y_POS = "YPOS"
    Global $__SV_Width = "Width"
    Global $__SV_Height = "Height"
    Global $__SV_WHandle = "WHandle"
    Global $__SV_ProcessID = "ProcessID"
    Global $__SV_ParentHandle = "ParentGuiHandle"
    Global $__SV_MenueState = "MenueState"
    Global $__SV_ViewMode = "ViewMode"

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

    Global $__sumatraPDF_UDF_StructString = "int " & $__SV_State & ";char " & $__SV_Headline & "[512];char " & $__SV_FullPath & "[512];" _
    & "int " & $__SV_X_POS & ";int " & $__SV_Y_POS & ";int " & $__SV_Width & ";int " & $__SV_Height & ";" _
    & "HWND " & $__SV_WHandle & ";HWND " & $__SV_ProcessID & ";HWND " & $__SV_ParentHandle & ";int " & $__SV_MenueState & ";" _
    & "char " & $__SV_ViewMode & "[512]"

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

    ;------------------------------------------------------------------------------------------------------------------------------------
    Global Static $__sumatraPDF_UDF_StartUpFile = @ScriptDir & "\_sumatraPDF_UDF.pdf"
    Global Static $__sumatraPortablePath = @ScriptDir & "\SumatraPDF.exe"
    Global Const $__SV_VM_facing = '-view "facing"'
    Global Const $__SV_VM_single = '-view "single page"'
    Global Const $__SV_VM_bookView = '-view "book view"'
    Global Const $__SV_VM_contSingle = '-view "continuous single page"'
    Global Const $__SV_VM_contFacing = '-view "continuous facing"'
    Global Const $__SV_VM_contBook = '-view "continuous book view"'
    Global Const $__SV_MenueShow = @SW_SHOW
    Global Const $__SV_MenueHide = @SW_HIDE

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

    ;===============================================================================
    ; Description: löscht die sumatra setup Datei welche beim beenden abgespeichert wird.
    ; Parameter(s):
    ;
    ;===============================================================================
    Func _SumatraPDF_UDF_clear()
    FileDelete(@ScriptDir & '\sumatrapdfprefs.dat') ; Deletes the defualt setting file that is created when SumatraPDF.exe is closed
    EndFunc ;==>_SumatraPDF_UDF_clear
    ;===============================================================================
    ; Description: gibt als rückgabewert die benötigte Struktur für das Sumatra Object zurück.
    ; Parameter(s):
    ;
    ; Return Value(s): ein neues Sumatra Object
    ;
    ;===============================================================================
    Func _SumatraPDF_UDF_generateObject()
    $Struct = DllStructCreate($__sumatraPDF_UDF_StructString)
    If @error Then
    MsgBox(0, "", "Error in DllStructCreate " & @error);
    MsgBox(0, "the Struct String", $__sumatraPDF_UDF_StructString)
    Exit
    EndIf
    DllStructSetData($Struct, $__SV_State, -9) ; ststus des Objectes auf 1 setzen
    Return $Struct
    EndFunc ;==>_SumatraPDF_UDF_generateObject

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

    ;===============================================================================
    ; Description: Startet sumatra im Hintergrund
    ; Parameter(s): ByRef $ThisStructHandle = das betroffenen Sumatra Object
    ; $PDFFilePath=0 = das File welches geöfnet werden soll.
    ; wenn kein Pfad angegeben wird, wird das Standart File geladen
    ;
    ; Return Value(s): keins ( das Object wird aktualisiert )
    ;
    ;===============================================================================
    Func _SumatraPDF_UDF_run(ByRef $ThisStructHandle, $sPDFViewMode, $PDFFilePath = "0")
    ;MsgBox(0, "debug", $PDFFilePath)
    If $PDFFilePath = "0" Then
    $PDFFilePath = $__sumatraPDF_UDF_StartUpFile
    EndIf

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

    Local $szDrive, $szDir, $szFName, $szExt
    Local $TestPath = _PathSplit($PDFFilePath, $szDrive, $szDir, $szFName, $szExt)
    Local $HeadlineName = $TestPath[3] & $TestPath[4] ;"Test.pdf"

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

    DllStructSetData($ThisStructHandle, $__SV_Headline, $HeadlineName)
    DllStructSetData($ThisStructHandle, $__SV_FullPath, $PDFFilePath)
    DllStructSetData($ThisStructHandle, $__SV_ViewMode, $sPDFViewMode)

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

    ;_SumatraPDF_UDF_ShowObjectData($ThisStructHandle)

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

    Local $sPDFFileToOpen = '-reuse-instance "' & $PDFFilePath & '"'
    ;Local $sPDFViewMode = '-view "facing"'

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

    ;$sPDFFile = "Test.pdf"
    ;$sPDFFileToOpen = ' -reuse-instance "' & FileGetShortName(@ScriptDir & '\' & $sPDFFile & '"')
    ;ShellExecute(@ProgramFilesDir & "\SumatraPDF.exe", $sPDFFileToOpen, @ScriptDir, "",@SW_HIDE)
    ;ShellExecute("c:\SumatraPDF.exe", $sPDFFileToOpen, @ScriptDir, "", @SW_HIDE)
    $PID = Run($__sumatraPortablePath & " " & $sPDFViewMode & " " & $sPDFFileToOpen, "", @SW_HIDE)
    DllStructSetData($ThisStructHandle, $__SV_ProcessID, $PID)

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

    WinWait(DllStructGetData($ThisStructHandle, $__SV_Headline))
    $hWnd = WinGetHandle(DllStructGetData($ThisStructHandle, $__SV_Headline))
    DllStructSetData($ThisStructHandle, $__SV_WHandle, $hWnd)

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

    DllStructSetData($ThisStructHandle, $__SV_State, 0) ; ststus des Objectes auf 0 setzen
    EndFunc ;==>_SumatraPDF_UDF_run

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

    ;===============================================================================
    ; Description: fügt das sumatra handle ( die instance ) in die gui ein .. an gewünschter position
    ; Parameter(s): ByRef $hGUI = die gui in die das sumatra eingesetzt werden soll
    ; ByRef $ThisStructHandle = das betroffenen Sumatra Object
    ; $MainMenueStatus = soll Menue des sumatra angezeigt werden oder nciht.
    ; $x_Start=0 = die Position in der $hGUI von X ( Startpos )
    ; $y_Start=0 = die Position in der $hGUI von y ( Startpos )
    ; $width=0 = die breite | wenn 0 dann max breite von Gui | wenn kleiner 0 wird entsprechender wert von Max breite abgezogen
    ; $height=0 = die höhe | wenn 0 dann max höhe von Gui | wenn kleiner 0 wird entsprechender wert von Max höhe abgezogen
    ; $sumatravisibility = beim einfügen gleich anzeigen oder noch im Hintergrund lassen
    ;
    ; Return Value(s):
    ;===============================================================================
    ;--------------------------------------------------------------------------------------------------------------------
    Func _SumatraPDF_UDF_inset($ThisGUI, ByRef $ThisStructHandle, $MainMenueStatus = 0, $x_Start = 0, $y_Start = 0, $width = 0, $height = 0, $sumatravisibility = 0)
    $state = DllStructGetData($ThisStructHandle, $__SV_State) ; ststus des Objectes auf 1 setzen
    If $state < 0 Then
    Return
    EndIf

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

    If $MainMenueStatus = 0 Then
    $MainMenueStatus = @SW_HIDE

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

    Else
    $MainMenueStatus = @SW_SHOW

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

    EndIf

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

    ; das eingesetzte sumatra sichbar oder unsichtbar starten
    If $sumatravisibility = 0 Or $sumatravisibility = $GUI_HIDE Then
    $sumatravisibility = $SWP_HIDEWINDOW
    Else
    $sumatravisibility = $SWP_SHOWWINDOW

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

    EndIf

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

    $hMain = _GUICtrlMenu_GetMenu(DllStructGetData($ThisStructHandle, $__SV_WHandle))
    $hView = _GUICtrlMenu_GetItemSubMenu($hMain, 1)
    ;WinMenuSelectItem($sPDFFile, "", "&View", "Continuous") ; sets view to continuos page
    WinMenuSelectItem(DllStructGetData($ThisStructHandle, $__SV_Headline), "", "&View", "Continuous") ; sets view to continuos page
    ;_GUICtrlMenu_SetItemChecked($hView, 11,$MainMenueStatus)
    If _GUICtrlMenu_GetItemChecked($hView, 11) Then WinMenuSelectItem(DllStructGetData($ThisStructHandle, $__SV_Headline), "", "&View", "Show toolbar") ; hides the toolbar
    _GUICtrlMenu_SetMenu(DllStructGetData($ThisStructHandle, $__SV_WHandle), $MainMenueStatus) ; hides the menu
    _WinAPI_SetWindowLong(DllStructGetData($ThisStructHandle, $__SV_WHandle), $GWL_STYLE, BitOR($WS_CLIPCHILDREN, $WS_CLIPSIBLINGS, $WS_VISIBLE)) ; removes borders from SumatraPDF.exe

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

    $ThisHandle = DllStructGetData($ThisStructHandle, $__SV_WHandle)
    _WinAPI_SetParent($ThisHandle, $ThisGUI) ; parent the SumatraPDF.exe window into an autoit window

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

    $aWinSize = WinGetClientSize($ThisGUI)

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

    If $width = 0 Then
    $width = $aWinSize[0]
    ElseIf $width < 0 Then
    $width = $aWinSize[0] + $width

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

    EndIf

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

    If $height = 0 Then
    $height = $aWinSize[1]
    ElseIf $height < 0 Then
    $height = $aWinSize[1] + $height

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

    EndIf

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

    _WinAPI_SetWindowPos($ThisHandle, $HWND_TOP, $x_Start, $y_Start, $width, $height, $sumatravisibility) ; size SumatraPDF.exe window to fit inside the autoit window

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

    ; werte in ObjectStruktur speichern

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

    DllStructSetData($ThisStructHandle, $__SV_X_POS, $x_Start)
    DllStructSetData($ThisStructHandle, $__SV_Y_POS, $y_Start)
    DllStructSetData($ThisStructHandle, $__SV_Width, $width)
    DllStructSetData($ThisStructHandle, $__SV_Height, $height)

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

    DllStructSetData($ThisStructHandle, $__SV_ParentHandle, $ThisGUI) ; ststus des Objectes auf 1 setzen
    DllStructSetData($ThisStructHandle, $__SV_MenueState, $MainMenueStatus) ; Menue Status speichern

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

    DllStructSetData($ThisStructHandle, $__SV_State, 1) ; ststus des Objectes auf 1 setzen

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

    EndFunc ;==>_SumatraPDF_UDF_inset

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

    ;===============================================================================
    ; Description: fügt das sumatra handle ( die instance ) in die gui ein .. an gewünschter position
    ; Parameter(s): ByRef $hGUI = die gui in die das sumatra eingesetzt werden soll
    ; ByRef $ThisStructHandle = das betroffenen Sumatra Object
    ; $x_Start=0 = die Position in der $hGUI von X ( Startpos )
    ; $y_Start=0 = die Position in der $hGUI von y ( Startpos )
    ; $width=0 = die breite | wenn 0 dann max breite von Gui | wenn kleiner 0 wird entsprechender wert von Max breite abgezogen
    ; $height=0 = die höhe | wenn 0 dann max höhe von Gui | wenn kleiner 0 wird entsprechender wert von Max höhe abgezogen
    ;
    ; Return Value(s):
    ;===============================================================================
    ;--------------------------------------------------------------------------------------------------------------------
    Func _SumatraPDF_UDF_visibility(ByRef $ThisStructHandle, $visibility = 0)
    $state = DllStructGetData($ThisStructHandle, $__SV_State) ; ststus des Objectes auf 1 setzen
    If $state < 0 Then
    Return
    EndIf

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

    If $visibility = 0 Or $visibility = $GUI_HIDE Then
    $sumatravisibility = $SWP_HIDEWINDOW
    ElseIf $visibility = 1 Or $visibility = $GUI_SHOW Then
    $sumatravisibility = $SWP_SHOWWINDOW
    Else
    $sumatravisibility = $visibility
    EndIf

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

    $ThisHandle = DllStructGetData($ThisStructHandle, $__SV_WHandle)
    $x_Start = DllStructGetData($ThisStructHandle, $__SV_X_POS)
    $y_Start = DllStructGetData($ThisStructHandle, $__SV_Y_POS)
    $width = DllStructGetData($ThisStructHandle, $__SV_Width)
    $height = DllStructGetData($ThisStructHandle, $__SV_Height)

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

    _WinAPI_SetWindowPos($ThisHandle, $HWND_TOP, $x_Start, $y_Start, $width, $height, $sumatravisibility) ; size SumatraPDF.exe window to fit inside the autoit window

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

    EndFunc ;==>_SumatraPDF_UDF_visibility

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

    ;===============================================================================
    ; Description: verändert die Größe und position des handels
    ; Parameter(s):
    ; ByRef $ThisStructHandle = das betroffenen SumatraObject
    ; $x_Start=0 = die Position in der $hGUI von X ( Startpos )
    ; $y_Start=0 = die Position in der $hGUI von y ( Startpos )
    ; $width=0 = die breite | wenn 0 dann max breite von Gui | wenn kleiner 0 wird entsprechender wert von Max breite abgezogen
    ; $height=0 = die höhe | wenn 0 dann max höhe von Gui | wenn kleiner 0 wird entsprechender wert von Max höhe abgezogen
    ;
    ; Return Value(s):
    ;===============================================================================
    ;--------------------------------------------------------------------------------------------------------------------
    Func _SumatraPDF_UDF_resize(ByRef $ThisStructHandle, $x_Start = 0, $y_Start = 0, $width = 0, $height = 0)

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

    $ThisHandle = DllStructGetData($ThisStructHandle, $__SV_WHandle)

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

    #cs
    GUIRegisterMsg($WM_SIZE, "resize")
    Func resize($h, $m, $w, $p)
    If $h = $hGUI Then
    $aWinSize = WinGetClientSize($hGUI)
    WinMove($hWnd1, "", 0, 0, $aWinSize[0], $aWinSize[1])
    EndIf

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

    EndFunc ;==>resize
    #ce

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

    ;$aWinSize = WinGetClientSize($ThisGUI)

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

    If $x_Start = 0 Then
    $x_Start = DllStructGetData($ThisStructHandle, $__SV_X_POS)
    ElseIf $x_Start < 0 Then
    $x_Start = DllStructGetData($ThisStructHandle, $__SV_X_POS) + $x_Start
    EndIf

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

    If $y_Start = 0 Then
    $y_Start = DllStructGetData($ThisStructHandle, $__SV_Y_POS)
    ElseIf $y_Start < 0 Then
    $y_Start = DllStructGetData($ThisStructHandle, $__SV_Y_POS) + $y_Start
    EndIf

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

    If $width = 0 Then
    $width = DllStructGetData($ThisStructHandle, $__SV_Width)
    ElseIf $width < 0 Then
    $width = DllStructGetData($ThisStructHandle, $__SV_Width) + $width
    EndIf

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

    If $height = 0 Then
    $height = DllStructGetData($ThisStructHandle, $__SV_Height)
    ElseIf $height < 0 Then
    $height = DllStructGetData($ThisStructHandle, $__SV_Height) + $height
    EndIf

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

    WinMove($ThisHandle, "", $x_Start, $y_Start, $width, $height)

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

    DllStructSetData($ThisStructHandle, $__SV_X_POS, $x_Start)
    DllStructSetData($ThisStructHandle, $__SV_Y_POS, $y_Start)
    DllStructSetData($ThisStructHandle, $__SV_Width, $width)
    DllStructSetData($ThisStructHandle, $__SV_Height, $height)

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

    EndFunc ;==>_SumatraPDF_UDF_resize

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

    ;===============================================================================
    ; Description: Öffnet ein neues File 8 dabei wir das Alte Handel geschlossen, ein neues erstelt und an die Alte Position eingesetzt
    ; Parameter(s):
    ; ByRef $ThisStructHandle = das betroffenen SumatraObject
    ; $PDFFilePath=0 = das File welches geöfnet werden soll.
    ;
    ; Return Value(s): keine
    ;
    ;===============================================================================
    Func _SumatraPDF_UDF_loadFile(ByRef $ThisStructHandle, $PDFFilePath)

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

    _SumatraPDF_UDF_Close($ThisStructHandle)

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

    _SumatraPDF_UDF_run($ThisStructHandle, DllStructGetData($ThisStructHandle, $__SV_ViewMode), $PDFFilePath)

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

    $Mode = DllStructGetData($ThisStructHandle, $__SV_MenueState)
    $x_Start = DllStructGetData($ThisStructHandle, $__SV_X_POS)
    $y_Start = DllStructGetData($ThisStructHandle, $__SV_Y_POS)
    $width = DllStructGetData($ThisStructHandle, $__SV_Width)
    $height = DllStructGetData($ThisStructHandle, $__SV_Height)
    _SumatraPDF_UDF_inset(DllStructGetData($ThisStructHandle, $__SV_ParentHandle), $ThisStructHandle, $Mode, $x_Start, $y_Start, $width, $height)

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

    EndFunc ;==>_SumatraPDF_UDF_loadFile

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

    ;===============================================================================
    ; Description: blättert eine Seite hoch
    ; Parameter(s):
    ; ByRef $ThisStructHandle = das betroffenen SumatraObject
    ;===============================================================================
    Func _SumatraPDF_UDF_PageUp(ByRef $ThisStructHandle)
    ControlSend(DllStructGetData($ThisStructHandle, $__SV_WHandle), "", "", "{RIGHT}") ; can be use to open print dialog box
    EndFunc ;==>_SumatraPDF_UDF_PageUp

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

    ;===============================================================================
    ; Description: blättert eine Seite runter
    ; Parameter(s):
    ; ByRef $ThisStructHandle = das betroffenen SumatraObject
    ;===============================================================================
    Func _SumatraPDF_UDF_PageDown(ByRef $ThisStructHandle)
    ControlSend(DllStructGetData($ThisStructHandle, $__SV_WHandle), "", "", "{LEFT}") ; can be use to open print dialog box
    EndFunc ;==>_SumatraPDF_UDF_PageDown

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

    ;===============================================================================
    ; Description: druckt das Dokument
    ; Parameter(s):
    ; ByRef $ThisStructHandle = das betroffenen SumatraObject
    ;===============================================================================
    Func _SumatraPDF_UDF_Print(ByRef $ThisStructHandle)
    ControlSend(DllStructGetData($ThisStructHandle, $__SV_WHandle), "", "", "^p") ; can be use to open print dialog box
    EndFunc ;==>_SumatraPDF_UDF_Print

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

    ;===============================================================================
    ; Description: schließt das Sumatra Object
    ; Parameter(s):
    ; ByRef $ThisStructHandle = das betroffenen SumatraObject
    ;===============================================================================
    Func _SumatraPDF_UDF_Close(ByRef $ThisStructHandle)
    ControlSend(DllStructGetData($ThisStructHandle, $__SV_WHandle), "", "", "^q") ; can be use to open print dialog box
    DllStructSetData($ThisStructHandle, $__SV_State, -1)
    EndFunc ;==>_SumatraPDF_UDF_Close

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

    ;===============================================================================
    ; Description: zeigt den gespeicherten inhalt des Sumatra Objectes
    ; Parameter(s):
    ; ByRef $ThisStructHandle = das betroffenen SumatraObject
    ;===============================================================================
    Func _SumatraPDF_UDF_ShowObjectData($thisStruct, $Promt = "0")
    If $Promt = 0 Then
    $Promt = "values in " & $thisStruct
    Else
    $Promt = "values in " & $thisStruct & "->" & $Promt
    EndIf

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

    $seperatet = StringSplit($__sumatraPDF_UDF_StructString, ";")
    For $i = 1 To $seperatet[0]
    $retval = StringSplit($seperatet[$i], " ")
    $seperatet[$i] = $retval[2]
    Next
    For $i = 1 To $seperatet[0]
    $retval = StringSplit($seperatet[$i], "[")
    $seperatet[$i] = $retval[1]
    Next
    $valueString = ""
    For $i = 1 To $seperatet[0]
    $valueString = $valueString & $seperatet[$i] & "=" & DllStructGetData($thisStruct, $seperatet[$i]) & " |" & @CRLF
    Next
    MsgBox(0, $Promt, $valueString)
    EndFunc ;==>_SumatraPDF_UDF_ShowObjectData

    [/autoit]

    die Portable Version des Sumatra muss man sich halt dann gesondert auf den HP runter laden.


    ;-------------------------------------
    wer dennoch lieber mit dem Acrobat Reader arbeiten möchte hier meine entsprechende Acrobat Reader UDF

    Spoiler anzeigen
    [autoit]

    #include-Once
    FileInstall(".\LOAD.pdf", ".\LOAD.pdf")

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

    Global Static $_Acro_UDF_Version = 1
    Global Static $_Acro_UDF_ReleaseDatum = "2013.01.17"

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

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Author: Marc Neininger

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

    Script Function:
    Acrobar_Reader_UDF erleichert den Umgang mit der AcrobatReader OLE

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

    #ce ----------------------------------------------------------------------------

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

    ;-Funktionen --------------------------------------------------------------------------------------------------------------------
    ; _Acro_UDF_initialization()
    ; _Acro_UDF_CreateCtrl($AcrobatObj, $width = 100, $height = 100, $left = 0, $top = 0)
    ; _Acro_UDF_loadPdfFile($AcrobatObj, $PDF_File)

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

    #cs
    ;###################### simple sample ###################################################################
    HotKeySet("{ESC}", "Terminate")

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

    #include "_Acrobat_Reader_UDF.au3"

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

    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1) ; Change to OnEvent mode , damit gui protokoll anderst abgearbeitet wird ( mit funktionen , nicht case )

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

    $gui_Width = @DesktopWidth / 2
    $gui_Height = @DesktopHeight / 2
    $Start_Position_X = 0
    $Start_Position_Y = 0

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

    Global $mainwindow = GUICreate(@ScriptName, $gui_Width, $gui_Height, $Start_Position_X, $Start_Position_Y)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") ; wenn event $GUI_EVENT_CLOSE aktiviert wird, wird funktion "CLOSEClicked" aufgerufen
    Global $AcroObject1 = _Acro_UDF_initialization()
    Global $AcroOb1_Ctrl = _Acro_UDF_CreateCtrl($AcroObject1,$gui_Width,$gui_Height,10,10)
    GUISetState(@SW_SHOW) ; anzeigen des gui

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

    Sleep(2000)

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

    $PDF_File = "I:\Pruefmittel\3210_PK\Prüfgeräte_Projekte\Pruefgeraete\4019-147-000_Dislpaytest SC28pro\Software\OpenCVreferencemanual.pdf"

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

    MsgBox(0,"load PDF","load PDF="&_Acro_UDF_loadPdfFile($AcroObject1, $PDF_File))

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

    Sleep(2000)
    MsgBox(0,"load PDF","set dual fit="&_Acro_UDF_setDualFit($AcroObject1))

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

    Sleep(2000)
    MsgBox(0,"load PDF","set PageTo="&_Acro_UDF_setPageTo($AcroObject1,3))

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

    While 1

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

    Sleep(400)

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

    WEnd

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

    Func CLOSEClicked()
    Terminate()
    EndFunc ;==>CLOSEClicked

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

    Func Terminate()
    Exit 0
    EndFunc ;==>Terminate

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

    ;###################### simple sample ###################################################################
    #ce

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

    ; ===============================================================================================================================
    #include <GUIConstants.au3>

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

    Global Static $_Acro_UDF_firstLoad_File = @ScriptDir & "\load.pdf"

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

    ;===============================================================================
    ; Description: generiert ein Object auf den Acrobat reader
    ; Parameter(s): keine
    ;
    ; Return Value(s): das Acrobat Object
    ;
    ;===============================================================================
    Func _Acro_UDF_initialization()
    $AcrobatObj = ObjCreate("AcroPDF.PDF.1")
    $AcrobatObj.src = $_Acro_UDF_firstLoad_File
    Return $AcrobatObj
    EndFunc ;==>_Acro_UDF_initialization

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

    ;===============================================================================
    ; Description: generiert ein GUI-Controle von einem Object
    ; Parameter(s): $AcrobatObj -> das Object
    ; $width = 100 -> die breite
    ; $height = 100 -> die höhe
    ; $left = 0 -> startkoordinate in X
    ; $top = 0 -> startkoordinate in Y
    ;
    ; Return Value(s): das Control Handle
    ;===============================================================================
    Func _Acro_UDF_CreateCtrl($AcrobatObj, $width = 100, $height = 100, $left = 0, $top = 0)
    $AcrobatObj_ctrl = GUICtrlCreateObj($AcrobatObj, $left, $top, $width, $height)
    GUICtrlSetState($AcrobatObj_ctrl, $GUI_SHOW)
    Return $AcrobatObj_ctrl
    EndFunc ;==>_Acro_UDF_CreateCtrl

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

    ;===============================================================================
    ; Description: läd ein pdf file in ein Object
    ; Parameter(s): $AcrobatObj -> das Object
    ; $PDF_File -> das file ( kompletter pfad )
    ;
    ; Return Value(s): =1 -> alles ok file geladen
    ; =-1 -> Object wurde nicht gefunden
    ; =-2 -> File wurde nicht gefunden
    ;===============================================================================
    Func _Acro_UDF_loadPdfFile($AcrobatObj, $PDF_File)
    If IsObj($AcrobatObj) Then
    ; $AcrobatObj ist ein Object
    If FileExists($PDF_File) Then
    ; file exists
    $AcrobatObj.src = $PDF_File
    Return 1
    Else
    ; dpf nicht gefunden
    Return -2
    EndIf
    EndIf
    ;$AcrobatObj ist kein object
    Return -1
    EndFunc ;==>_Acro_UDF_loadPdfFile

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

    ;===============================================================================
    ; Description: DPF ansicht auf -> an bildschirm anpassen und -> 2Seitenansicht setzen
    ; Parameter(s): $AcrobatObj -> das Object
    ;
    ; Return Value(s): =1 -> alles ok file geladen
    ; =-1 -> Object wurde nicht gefunden
    ;===============================================================================
    Func _Acro_UDF_setDualFit($AcrobatObj)
    If IsObj($AcrobatObj) Then
    ; $AcrobatObj ist ein Object
    ; Object Controlls !!!!!!!! siehe iac_api_reference.pdf
    $AcrobatObj.SetView("Fit")
    $AcrobatObj.setLayoutMode("TwoColumnLeft")
    Return 1
    EndIf
    ;$AcrobatObj ist kein object
    Return -1
    EndFunc ;==>_Acro_UDF_setDualFit

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

    ;===============================================================================
    ; Description: set current page to
    ; Parameter(s): $AcrobatObj -> das Object
    ; $page=1 -> Seite
    ;
    ; Return Value(s): =1 -> alles ok
    ; =-1 -> Object wurde nicht gefunden
    ;===============================================================================
    Func _Acro_UDF_setPageTo($AcrobatObj, $page = 1)
    If IsObj($AcrobatObj) Then
    ; $AcrobatObj ist ein Object
    ; Object Controlls !!!!!!!! siehe iac_api_reference.pdf
    $AcrobatObj.setCurrentPage($page);
    Return 1
    EndIf
    ;$AcrobatObj ist kein object
    Return -1
    EndFunc ;==>_Acro_UDF_setPageTo

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

    Dateien

    _sumatraPDF_UDF-release2013.03.04_V1.part1.rar 1,05 MB – 641 Downloads _sumatraPDF_UDF-release2013.03.04_V1.part2.rar 1,05 MB – 628 Downloads _sumatraPDF_UDF-release2013.03.04_V1.part3.rar 1,05 MB – 617 Downloads _sumatraPDF_UDF-release2013.03.04_V1.part4.rar 42,29 kB – 585 Downloads
  • GUI Object größe in gui ermitteln

    • vivus
    • 20. Februar 2013 um 16:26

    also bei deinem script bekomme ich nur ein ERROR

    wenn ich meine Funktion entsprechend anpasse ->

    Spoiler anzeigen
    [autoit]


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

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

    #include <GUIConstants.au3>
    #include <array.au3>

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

    Opt("GUIOnEventMode", 1) ; Change to OnEvent mode , damit gui protokoll anderst abgearbeitet wird ( mit funktionen , nicht case )

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

    Global $_Acro_UDF_firstLoad_File = @ScriptDir & "\LOAD.pdf"

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

    Global $mainwindow = GUICreate(@ScriptName, 500, 500, 0, 0)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") ; wenn event $GUI_EVENT_CLOSE aktiviert wird, wird funktion "CLOSEClicked" aufgerufen
    Global $AcroObject1 = _Acro_UDF_initialization()
    Global $AcroObject2 = _Acro_UDF_initialization()
    Global $AcroOb1_Ctrl1 = _Acro_UDF_CreateCtrl($AcroObject1, 200, 200, 10, 10)
    Global $AcroOb1_Ctrl2 = _Acro_UDF_CreateCtrl($AcroObject2, 200, 200, 210, 210)

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

    GUISetState(@SW_SHOW) ; anzeigen des gui

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

    ; hier die Funktion die ich brauche

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

    For $i = 1 To 200 Step 1
    _Acro_UDF_reset($mainwindow,$AcroObject1,$AcroOb1_Ctrl1, 0, 0, $i)
    _Acro_UDF_reset($mainwindow,$AcroObject2,$AcroOb1_Ctrl2, 0, 0, 200-$i)
    sleep(200)
    Next

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

    While 1
    Sleep(400)
    WEnd

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

    Exit

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

    ;----------------------------------------------------------------

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

    Func _Acro_UDF_reset($hGUI,ByRef $Object, ByRef $Obj_ctrl, $width = 0, $height = 0, $left = 0, $top = 0)

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

    GUICtrlSetState($Obj_ctrl, $GUI_HIDE)

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

    $aiPos = ControlGetPos($hGUI, '', $Obj_ctrl)
    _ArrayDisplay($aiPos)

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

    If $width = 0 Then
    ;$width = **GUICtrlGetPosition ** ($Obj_ctrl, "width")
    EndIf
    If $height = 0 Then
    ;$height = **GUICtrlGetPosition ** ($Obj_ctrl, "height")
    EndIf
    If $left = 0 Then
    ;$left = **GUICtrlGetPosition ** ($Obj_ctrl, "left")
    EndIf
    If $top = 0 Then
    ;$top = **GUICtrlGetPosition ** ($Obj_ctrl, "top")
    EndIf

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

    $Object = ObjCreate("AcroPDF.PDF.1")
    $Object.src = $_Acro_UDF_firstLoad_File

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

    $Obj_ctrl = GUICtrlCreateObj($Object, $left, $top, $width, $height)

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

    GUICtrlSetState($Object, $GUI_SHOW)

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

    EndFunc ;==>_Acro_UDF_reset

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

    Func CLOSEClicked()
    Terminate()
    EndFunc ;==>CLOSEClicked

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

    Func Terminate()
    Exit 0
    EndFunc ;==>Terminate

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

    ;----------------------------
    Func _Acro_UDF_initialization()
    $AcrobatObj = ObjCreate("AcroPDF.PDF.1")
    $AcrobatObj.src = $_Acro_UDF_firstLoad_File
    Return $AcrobatObj
    EndFunc ;==>_Acro_UDF_initialization

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

    Func _Acro_UDF_CreateCtrl($AcrobatObj, $width = 100, $height = 100, $left = 0, $top = 0)
    $AcrobatObj_ctrl = GUICtrlCreateObj($AcrobatObj, $left, $top, $width, $height)
    GUICtrlSetState($AcrobatObj_ctrl, $GUI_SHOW)
    Return $AcrobatObj_ctrl
    EndFunc ;==>_Acro_UDF_CreateCtrl

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

    sollte ja eigentlich ein arrayDisplay kommen, wo mir -> 200, 200, 10, 10 <- oder 200, 200, 210, 210 anzeigt ... oder ?

    macht es aber nicht .. wird kein array definiert .. :cursing:

  • GUI Object größe in gui ermitteln

    • vivus
    • 20. Februar 2013 um 16:19

    Hi !

    leider nein, du speicherst ja die Coordinaten in einer Globalen Variablen

    hier mein kleines beispiel, um euch zu demonstrieren, was ich eigentlich will :D

    Ich hoffe mal, dass jeder einen Acrobat reader instaliert hat ..

    man muss nur noch die Variable -> Global $_Acro_UDF_firstLoad_File = @ScriptDir & "\LOAD.pdf" <- mit einem PDF file das man hat befüllen ..

    Spoiler anzeigen
    [autoit]


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

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

    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1) ; Change to OnEvent mode , damit gui protokoll anderst abgearbeitet wird ( mit funktionen , nicht case )

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

    Global $_Acro_UDF_firstLoad_File = @ScriptDir & "\LOAD.pdf"

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

    Global $mainwindow = GUICreate(@ScriptName, 500, 500, 0, 0)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") ; wenn event $GUI_EVENT_CLOSE aktiviert wird, wird funktion "CLOSEClicked" aufgerufen
    Global $AcroObject1 = _Acro_UDF_initialization()
    Global $AcroObject2 = _Acro_UDF_initialization()
    Global $AcroOb1_Ctrl1 = _Acro_UDF_CreateCtrl($AcroObject1, 200, 200, 10, 10)
    Global $AcroOb1_Ctrl2 = _Acro_UDF_CreateCtrl($AcroObject2, 200, 200, 210, 210)

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

    GUISetState(@SW_SHOW) ; anzeigen des gui

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

    ; hier die Funktion die ich brauche

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

    For $i = 1 To 200 Step 1
    _Acro_UDF_reset($AcroObject1,$AcroOb1_Ctrl1, 0, 0, $i)
    _Acro_UDF_reset($AcroObject2,$AcroOb1_Ctrl2, 0, 0, 200-$i)
    sleep(200)
    Next

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

    While 1
    Sleep(400)
    WEnd

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

    Exit

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

    ;----------------------------------------------------------------

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

    Func _Acro_UDF_reset(ByRef $Object, ByRef $Obj_ctrl, $width = 0, $height = 0, $left = 0, $top = 0)

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

    GUICtrlSetState($Obj_ctrl, $GUI_HIDE)

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

    If $width = 0 Then
    ;$width = **GUICtrlGetPosition ** ($Obj_ctrl, "width")
    EndIf
    If $height = 0 Then
    ;$height = **GUICtrlGetPosition ** ($Obj_ctrl, "height")
    EndIf
    If $left = 0 Then
    ;$left = **GUICtrlGetPosition ** ($Obj_ctrl, "left")
    EndIf
    If $top = 0 Then
    ;$top = **GUICtrlGetPosition ** ($Obj_ctrl, "top")
    EndIf

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

    $Object = ObjCreate("AcroPDF.PDF.1")
    $Object.src = $_Acro_UDF_firstLoad_File

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

    $Obj_ctrl = GUICtrlCreateObj($Object, $left, $top, $width, $height)

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

    GUICtrlSetState($Object, $GUI_SHOW)

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

    EndFunc ;==>_Acro_UDF_reset

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

    Func CLOSEClicked()
    Terminate()
    EndFunc ;==>CLOSEClicked

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

    Func Terminate()
    Exit 0
    EndFunc ;==>Terminate

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

    ;----------------------------
    Func _Acro_UDF_initialization()
    $AcrobatObj = ObjCreate("AcroPDF.PDF.1")
    $AcrobatObj.src = $_Acro_UDF_firstLoad_File
    Return $AcrobatObj
    EndFunc ;==>_Acro_UDF_initialization

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

    Func _Acro_UDF_CreateCtrl($AcrobatObj, $width = 100, $height = 100, $left = 0, $top = 0)
    $AcrobatObj_ctrl = GUICtrlCreateObj($AcrobatObj, $left, $top, $width, $height)
    GUICtrlSetState($AcrobatObj_ctrl, $GUI_SHOW)
    Return $AcrobatObj_ctrl
    EndFunc ;==>_Acro_UDF_CreateCtrl

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

    Ihr seht, dass die 2 Obj_Ctrl 1/ 2

    Spoiler anzeigen
    [autoit]


    Global $AcroOb1_Ctrl1 = _Acro_UDF_CreateCtrl($AcroObject1, 200, 200, 10, 10)
    Global $AcroOb1_Ctrl2 = _Acro_UDF_CreateCtrl($AcroObject2, 200, 200, 210, 210)

    [/autoit]

    versetzt dargestellt werden .. gegenüberliegende kacheln.

    und ich diese in ihrer "top" position aber behalten möchte ..
    also Prinzipiell das obere wandert nach rechts das untere nach links

    Spoiler anzeigen
    [autoit]


    For $i = 1 To 200 Step 1
    _Acro_UDF_reset($AcroObject1,$AcroOb1_Ctrl1, 0, 0, $i)
    _Acro_UDF_reset($AcroObject2,$AcroOb1_Ctrl2, 0, 0, 200-$i)
    sleep(200)
    Next

    [/autoit]

    ist jetzt nur ein Beispiel. mir ist schon klar, dass ich die TOP position auch übergeben könnte.
    aber sinn einer Funktion sollte es ja sein, so modular wie möglich zu sein ..

    kann man es jetzt verstehen ?
    die funktion die ich suche ist

    Spoiler anzeigen
    [autoit]


    If $width = 0 Then
    ;$width = **GUICtrlGetPosition ** ($Obj_ctrl, "width")
    EndIf
    If $height = 0 Then
    ;$height = **GUICtrlGetPosition ** ($Obj_ctrl, "height")
    EndIf
    If $left = 0 Then
    ;$left = **GUICtrlGetPosition ** ($Obj_ctrl, "left")
    EndIf
    If $top = 0 Then
    ;$top = **GUICtrlGetPosition ** ($Obj_ctrl, "top")
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • GUI Object größe in gui ermitteln

    • vivus
    • 20. Februar 2013 um 15:30

    quatsch .. das IST doch meine GUI !! den Namen vergebe doch ich !!

    ABER in die GUI wird ein Object eingebunden ..... in ein Gui CTRL....
    dieses Gui CTRL bekommt ja bestimmte größen zugeteilt.

    d.h. meine Gui ( name - TEST ) hat eine fixe Größe von 500*500

    in der Gui befindet sich an Position 10/10 ein GuiCtrl ( welches ein Object beherbergt ) mit der größe 100*100

    wenn ich jetzt dieses GuiCtrl verändern will z.b. Pos: 33/33 Dim: 55*55

    müsste ich ja das Gui Ctrl NEU anlegen. ... wäre ja kein Problem soweit ABER ich will das Permanent wiederholend machen.
    Dies mit Hilfe einer Funktion.

    Anderst formuliert : Meine "TEST" Gui bleibt unverändert an einer Position im Bildschirm stehen / auch dessen Größe ist fix.

    nur mehrere Object in meiner "Test" Gui soll sich bewegen. deswegen kann ich auch die Position eines Objectes nicht irgend wo abspeichern und dann später einfach wieder holen,
    das ich die Funktion auf mehrere Objecte anwenden will ....

    Ich weis nicht wie ich mich anders ausdrücken soll. sorry :wacko:

  • GUI Object größe in gui ermitteln

    • vivus
    • 20. Februar 2013 um 14:58

    mmm geht weder mit

    Spoiler anzeigen
    [autoit]


    $Varaible = ControlGetPos("","",$Object)
    _ArrayDisplay($Varaible)

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

    ;noch mit

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

    $Varaible = ControlGetPos("","",$Object_CTRL)
    _ArrayDisplay($Varaible)

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

    sind die Windows Managment - Controls nicht nur für Programme ? ... ich suche ja eine Abgrafe GUI intern .. ( in meiner eigenen GUI )

  • GUI Object größe in gui ermitteln

    • vivus
    • 20. Februar 2013 um 13:08

    Hi @ all !

    Ich würde gerne wissen , wie ich aus einem ctrl Object die Werte für width , height , left, top ermitteln / auslesen kann.

    Ich würde das gerne in eine Funktion packen .. hier mein Ansatz

    Spoiler anzeigen
    [autoit]


    Func _renew(ByRef $Object, ByRef $Object_CTRL)

    $width = "die fehlende funktion"($Object_CTRL,"width")
    $height= "die fehlende funktion"($Object_CTRL,"height")
    $left= "die fehlende funktion"($Object_CTRL,"left")
    $top= "die fehlende funktion"($Object_CTRL,"$top")

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

    $Object = ObjCreate("........called...")
    $Object_CTRL= GUICtrlCreateObj($Object , $left-10, $top+50, $width*5, $height)

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

    EndFunc

    [/autoit]

    Ich hoffe ihr versteht was ich meine.

    Ich find einfach nix in der Hilfe...... ?(

  • Siemens Logo RCE 0BA7

    • vivus
    • 18. Januar 2013 um 08:09

    Hei Funkey !! freut mich von dir zu lesen !

    meinst du damit , dass die UDF Funktion _daveNewConnection($p_di, 1, 1, 0) in Wirklichkeit auf davePascalNewInterface der DLL verweist =?

    mmmm .. das ist mal n Tip , wo man die Suche beginnen könnte .. ;) da hab ich ja schon Tage verbraten .. :cursing:

  • Siemens Logo RCE 0BA7

    • vivus
    • 17. Januar 2013 um 16:35

    Hi !

    ich habe auf der Basis von Funkey's UDF mal was Probiert -> LibNoDave_UDF

    und zwar das ->

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include "LibNoDave.au3"

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

    Global $IPAddress = "172.18.65.201"
    _DaveInit()

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

    $fds = DllStructCreate($_daveOSserialType)

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

    $hSocket = _openSocket($IPAddress,102)
    DllStructSetData($fds, "rfd", $hSocket)
    DllStructSetData($fds, "wfd", $hSocket)

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

    ;MsgBox(0,"$hSocket","= "& $hSocket)

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

    $p_di = _daveNewInterface($fds,"IF1",0,$daveProtoISOTCP,$daveSpeed187k)
    ConsoleWrite("$p_di = " & $p_di & @CR)
    _daveInitAdapter($p_di)

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

    ;_daveSetTimeout($p_di, 5000000)

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

    ;$p_dc = _daveNewConnection($p_di, 2, 2, 0)
    $p_dc = _daveNewConnection($p_di, 1, 1, 0)
    ConsoleWrite("$p_dc = " & $p_dc & @CR)

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

    If ( _daveConnectPLC($p_dc) = 0 ) then
    MsgBox(0,"CONNECTET",";-) ")

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

    Else
    MsgBox(0,"dislike",_daveConnectPLC($p_dc))

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

    EndIf

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

    _closeSocket($hSocket)
    _DaveDeInit()

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

    Exit

    [/autoit]

    das müsste eigentlich 1 zu 1 laufen ..

    da mein code in c so aus sieht ->

    Spoiler anzeigen


    socket = 102;

    // variablen für libnodave
    daveInterface * di;
    daveConnection * dc;
    _daveOSserialType fds;
    daveSetDebug(daveDebugPrintErrors);

    fds.rfd=openSocket(socket, ip);
    fds.wfd=fds.rfd;

    if (fds.rfd>0) {
    if(debug) printf("openSocket accept auf %d über %s\n",socket, ip);
    di =daveNewInterface(fds,"IF1",0, daveProtoISOTCP, daveSpeed187k);
    daveSetTimeout(di,timeout);
    dc =daveNewConnection(di,1,1, 0);

    if (0==daveConnectPLC(dc)) {
    if(debug) printf("PLC connectet\n");

    res=daveReadBytes(dc,daveInputs,0,0,3,NULL);


    USW .. .. ..


    aber ich verzweifel ... es tut sich einfach nix .. und ich bin zu blind den Fehler zu sehen ... ;(

  • Siemens Logo RCE 0BA7

    • vivus
    • 17. Januar 2013 um 08:29

    Hi @ all

    Ich habe hier ein kleines Projekt, dass dem ein oder anderen nützlich sein kann, wenn er sich mit Hardware I/O's beschäftigt.

    Habe hier eine EXE namens LogAitDave geschrieben. ( in C )

    Welche via der libnodave.dll eine Kommunikation zur LOGORCE ( die mit Ethernet Anschluss ) aufbaut.
    Dann entsprechend einer Parametrisierung Werte in die LOGO schreibt oder liest.

    Zu der LogAitDave.exe habe ich natürlich eine AutoIt UDF geschrieben.

    Desweiteren um das ganze etwas besser zu beschreiben ein SimpleSample und Batch Beisiele.

    Und weil ich eh grad dran war noch eine komplette Visualisierung natürlich auch mit AutoIt ;)

    Wünsche / Anregungen / Änderungen / Tipps sind gerne gesehen.

    Interessant ist das Projekt vor allem für diejenigen unter euch, welche eine Art Gebäude / Haus oder Wohnung Automatisierung planen / umsetzen wollen.

    Eine Logo RCE ( 0BA7 ) gibt es schon für 200 € bietet 8 Eingänge und 4 Relais Ausgänge.

    Natürlich kann man mit Erweiterungsmodulen erweitern.

    PS: wenn jemand Erfahrungen zu libnodave.dl hat und sich an dem Projekt beteiligen will, ich suche noch eine Möglichkeit direkt aus AutoIt die LibnoDave anzusprechen.
    ( dann könnte man sich den Umweg um die LogAitDave sparen )

    Hab schon einiges diesbezüglich zusammengesammelt und verteile dass dann gern....

    Viel Spaß !!

    Dateien

    Release20130116.rar 1,38 MB – 719 Downloads

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™