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

Beiträge von TJF

  • Schleifenproblem

    • TJF
    • 4. Mai 2015 um 10:27

    Es gibt keine feste Anzahl. Größenordnung aber mal etwa 10 Stück ... Mit dem OnEventMode habe ich schon angefangen zu experimentieren. Es hakt aber immer irgendwo in Sachen Schleife, weil eine unbestimmte Anzahl an Controls, die beim Start gar nicht existieren, erst generiert werden. Alleine wenn ich das Tab umschalte und wieder zurück schalte, sollen diese Controls weiter aktiv sein...

    Deshalb bin ich nochmal auf das o.g. einfache Beispiel zurück geswitcht. Ich teste das heute Abend - auch mit der definierten Variable von name22 (->Danke!).

  • Schleifenproblem

    • TJF
    • 4. Mai 2015 um 09:41

    Es sollen aber am Ende mehrere dieser Bilder geladen werden, wo jedes als "Link" dienen soll (wie Button1, 2,3...). Bin mir jetzt nicht sicher, ob ich Dich richtig verstehe...

  • Schleifenproblem

    • TJF
    • 3. Mai 2015 um 22:02

    Hallo,

    ich habe hier mal in aller Reduziertheit mein Problem aufgeschrieben. Zur Reproduzierung ist die anliegende Datei und ein jpg notwendig. Folgendes gelingt mir nicht:

    - Case $iBild (Ansprechbarkeit des Controls, das auf Tab3 im Scrollfenster erscheint)

    ... in Verbindung mit dem Umschalten der Tabs und dem dann folgenden erneuten Anklicken des Bildes.

    Dank und Gruß
    Thomas

    Spoiler anzeigen
    AutoIt
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StructureConstants.au3>
    #include <GUIScrollBars.au3>
    #include <ScrollBarConstants.au3>
    #include "GuiScroll.au3"	; -> http://autoit.de/index.php?page=Thread&postID=162464#post162464
    #include <ScreenCapture.au3>
    
    
    Global $iBild
    
    
    startGui()
    
    
    Func startGui()
    	global $mainGui = GUIcreate("Titel", 600, 600)
    
    
    	$tab = GUICtrlCreateTab(-1,-1,600,600)
    	$tab1 = GUICtrlCreateTabItem("Tab1")
    	GUICtrlSetState(-1, $GUI_SHOW)
    	$tab2 = GUICtrlCreateTabItem("Tab2")
    	$tab3 = GUICtrlCreateTabItem("Tab3")
    	$buttonStart = GUIctrlcreatebutton("start", 10, 30,120,30)	
    	$tab4 = GUICtrlCreateTabItem("Tab4")
    	$tab5 = GUICtrlCreateTabItem("Tab5")
    	GUICtrlCreateTabItem("")
    
    
    	GUIsetstate()
    
    
    	$hGroup2 = GUICreate("",270,170,235,25,BitOR($WS_POPUP,$WS_BORDER,$WS_GROUP,$WS_VSCROLL,$WS_CLIPSIBLINGS),$WS_EX_MDICHILD,$mainGui)
    	GUISetBkColor(0xffffff)
    	GUICtrlCreateButton("Testbutton", 10, 170, 100, 25)
    	Scrollbar_Create($hGroup2, $SB_VERT, 170 + 25) ; alle 3 Top-Werte (170 auch für Button und GuiCreate) einstellen um den Scrollpunkt festzulegen! +25 macht 25 Pix scrollbar
    	Scrollbar_Step(10, $hGroup2, $SB_VERT)
    
    
    
    
    	While 1
    		$msg = GUIgetmsg()
    		Switch $msg
    			Case $tab
    				If GUICtrlRead($tab, 1) = $tab3 Then
    					GUISetState(@SW_SHOW, $hGroup2)
    					WinActivate($mainGui)
    					$iBild = _Bildvorschau($hGroup2,@ScriptDir & "\bild.jpg")
    				Else
    					GUISetState(@SW_HIDE, $hGroup2)
    				EndIf
    			;Case $iBild
    				;MsgBox("","Button gedrückt...","")
    			Case $buttonStart
    				ConsoleWrite("start()")
    			Case $GUI_EVENT_CLOSE
    				ConsoleWrite("exit"  & @CRLF)
    				Exit
    		EndSwitch
    	WEnd
    EndFunc ; ==> startGui()
    
    
    Func _Bildvorschau($hGui,$sImage)
    	Local Const $iWidth = 100, $iHeight = 100 ; Soll-Vorschaugroesse
    	Local Const $iX = 10, $iY = 10 ; x und y Abstand
    	GUISwitch($hGUI)
    	_GDIPlus_Startup() ;initialize GDI+
    	Local $hImage = _GDIPlus_BitmapCreateFromFile($sImage)
    	Local $hBitmap = _GDIPlus_ImageResize($hImage, $iWidth, $iHeight)
    	Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    
    
    	$cPic = GUICtrlCreatePic("", $iX, $iY, $iWidth, $iHeight)
    	GUICtrlSendMsg($cPic, 0x0172, 0, $hHBitmap)
    
    
    	_WinAPI_DeleteObject($hHBitmap)
    	_GDIPlus_BitmapDispose($hBitmap)
    	_GDIPlus_ImageDispose($hImage)
    	_GDIPlus_Shutdown()
    	Return $cPic
    EndFunc
    Alles anzeigen

    Dateien

    GuiScroll.au3 8,17 kB – 452 Downloads
  • _GDIPlus_GraphicsDrawImageRectRect​ - Handle

    • TJF
    • 26. April 2015 um 20:23

    Geht aber wahrscheinlich einfach mit GUISwitch ...

  • _GDIPlus_GraphicsDrawImageRectRect​ - Handle

    • TJF
    • 26. April 2015 um 20:13

    Tausend Dank! Das ist der entscheidende Schritt. Ich habe jetzt nur dummerweise oben nicht gepostet, dass ich die Funktion mit

    • _Bildvorschau($hGUI, $hHBmp)

    aus

    • Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)

    benutze, weil das Vorschaubild nicht wie hier der Einfachheit wegen dargestellt, nicht in der Haupt-GUI erscheint.

    Spoiler anzeigen
    [autoit][/autoit] [autoit]
    • #include <GUIConstantsEx.au3>
    • #include <ScreenCapture.au3>
    • Local $hHBmp = @ScriptDir & "\bildgross.jpg"
    • Local Const $iWidth = 100, $iHeight = 100 ; Soll-Vorschaugroesse
    • Local Const $iX = 10, $iY = 10 ; x und y Abstand
    • Local $hGUI = GUICreate("GDI+ example", 600, 600)
    • GUISetState(@SW_SHOW)
    • _Bildvorschau($hGUI, $hHBmp)
    • Do
    • Until GUIGetMsg() = $GUI_EVENT_CLOSE
    • GUIDelete($hGUI)
    • Func _Bildvorschau($hGUI, $hHBmp)
    • _GDIPlus_Startup() ;initialize GDI+
    • Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    • Local $hBitmap = _GDIPlus_BitmapCreateFromFile($hHBmp)
    • Local $height = _GDIPlus_ImageGetHeight($hBitmap)
    • Local $width = _GDIPlus_ImageGetWidth($hBitmap)
    • _WinAPI_DeleteObject($hHBmp)
    • _GDIPlus_GraphicsDrawImageRectRect($hGraphics, $hBitmap, 0, 0, $width , $height, $iX, $iY, $iWidth, $iHeight, $hIA)
    • ; hier sollte das Handle übergeben werden - was es nicht gibt...?
    • _GDIPlus_ImageAttributesDispose($hIA)
    • _GDIPlus_GraphicsDispose($hGraphics)
    • _GDIPlus_BitmapDispose($hBitmap)
    • _GDIPlus_Shutdown()
    • EndFunc

    [autoit]

    [/autoit] [autoit][/autoit][/autoit]
  • _GDIPlus_GraphicsDrawImageRectRect​ - Handle

    • TJF
    • 26. April 2015 um 18:55

    Hallo,

    ich nehme ein großes jpg und will es als kleines Vorschaubild darstellen. Das funktioniert mit der folgenden Funktion bestens. Nun soll aber das Vorschaubild "verlinkt" werden, d.h. es sollte seine ControlID abgefragt werden um case-sensitiv bei einem Klick darauf (wie z.B. mit GUICtrlCreateButton) eingesetzt zu werden. Das geht aber nicht, weil _GDIPlus_GraphicsDrawImageRectRect kein Handle zurück gibt.

    Hat jemand eine Idee, wie man das lösen kann?

    Dank und Gruß
    Thomas

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <ScreenCapture.au3>

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

    Local $hHBmp = @ScriptDir & "\bildgross.jpg"
    Local Const $iWidth = 100, $iHeight = 100 ; Soll-Vorschaugroesse
    Local Const $iX = 10, $iY = 10 ; x und y Abstand
    Local $hGUI = GUICreate("GDI+ example", 600, 600)

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

    GUISetState(@SW_SHOW)

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

    _Bildvorschau($hHBmp)

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete($hGUI)

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

    Func _Bildvorschau($hHBmp)
    _GDIPlus_Startup() ;initialize GDI+
    Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    Local $hBitmap = _GDIPlus_BitmapCreateFromFile($hHBmp)
    Local $height = _GDIPlus_ImageGetHeight($hBitmap)
    Local $width = _GDIPlus_ImageGetWidth($hBitmap)
    _WinAPI_DeleteObject($hHBmp)
    _GDIPlus_GraphicsDrawImageRectRect($hGraphics, $hBitmap, 0, 0, $width , $height, $iX, $iY, $iWidth, $iHeight, $hIA)
    ; hier sollte das Handle übergeben werden - was es nicht gibt...?
    _GDIPlus_ImageAttributesDispose($hIA)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    EndFunc

    [/autoit]
  • RibbonsBar (Office 2007 Bar) UDF

    • TJF
    • 14. April 2015 um 19:34

    Hallo,

    kann mir jemand bitte sagen, wie man am einfachsten eine von mehreren "Tab-Seiten" komplett in den Hide/Show-Zustand bringen kann? Mir gelingt das nur, wenn alle einzelnen Controls aktiviert/deaktiviert werden. Vielleicht habe ich auch eine veraltete Version(0.2.19 Beta). Die Download-Links auf der ersten Seite funktionieren ja nicht mehr - wie zahlreiche alte Links.

    Vielleicht hat jemand ein Beispiel...?

    Dank und Gruß
    Thomas

  • For Next Schleife - von innen ändern

    • TJF
    • 25. Juli 2014 um 08:40

    Hervorragend! Danke!

  • For Next Schleife - von innen ändern

    • TJF
    • 25. Juli 2014 um 06:44

    Ahh... "continueloop" isses ...

    Danke!

    Hat noch jemand eine Idee wie man an der Stelle der Schleife anstatt vorwärts mit $i (höherer Wert) um einen Wert zurück kommt? Also einen "step -1".

  • For Next Schleife - von innen ändern

    • TJF
    • 24. Juli 2014 um 22:26

    Hallo,

    hat jemand eine Idee, wie man eine Schleife wie...

    For $i = 1 To $info1
    .....
    Next

    von innen heraus hochsetzen kann? Also wenn $i z.B. innerhalb der Schleife gerade "$i=2" ist und man das innerhalb der Schleife um z.B. "4" hochsetzen möchte (GUICtrlSetOnEvent...), sodass der nächste Durchgang anstatt mit "3" mit "6" weitergeht?

    Dank und Gruß
    Thomas

  • CD Infomationen (Artist, Name, Titel und noch vieles mehr) von FreeDB.org empfangen

    • TJF
    • 3. März 2014 um 10:58

    ...schöner ist in diesem Sinne die Version von progandy, die die o.g. Variante einfach ersetzt. Eine überflüssige Zeile (doppelt gemoppelter error...) raus und es funktioniert:

    Spoiler anzeigen
    [autoit]


    Func __TCPRecv($hSocket,$iEmptyTime=500,$iTimeOut=20000)
    Local $sRecv = ""
    Local $hTi = TimerInit()
    While 1
    $sRecvt = ""
    $timer2 = TimerInit()
    Do
    $sRecvt &= TCPRecv($hSocket,1024)
    ;If @error Then Return SetError(@error,0,0)
    Until $sRecvt <> "" Or TimerDiff($timer2) > $iEmptyTime
    If $sRecvt = "" Then ExitLoop
    $sRecv &= $sRecvt
    If TimerDiff($hTi) > $iTimeOut Then ExitLoop
    WEnd
    If TimerDiff($hTi) > $iTimeOut Then Return SetError(1, 0, "Timeout")
    Return $sRecv
    EndFunc

    [/autoit]
  • CD Infomationen (Artist, Name, Titel und noch vieles mehr) von FreeDB.org empfangen

    • TJF
    • 3. März 2014 um 09:37

    Hallo,

    kann sein, dass es an Win7/8 oder am neueren Compiler liegt. Auf jeden Fall funktionierte das nicht mehr wie es sollte...

    Deshalb ein schnelles Update zur Korrektur einer Funktion in der "CDDB.au3":

    Spoiler anzeigen
    [autoit]


    Func __TCPRecv($hSocket, $iSleep = 100, $iTimeOut = 20000, $iBuffersize = 1024, $iForceBinary = 0) ; NEU Sleep auf 100 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Local $sRecv, $sRet, $iErr = 0, $hTi
    $hTi = TimerInit()
    Sleep($iSleep) ; NEU !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    While TimerDiff($hTi) <= $iTimeOut
    $sRecv = TCPRecv($hSocket, $iBuffersize, $iForceBinary)
    Sleep($iSleep) ; NEU !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    $iErr = @error
    If $iErr Then ExitLoop
    While StringLen($sRecv)
    $sRet &= $sRecv
    Sleep($iSleep) ; NEU !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    $sRecv = TCPRecv($hSocket, $iBuffersize, $iForceBinary)
    Sleep($iSleep) ; NEU !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    $iErr = @error
    If (Not StringLen($sRecv)) Or $iErr Then ExitLoop 2
    If TimerDiff($hTi) > $iTimeOut Then ExitLoop
    WEnd
    Sleep($iSleep)
    WEnd
    If TimerDiff($hTi) > $iTimeOut Then Return SetError(1, 0, "Timeout")
    If $iErr Then Return SetError($iErr, 0, 0)
    Return $sRet
    EndFunc ;==>__TCPRecv

    [/autoit]

    Das kann man insgesamt auch anders machen, indem man auf die konkreten Strings wartet. So sollte es aber auch gehen...

    Gruß
    Thomas

  • Bildschirmschoner Win7 Registry

    • TJF
    • 15. April 2013 um 14:19

    Hallo,

    ich schreibe ein kleines Programm. das in einem Netzwerk für alle XP und Win7-Rechner einen bestimmten Bildschirmschoner (*.jpgs) aktiviert. Unter XP ist das kein Problem mit dem systemeigenen Bildschirmschoner. Da werden Registry-Einträge verwendet plus ein Ordner mit den Bildern installiert. Bei Win7 funktioniert das ja so nicht.

    Kann mir jemand einen Tipp geben, wie das mit Win7 ähnlich zu machen ist? Gerne auch mit einem externen Freeware-Bildschirmschoner. Das ganze muss nur wie z.B. bei XP (s.o.) vorkonfigurierbar sein.

    Dank und Gruß
    Thomas

  • RegWrite - Pfad zu Programm

    • TJF
    • 12. März 2013 um 08:37

    Hi,

    vielen Dank! Funktioniert. Nur die doppelten Backslashes müssen dann weg. Die stammen aus dem Registry-Export...

    Gruß
    Thomas

  • RegWrite - Pfad zu Programm

    • TJF
    • 11. März 2013 um 18:07

    Hallo,

    kann mir jemand sagen, wie ich die zweite Zeile diese Strings mit RegWrite schreibe?

    [HKEY_CURRENT_USER\Control Panel\Desktop]
    "SCRNSAVE.EXE"="C:\\WINDOWS\\system32\\ssmypics.scr"

    Die erste geht so :)

    [autoit]


    RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop")

    [/autoit]

    Dank und Gruß
    Thomas

  • IconDock - Mac style Icon toolbar

    • TJF
    • 5. Dezember 2012 um 16:54

    Das passiert auch, wenn man eine Dauerschleife baut:

    [autoit]


    While 1
    Sleep(100)
    WEnd

    [/autoit]
  • IconDock - Mac style Icon toolbar

    • TJF
    • 5. Dezember 2012 um 08:19

    Hi,

    das isses leider auch nicht. Obwohl GUIGetMsg nochmal vorhanden ist. Auch mit

    [autoit]


    While 1
    Sleep(100)
    Opt("GUIOnEventMode", 1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_ende")
    WEnd

    [/autoit]


    funktioniert das nur, wenn die Msgbox drin ist... ?( ?(

    Gruß
    Thomas

  • IconDock - Mac style Icon toolbar

    • TJF
    • 4. Dezember 2012 um 22:19

    Hi,

    ich habe da mal testweise eine Funktion "_test()" mit einem Button verbunden, die eine kleine GUI aufruft (hier: _IconDock_IconSetBitmap.au3):

    [autoit]


    Func _test()
    $testgui = GUICreate("Gui")
    GUISetState(@SW_SHOW,$testgui)
    ;MsgBox(0,"Test","test",1) ; Msgbox muss aktiviert sein hier

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

    While 1
    Sleep(100)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Wend

    EndFunc

    [/autoit]


    Das Ding stürzt ab - ausser die Msgbox-Zeile ist aktiviert - und ich weiß nicht warum... ?(

    Kann mir jemand sagen, woran das liegt?

    Dank und Gruß
    Thomas

  • RibbonsBar (Office 2007 Bar) UDF

    • TJF
    • 30. November 2012 um 11:20

    Hi Chris,

    die beiden dlls sind es nicht. Danke auf jeden Fall. Die Lösung des Problems liegt leider auf einer ganz anderen Baustelle.

    Viele Grüße
    Thomas

  • RibbonsBar (Office 2007 Bar) UDF

    • TJF
    • 29. November 2012 um 18:27

    Danke! Jetzt sind die Icons aus der shell32.dll in Win transparent. Das isses aber dann nicht für Wine: Dort sind auch diese Icons wie die aus den *icon.dll nicht transparent. Gibt es da eine bestimmte dll, die dafür zuständig sein könnte? Der Process-Monitor zeigt zu viele dlls an, die da ins Spiel kommen nach dem Programmstart ...

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™