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

Beiträge von funkey

  • DllCall und Array of Struct übergeben - ist das möglich?

    • funkey
    • 29. Oktober 2010 um 11:13

    Ich möchte gerne einer DLL-Funktion ein Array aus Strukturen übergeben. Ist das irgendwie möglich und wenn ja wie?
    Gibt es da einen Umweg oder geht es einfach nicht?
    Danke für etwaige Hilfen.

    Beispielcode
    [autoit]

    Global Const $_Struct = "byte[2];ushort;int"

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

    Global $hDLL = DllOpen("Sample.dll")

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

    Local $_Sample = DllStructCreate($_Struct[200]) ;hier ist das Problem

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

    Local $p_Sample = DllStructGetPtr($_Sample)

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

    Local $aRet = DllCall($hDLL, "int", "Sample", "ptr", $p_Sample)

    [/autoit]
  • WinSetOnTop bei InputBox(en) ... klappt nicht :(

    • funkey
    • 28. Oktober 2010 um 18:22

    Es müssen alle Parameter bis zum letzten angegeben werden, damit der Parameter 'hwnd' greifen kann.

  • ShellExecuteAs???

    • funkey
    • 27. Oktober 2010 um 15:45

    [ gelöst ] ShellExecuteAs??

  • listview mit großen icons und label

    • funkey
    • 21. Oktober 2010 um 19:50
    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GUIListView.au3>

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

    GUICreate('Test ListView', 175, 150)

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

    Opt("GUIOnEventMode", 1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "ExitScript")

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

    Global $listview = GUICtrlCreateListView('Icon', 0, 0, 175, 150)
    GUICtrlSetStyle(-1, $LVS_NOCOLUMNHEADER)

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

    ItemSetup('Recycle Bin', @WindowsDir & '\explorer.exe', 6)
    ItemSetup('Open Folder', @SystemDir & '\shell32.dll', 4)
    ItemSetup('Fixed Drive', @SystemDir & '\shell32.dll', 8)
    ItemSetup('My Computer', @SystemDir & '\shell32.dll', 15)
    ItemSetup('Taskbar/Start menu', @WindowsDir & '\explorer.exe', 5)
    ItemSetup('Desktop', @WindowsDir & '\explorer.exe', 3)

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

    _GUICtrlListView_SetColumnWidth($listview, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    GUISetState()
    While 1
    Sleep(5000)
    WEnd

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

    Func ExitScript()
    Exit
    EndFunc

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

    Func ListItemRemoveReAdd()
    Local $sel = _GUICtrlListView_GetSelectedIndices($listview, 1)
    Local $txt = _GUICtrlListView_GetItemText($listview, $sel[1])
    _GUICtrlListView_DeleteItem($listview, $sel[1])
    ItemSetup($txt, @SystemDir & '\shell32.dll', 0)
    EndFunc

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

    Func ItemSetup($name, $icon, $index)
    Local $item = GUICtrlCreateListViewItem($name, $listview)
    Local $menu = GUICtrlCreateContextMenu($item)
    GUICtrlCreateMenuItem("Remove/ReAdd", $menu, -1)
    GUICtrlSetOnEvent(-1, "ListItemRemoveReAdd")
    GUICtrlSetImage($item, $icon, $index)
    EndFunc

    [/autoit]
  • Maximiertes Fenster herunterziehen wie bei Win7 für XP und Vista

    • funkey
    • 19. Oktober 2010 um 12:36

    Neuerungen: (speziell für Bugfix ;))
    [Win]+[Pfeil oben] Fenster maximieren
    [Win]+[Pfeil unten] Fenster minimieren
    [Win]+[Pfeil links] auf halbe Monitorbreite maximiert, linksbündig
    [Win]+[Pfeil rechts] auf halbe Monitorbreite maximiert, rechtsbündig

  • Maximiertes Fenster herunterziehen wie bei Win7 für XP und Vista

    • funkey
    • 18. Oktober 2010 um 11:31

    Hab das Programm noch etwas überarbeitet, um mehr Win7-like zu sein.
    Nun ist das Tool optimal einsetzbar, also ab damit in den Autostart.

    Die Preview-Gui funktioniert bei mir nur langsam, deswegen habe ich sie uber die Variable '$With_Preview' deaktivierbar gemacht.

  • Button mit Counter

    • funkey
    • 18. Oktober 2010 um 10:29

    Oder so:

    Spoiler anzeigen
    [autoit]

    #Include <Timers.au3>

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

    Global $iSeconds = 10
    Global $ID = _Timer_SetTimer(0, 1000, "_Countdown")

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

    $ret = MsgBox(67, "Countdown", "You have 10 seconds.")
    ConsoleWrite($ret & @CRLF)

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

    Func _Countdown($hWnd, $Msg, $iIDTimer, $dwTime)
    $iSeconds -= 1
    If $iSeconds = 0 Then
    ControlClick("Countdown", "", "Button1")
    _Timer_KillTimer(0, $ID)
    Else
    ControlSetText("Countdown", "", "Static2", "You have " & $iSeconds & " seconds.")
    EndIf
    EndFunc

    [/autoit]
  • Bild auf Button

    • funkey
    • 17. Oktober 2010 um 14:11

    Wie sieht es damit aus?
    Buttons mit Icon und Label

  • Maximiertes Fenster herunterziehen wie bei Win7 für XP und Vista

    • funkey
    • 16. Oktober 2010 um 21:19

    Danke!
    Hab das Skript jetzt noch ein bischen erweitert.

  • Maximiertes Fenster herunterziehen wie bei Win7 für XP und Vista

    • funkey
    • 16. Oktober 2010 um 12:35

    Mal wieder ein kleines Hilfs-Skript von mir.
    Einfach ein maximiertes Fenster an der Titelleiste anklicken und herunterziehen um es wiederherzustellen, bzw. ein nicht maximiertes Fenster einfach nach oben schieben um es zu maximieren.
    Ebenfalls kann man das Fenster nach rechts oder links schieben, um es auf genau der Hälfte des Bildschirmes anzuzeigen.

    Neuerung:
    [Win]+[Pfeil oben] Fenster maximieren
    [Win]+[Pfeil unten] Fenster minimieren
    [Win]+[Pfeil links] auf halbe Monitorbreite maximiert, linksbündig
    [Win]+[Pfeil rechts] auf halbe Monitorbreite maximiert, rechtsbündig


    Viel Spaß!

    Spoiler anzeigen
    [autoit]

    ;#NoTrayIcon
    #include <Misc.au3>
    #include <WinAPI.au3>
    #include <Constants.au3>

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

    Opt("WinWaitDelay", 0)

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

    If @OSBuild > 6800 Then
    MsgBox(64, "Info", "You don't need to run this script. It is already a build in behavior of your Windows.")
    Exit
    EndIf

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

    #region Setting
    Global $With_Preview = 1
    HotKeySet("{Esc}", "_Exit")
    #endregion Setting

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

    HotKeySet("#{up}", "_up")
    HotKeySet("#{down}", "_down")
    HotKeySet("#{left}", "_left")
    HotKeySet("#{right}", "_right")

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

    Global $dll = DllOpen("user32.dll")
    Global $hwnd, $MousePos[2], $MousePos_old[2], $aPos
    Global $y = _WinAPI_GetSystemMetrics(31)
    Global $VirtualDesktopWidth = _WinAPI_GetSystemMetrics(78)
    Global $VirtualDesktopHeight = _WinAPI_GetSystemMetrics(79)
    Global $TaskBarHeight = WinGetPos("[Class:Shell_TrayWnd]")
    $TaskBarHeight = @DesktopHeight - $TaskBarHeight[1]

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

    If $With_Preview Then
    Global $hGui = GUICreate("Preview", @DesktopWidth, @DesktopHeight - $TaskBarHeight, 0, 0, 0x80000000, 0x000800A9)
    GUISetBkColor(0xABCDEF)
    _WinAPI_SetLayeredWindowAttributes($hGui, 0xABCDEF, 255)
    EndIf

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

    While 1
    Sleep(10)
    If _IsPressed(01, $dll) Then
    $hwnd = WinActive("")
    $MousePos = MouseGetPos()
    If Not _IsSizeable($hwnd) Then
    ElseIf $MousePos[1] < $y And $MousePos_old[1] < $MousePos[1] Then ;RESTORE
    If WinGetState($hwnd) = 47 Then
    Do
    Sleep(10)
    $MousePos = MouseGetPos()
    Until $MousePos[1] > $y
    If _IsPressed(01, $dll) Then
    WinSetState($hwnd, "", @SW_RESTORE)
    $MousePos = MouseGetPos()
    $aPos = WinGetPos($hwnd)
    WinMove($hwnd, "", $MousePos[0] - $aPos[2] / 2, $MousePos[1] - $y / 2)
    MouseUp("primary")
    MouseDown("primary")
    EndIf
    EndIf
    ElseIf $MousePos[1] = 0 And $MousePos_old[1] > 0 Then ;MAXIMIZE
    If WinGetState($hwnd) = 15 Then
    If $With_Preview Then
    If $MousePos[0] > @DesktopWidth Then
    WinMove($hGui, "", @DesktopWidth, 0, $VirtualDesktopWidth - @DesktopWidth, @DesktopHeight)
    Else
    WinMove($hGui, "", 0, 0, @DesktopWidth, @DesktopHeight - $TaskBarHeight)
    EndIf
    GUISetState(@SW_SHOWNOACTIVATE, $hGui)
    EndIf
    While 1
    Sleep(10)
    $MousePos = MouseGetPos()
    If $MousePos[1] > 0 Then
    If $With_Preview Then
    GUISetState(@SW_HIDE, $hGui)
    EndIf
    ExitLoop
    ElseIf Not _IsPressed(01) Then
    WinSetState($hwnd, "", @SW_MAXIMIZE)
    If $With_Preview Then GUISetState(@SW_HIDE, $hGui)
    ExitLoop
    EndIf
    WEnd
    EndIf
    ElseIf $MousePos[0] = 0 And $MousePos_old[0] > 0 Then ;LEFT HALF
    If WinGetState($hwnd) = 15 Then
    If $With_Preview Then
    WinMove($hGui, "", 0, 0, @DesktopWidth / 2, @DesktopHeight - $TaskBarHeight)
    GUISetState(@SW_SHOWNOACTIVATE, $hGui)
    EndIf
    While 1
    Sleep(10)
    $MousePos = MouseGetPos()
    If $MousePos[0] > 0 Then
    If $With_Preview Then
    GUISetState(@SW_HIDE, $hGui)
    EndIf
    ExitLoop
    ElseIf Not _IsPressed(01) Then
    WinMove($hwnd, "", 0, 0, @DesktopWidth / 2, @DesktopHeight - $TaskBarHeight)
    If $With_Preview Then GUISetState(@SW_HIDE, $hGui)
    ExitLoop
    EndIf
    WEnd
    EndIf
    ElseIf $MousePos[0] = $VirtualDesktopWidth - 1 And $MousePos_old[0] < $VirtualDesktopWidth - 1 Then ;RIGHT HALF
    If WinGetState($hwnd) = 15 Then
    If $With_Preview Then
    WinMove($hGui, "", @DesktopWidth / 2, 0, @DesktopWidth / 2, @DesktopHeight - $TaskBarHeight)
    GUISetState(@SW_SHOWNOACTIVATE, $hGui)
    EndIf
    While 1
    Sleep(10)
    $MousePos = MouseGetPos()
    If $MousePos[0] < $VirtualDesktopWidth - 1 Then
    If $With_Preview Then
    GUISetState(@SW_HIDE, $hGui)
    EndIf
    ExitLoop
    ElseIf Not _IsPressed(01) Then
    WinMove($hwnd, "", @DesktopWidth / 2, 0, @DesktopWidth / 2, @DesktopHeight - $TaskBarHeight)
    If $With_Preview Then GUISetState(@SW_HIDE, $hGui)
    ExitLoop
    EndIf
    WEnd
    EndIf
    EndIf
    $MousePos_old = $MousePos
    EndIf
    WEnd

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

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

    Func _Up()
    Local $WinHandle = WinActive("")
    If Not _IsSizeable($WinHandle) Then Return
    WinSetState($WinHandle, "", @SW_MAXIMIZE)
    EndFunc

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

    Func _Down()
    Local $WinHandle = WinActive("")
    If Not _IsSizeable($WinHandle) Then Return
    If WinGetState($WinHandle) = 47 Then
    WinSetState($WinHandle, "", @SW_RESTORE)
    Else
    WinSetState($WinHandle, "", @SW_MINIMIZE)
    EndIf
    EndFunc

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

    Func _Left()
    Local $WinHandle = WinActive("")
    If Not _IsSizeable($WinHandle) Then Return
    Local $WinPos = WinGetPos($WinHandle)
    If $VirtualDesktopWidth = @DesktopWidth Or $WinPos[0] + $WinPos[2]/2 < @DesktopWidth Then
    WinSetState($WinHandle, "", @SW_RESTORE)
    WinMove($WinHandle, "", 0, 0, @DesktopWidth / 2, @DesktopHeight - $TaskBarHeight)
    Else
    WinSetState($WinHandle, "", @SW_RESTORE)
    WinMove($WinHandle, "", @DesktopWidth, 0, @DesktopWidth / 2, @DesktopHeight)
    EndIf
    EndFunc

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

    Func _Right()
    Local $WinHandle = WinActive("")
    If Not _IsSizeable($WinHandle) Then Return
    Local $WinPos = WinGetPos($WinHandle)
    If $VirtualDesktopWidth = @DesktopWidth Or $WinPos[0] + $WinPos[2]/2 < @DesktopWidth Then
    WinSetState($WinHandle, "", @SW_RESTORE)
    WinMove($WinHandle, "", @DesktopWidth / 2, 0, @DesktopWidth / 2, @DesktopHeight - $TaskBarHeight)
    Else
    WinSetState($WinHandle, "", @SW_RESTORE)
    WinMove($WinHandle, "", $VirtualDesktopWidth - @DesktopWidth / 2, 0, @DesktopWidth / 2, @DesktopHeight)
    EndIf
    EndFunc

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

    Func _IsSizeable($hWnd)
    Local $Style = DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $hwnd, "long", -16) ;$GWL_STYLE
    If @error Then
    Return 0
    Else
    Return BitAND($Style[0], 0x00040000) > 0
    EndIf
    EndFunc

    [/autoit]

    Dateien

    Win7 WindowBehavior.au3 5,76 kB – 395 Downloads
  • LibNoDave-UDF zur Kommunikation mit Simatic SPS

    • funkey
    • 15. Oktober 2010 um 13:33

    Hallo.

    Mittels dieser UDF ist es möglich die LibNoDave.DLL zu verwenden, um damit eine Kommunikation zu einer SIMATIC SPS herzustellen, um Werte auszulesen oder zu schreiben.
    Mit dem beigefügten Demo-Skript können einfach die Kommunikationsparameter eingestellt werden, um die Verbindung zur SPS zu testen.

    http://libnodave.sourceforge.net/

    Viel Spaß beim Basteln eurer eigenen Visualisierung.

    Tip: Die RM-Chart-UDF von prog@ndy kann gut für eine Trendanzeige verwendet werden.


    Info: Die jeweils aktuellste UDF bekommt ihr auf Anfrage, da ich ständig versuche neue nützliche Funktionen hinzuzufügen.

    Dateien

    LibNoDave_2013_10_30.au3 124,05 kB – 861 Downloads Demo LibNoDave.au3 16,52 kB – 1.457 Downloads LibNoDave.au3 40,73 kB – 1.249 Downloads
  • Hilfe zu einer OpenSource DLL um Daten aus einer SIMATIC-SPS auszulesen

    • funkey
    • 14. Oktober 2010 um 09:43

    @Mr_gitarre: Was meinst du mit SMS-Eingängen?

    @All: Soll ich die UDF in Skripte posten? Besteht Interesse?

  • Hilfe zu einer OpenSource DLL um Daten aus einer SIMATIC-SPS auszulesen

    • funkey
    • 13. Oktober 2010 um 13:33

    Vielen Dank!

    Mit eurer Hilfe ist es mir nun gelungen eine Verbindung zu der SPS aufzubauen und Daten auszulesen! Super! :thumbup:
    Es sind aber noch viele Funktionen zu übersetzen.

    Könnte mir bitte noch jemand mit der Funktion '_daveGetBlockInfo' helfen. Da sehe ich nicht, was ich falsch gemacht habe.
    Edit: Hab den Fehler gefunden.

  • Happy Birthday Progandy

    • funkey
    • 11. Oktober 2010 um 09:19

    Auch von mir noch alles Gute!! :party:

  • den inhalt eines ordners auf einem linux server auflisten

    • funkey
    • 18. September 2010 um 02:04

    Wie wäre es mit einer Samba-Freigabe?

  • Icons für Listviewitems

    • funkey
    • 17. September 2010 um 22:33

    Schau dir mal das Hilfe-Beispiel von z.B. _GUICtrlListView_CreateSolidBitMap oder _GUICtrlListView_SetImageList oder _GUICtrlListView_SetItemImage an.

  • hilfe mit registry und runas

    • funkey
    • 14. September 2010 um 02:46

    Ich würde es mal mit einem anderen logon_flag versuchen.

  • "Transparenter" Slider?

    • funkey
    • 10. September 2010 um 20:44

    Selber basteln!


    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <Misc.au3>

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

    Opt("MouseCoordMode", 2)

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

    $Form1 = GUICreate("Transparenter Slider?", 282, 158, 375, 262)
    $Pic = GUICtrlCreatePic(@ScriptDir & "/pic.jpg",0,0,300,300, 0)

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

    $Slider1 = GUICtrlCreateSlider(20, 26, 200, 25)

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

    $Slider2a = GUICtrlCreateLabel("", 20, 86, 200, 2, 0x1000)
    $Slider2b = GUICtrlCreateButton("", 30, 76, 10, 20)

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

    $Anzeige = GUICtrlCreateLabel("0 %", 240, 76, 30, 20, 0x201)
    GUICtrlSetBkColor(-1, -2)

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

    GUISetState()

    Local $Pos, $MousePosX, $Diff, $Stellung, $Stellung_alt
    Local $0Prozent = 30
    Local $100Prozent = 200

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    $aInfo = GUIGetCursorInfo()
    If $aInfo[2] = 1 And $aInfo[4] = $Slider2b Then
    $Pos = ControlGetPos($Form1, "", $Slider2b)
    $MousePosX = MouseGetPos(0)
    $Diff = $MousePosX - $Pos[0]
    Do
    If MouseGetPos(0) - $Diff < $0Prozent Then
    GUICtrlSetPos($Slider2b, $0Prozent, $Pos[1])
    ElseIf MouseGetPos(0) > ($100Prozent) Then
    GUICtrlSetPos($Slider2b, $100Prozent, $Pos[1])
    Else
    GUICtrlSetPos($Slider2b, $MousePosX - $Diff, $Pos[1])
    EndIf
    $Pos = ControlGetPos($Form1, "", $Slider2b)
    $MousePosX = MouseGetPos(0)
    $Stellung = StringFormat("%3.0f %%", 100 * ($Pos[0] - $0Prozent)/ ($100Prozent - $0Prozent))
    If $Stellung <> $Stellung_alt Then
    GUICtrlSetData($Anzeige, $Stellung)
    EndIf
    $Stellung_alt = $Stellung
    Sleep(20)
    Until Not _IsPressed("01")
    EndIf
    WEnd

    [/autoit]

    Du kannst aber auch folgenden Style probieren:

    [autoit]

    Global Const $TBS_TRANSPARENTBKGND = 0x1000

    [/autoit]


    Keine Ahnung ob das funktioniert, den Style gibt's erst für Vista und darüber!

  • Euer größtes Projekt?

    • funkey
    • 9. September 2010 um 18:35

    Hallo!
    Hab mir meine eigene Visualisierung mit Autoit zusammengebaut. Ich benutze dafür eine DLL mittels derer ich Daten von der SPS (Siemens S7-300) übers Netzwerk lese und schreibe. Für diese DLL habe ich mir eine Wrapper-UDF gebastelt.
    Insgesamt werden der Status von über 60 Antrieben, 300 Alarme und ca. 20 Analogwerte alle 2 Sekunden ausgelesen.
    Es gibt auch ein Errorlogging-Tool, ein Trending-Tool und ein SMS-Tool dazu.
    Das ganze benötigt im Normalfall ca 500ms um die Daten zu aktualisieren, kann aber länger dauern, wenn verschiedene Fenster geöffnet werden.

  • Transparente Combobox (OwnCombo)

    • funkey
    • 9. September 2010 um 15:43

    Hatte da wohl einen Fehler übersehen, als ich das Skript umgebaut habe. Code im Post#1 ausgebessert.

    Danke.

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™