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

Beiträge von Strahleman

  • Computername über DLL ermitteln

    • Strahleman
    • 14. August 2012 um 12:54

    Hallo AspirinJunkie,

    dein Code hat leider keinen Erfolg gebracht.
    Danke für den Hinweis mit dem DllOpen und DllClose, ich habe nur auf Nummer Sicher gehen wollen, da ich ja keine Ergebnisse bekommen habe.
    Gibt's noch eine andere Idee, warum ich den Computer-Namen nicht auslesen kann?

  • Computername über DLL ermitteln

    • Strahleman
    • 14. August 2012 um 12:04

    Hallo Autoitter,

    Ich würde gerne meine Fähigkeiten beim Umgang mit DLLs in Autoit verbessern.
    Zu diesem Zweck habe ich einige DLL-Aufrufe in eigene Funktionen eingebaut.
    Auch mit Unterstützung von Bug-fix DLL-Tutorial hab ich einiges ausprobiert.
    Allerdings habe ich nun das Problem mit der Funktion "GetComputerName":
    C++

    Code
    BOOL WINAPI GetComputerName(
      __out    LPTSTR lpBuffer,
      __inout  LPDWORD lpnSize
    );


    Wie müsste dieser Code in Autoit aussehen?
    Ich bin mir im Klaren darüber, dass es das Makro @ComputerName gibt, mir geht es um die richtige Verwendung der DLL!

    Bisher habe ich folgendes:

    [autoit]

    Func _GetComputerName()
    $fkernel32 = @SystemDir & "\" & "kernel32.dll"
    $function = "GetComputerName"
    $MaxLength = 15
    $lpBuffer = DllStructCreate("char[" & $MaxLength + 2 & "]")
    $nSize = DllStructCreate("int nSize")
    $dll = DllOpen($fkernel32)
    $return = DllCall($dll, "int", $function, "ptr", DllStructGetPtr($lpBuffer), "int_ptr", DllStructGetPtr($nSize))
    DllClose($dll)
    Return DllStructGetData($lpBuffer,1)
    EndFunc

    [/autoit]

    Hierbei bekomme ich keine Ergebnisse! (Aber auch keine Fehlermeldungen)

    Gruß
    Der Strahleman 8)

  • Zeileumbruch in GUICtrl-Edit

    • Strahleman
    • 24. Juli 2012 um 09:21

    BugFix : Hallo. Ja da hast du Recht. Ich versuche nur immer die Programme so klein wie möglich zu halten und nehme bei nur ein paar Konstanten lieber die Style-Werte. Aber wenn ich Zeit habe schreibe ich die Bedeutungen der Style-Werte als Kommentar daneben. ...Und manchmal vergesse ich es aber auch ;)

  • Zeileumbruch in GUICtrl-Edit

    • Strahleman
    • 24. Juli 2012 um 07:56

    Hallo UdeF,

    das funktioniert leider nicht so wie du denkst.

    Das Edit erhält scheinbar immer zu Beginn seine Eigenschaften für einen weichen Zeilenumbruch. Deshalb würde mir nur der Trick mit zwei unterschiedlich formatierten Editfelder und der wechselnden Anzeige einfallen.

    Spoiler anzeigen
    [autoit]

    Opt("GUIOnEventMode", 1)
    Opt("GUICloseOnESC", 0)

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

    Global $text = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
    Local $NewStyle

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

    $gui = GUICreate("Edit mit Zeilenumbruch", 300, 300)
    GUISetOnEvent(-3,"_Ende")
    $EditText1 = GUICtrlCreateEdit($text, 10, 10, 280, 150, 0x00100080)
    $EditText2 = GUICtrlCreateEdit($text, 10, 10, 280, 150, 0x00201000)
    GUICtrlSetState($EditText2, 0x0020)
    $btnToggle = GUICtrlCreateButton("Switch", 50, 180, 200, 100)
    GUICtrlSetOnEvent(-1, "zeilenumbruch")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func zeilenumbruch()
    ConsoleWrite("> zeilenumbruch()" & @CRLF)
    If $NewStyle = False Then
    GUICtrlSetState($EditText1, 0x0020)
    GUICtrlSetState($EditText2, 0x0010)
    ConsoleWrite("- Zeilenumbruch AN" & @CRLF)
    $NewStyle = True
    Else
    GUICtrlSetState($EditText1, 0x0010)
    GUICtrlSetState($EditText2, 0x0020)
    ConsoleWrite("- Zeilenumbruch AUS" & @CRLF)
    $NewStyle = False
    EndIf
    EndFunc ;==>zeilenumbruch

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

    Func _Ende()
    Exit
    EndFunc

    [/autoit]

    Der Strahleman 8)

  • Input-Feld deaktivieren wenn Combo1 gewählt

    • Strahleman
    • 20. Juli 2012 um 12:57

    Hallo Fuschio,


    Probiere es doch mal mit dem Auslesen der ComboBox und automatischem Ändern der GuiCtrlSetState-Anweisung des Inputfeldes.

    [autoit]


    #include <GUIConstants.au3>
    Global $strCombo1, $strCombo1_old
    $Form1 = GUICreate("Auswahl", 625, 443, 556, 260)
    $Label1 = GUICtrlCreateLabel("Firma", 192, 72, 36, 17)
    $Combo1 = GUICtrlCreateCombo("", 232, 72, 265, 25)
    GUICtrlSetData($Combo1, 'Firma1')
    GUICtrlSetData($Combo1, 'Firma2')
    $Label2 = GUICtrlCreateLabel("e-mail", 192, 104, 36, 17)
    $Input1 = GUICtrlCreateInput("ausgrauen wenn Firma1 oder nichts ausgewählt", 232, 104, 273, 21)
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    $strCombo1 = GUICtrlRead($Combo1)
    If $strCombo1 <> $strCombo1_old Then
    If (GUICtrlRead($Combo1) = "" or GUICtrlRead($Combo1) = 'Firma1') Then
    GUICtrlSetState($Input1, $GUI_DISABLE)
    Else
    GUICtrlSetState($Input1, $GUI_ENABLE)
    EndIf
    EndIf
    $strCombo1_old = GUICtrlRead($Combo1)
    WEnd

    [/autoit]
  • Wie effizient Suchen und ersetzen?

    • Strahleman
    • 13. Juni 2012 um 12:29

    Hallo dost0011,

    wie wäre es, wenn du die gesamte Datei einliest und dann in ein Array überführst.

    Dann sollte es schneller gehen die Felder auszuwerten und entsprechend zu bearbeiten


    Gruß der Strahleman 8)

  • RS232: Mehr Zeichen empfangen als erwartet

    • Strahleman
    • 11. Mai 2012 um 14:36

    Hallo,

    @veronesi hab die UDF bzw. Teile davon aus dem englischsprachigem Forum genutzt oder besser gesagt die benötigten Funktionen zum Auprobieren direkt eingebettet.

    Und nun heute gleich mal ausprobiert. Nun Funktioniert alles einwandfrei. Jetzt baue ich da noch eine schöne GUI drumherum dann können meine Jungs in der Werkstatt damit richtig gut arbeiten!

    Danke für die Denkanstöße :thumbup:

    Zuvor habe ich ja die Commg.dll verwendet, die war wohl auch Schuld an dem HEX-Salat mit der eingestreuten 0x03! Das Problem ist also behoben. Ich werde jetzt alles immer mit der kernel32.dll abarbeiten.


    Der Strahleman 8)

  • Vorheriger Fokus

    • Strahleman
    • 10. Mai 2012 um 21:05

    Suche mal in der Hilfe nach @GUI_CtrlId. Und dann bei Wechsel neu abspeichern. :)

    Gesendet von unterwegs mit Tapatalk 2

  • RS232: Mehr Zeichen empfangen als erwartet

    • Strahleman
    • 10. Mai 2012 um 20:56

    Kam heute nicht mehr dazu, werde morgen noch ein paar Test machen. Dann weiß ich auch hoffentlich woher das 0x03 kommt.
    Ja die UDF hab ich genutzt.

    Gesendet von unterwegs mit Tapatalk 2

  • RS232: Mehr Zeichen empfangen als erwartet

    • Strahleman
    • 7. Mai 2012 um 10:07

    Leider hat sich noch niemend geäußert. Es würde mir schon Helfen, wenn mir jemand erklären kann, warum der Hyper-Terminal diese Steuerzeichen richtig interpretiert!

  • RS232: Mehr Zeichen empfangen als erwartet

    • Strahleman
    • 3. Mai 2012 um 07:55

    Hallo,

    ich habe mir ein Ausleseprogramm ("sniffer") für RS232 erstellt.
    Als UDF habe ich die Serial Port/Com Port UDF benutzt ( http://www.autoitscript.com/forum/topic/12…t-com-port-udf/ ).

    Das Sendegerät ist ein IBIS-Master (Datenkommunikation in Bus und Bahn - reine ASCII-Zeichen).
    Leider wird mir in unregelmäßigen Abständen ein 0x03 ausgegeben, anschließend sind die drei weiteren Zeichen verändert.
    Als ich die Daten-Übertragung mit dem Hyper-Terminal angeschaut habe, wurden mir die 0x03 nicht und die nächsten drei Zeichen korrekt angezeigt.
    Wie bringe ich meinem kleinem Programm bei - wie beim Hyper-Terminal - die 0x03 Richtig zu interpretieren?

    gewünschter Datensatz:

    Code
    ASCII: zNE60211.7 
    HEX: 0x7A 0x4E 0x45 0x36 0x30 0x32 0x31 0x31 0x0D 0x37

    erhaltener Datensatz:

    Code
    ASCII: zNE6.&;l1.7 
    HEX: 0x7A 0x4E 0x45 0x36 0x03 0x26 0x3B 0x6C 0x31 0x0D 0x37

    Kennt jemand das Problem, oder weiß warum der Hyper-Terminal, den richtigen Inhalt ausgibt - trotz der Sache mit dem Steuerzeichen(0x03)?

    Gruß der Strahleman 8)

  • Bild (png) in GUI verschwindet nach kurzer Zeit

    • Strahleman
    • 29. November 2010 um 09:01

    Guten Morgen AutoBert,

    ja da hast du Recht.
    Ich hab da noch die Vorgängerversion im Zwischenspeicher gehabt. Die globale Variablendeklaration hab ich natürlich zu Beginn auch gemacht.

    Spoiler anzeigen
    [autoit]


    #include <GdiPlus.au3>

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

    Global $graphic, $image
    Global $hGui = GUICreate("GUI", 1, 1, -1, -1, 0x81000000)
    GUISetBkColor(0x000000, $hGui)

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

    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg(0x000F, "MY_WM_PAINT")

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

    _GDIPlus_Startup()
    CreatePNG("A_1", 0, @DesktopHeight - 120)

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

    While 1
    Switch GUIGetMsg()
    Case -3
    _GDIPlus_GraphicsDispose($graphic)
    _GDIPlus_ImageDispose($image)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    WEnd

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

    Func CreatePNG($sPngFile, $x, $y, $pngWidth = 640, $pngHeight = 100)
    $graphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
    $image = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\img\" & $sPngFile & ".png")
    _GDIPlus_GraphicsDrawImageRect($graphic, $image, $x, $y, $pngWidth, $pngHeight)
    EndFunc

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

    Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($hGUI, 0, 0, 0x0100)
    _GDIPlus_GraphicsDrawImageRect($graphic, $image, 0, @DesktopHeight - 120, 640, 100)
    _WinAPI_RedrawWindow($hGUI, 0, 0, 0x0008)
    Return "GUI_RUNDEFMSG" ;$GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_PAINT

    [/autoit]


    Und warum muss nun immer wieder neu geladen werden?

    der Strahleman 8)

  • Bild (png) in GUI verschwindet nach kurzer Zeit

    • Strahleman
    • 29. November 2010 um 00:12

    Hallo AutoBert,

    Danke für den Tipp! Jetzt hab ich's hin bekommen. Allerdings verstehe ich noch nicht wieso ich denn die GDI-Grafiken immer wieder neu laden/zeichnen muss?

    Das lauffähige Programm sieht dann übrigens so aus:

    Spoiler anzeigen
    [autoit]

    #include <GdiPlus.au3>

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

    $hGui = GUICreate("GUI", 1, 1, -1, -1, 0x81000000)
    GUISetBkColor(0x000000, $hGui)

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

    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg(0x000F, "MY_WM_PAINT")

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

    _GDIPlus_Startup()
    $graphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
    $image1 = _GDIPlus_ImageLoadFromFile("C:\Users\chris\Documents\Autoit\WWM-Quiz" & "\img\A_1.png")
    _GDIPlus_GraphicsDrawImageRect($graphic, $image1, 0, @DesktopHeight - 120, 640, 100)

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

    While 1
    Switch GUIGetMsg()
    Case -3
    _GDIPlus_GraphicsDispose($graphic)
    _GDIPlus_ImageDispose($image1)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    WEnd

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

    Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($hGUI, 0, 0, 0x0100)
    _GDIPlus_GraphicsDrawImageRect($graphic, $image1, 0, @DesktopHeight - 120, 640, 100)
    _WinAPI_RedrawWindow($hGUI, 0, 0, 0x0008)
    Return "GUI_RUNDEFMSG"
    EndFunc ;==>MY_WM_PAINT

    [/autoit]


    der Strahleman 8)

  • Bild (png) in GUI verschwindet nach kurzer Zeit

    • Strahleman
    • 28. November 2010 um 14:26

    Hallo Leute,

    ich habe ein Bild (png-Datei [640 x100 px]), das ich auf einer GUI anzeigen lasse.
    Leider verschwindet das Bild nach ca. 5 - 10 Sek wieder. Kann mir jemand sagen warum das passiert bzw. wie ich das verhindern kann??

    Spoiler anzeigen
    [autoit]


    #include <GdiPlus.au3>

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

    $hGui = GUICreate("GUI", 1, 1, -1, -1, 0x81000000)
    GUISetBkColor(0x000000, $hGui)

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

    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()
    $graphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
    $image1 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\img\A_1.png")
    _GDIPlus_GraphicsDrawImageRect($graphic, $image1, 0, @DesktopHeight - 120, 640, 100)

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

    While 1
    Switch GUIGetMsg()
    Case -3
    _GDIPlus_GraphicsDispose($graphic)
    _GDIPlus_ImageDispose($image1)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    WEnd

    [/autoit]


    Der Strahleman 8)

  • Icons imGUI mit Mausklick UND HotKey bedienen

    • Strahleman
    • 17. Oktober 2010 um 11:59

    Oscar :
    Das nenn ich mal Optimum.
    Aber ichfrage mich warum ich da nicht selber drauf gekommen bin?
    Naja da ist es wieder: die Sache mit dem Wald und den Bäumen ;)

    Allerdings war das hier ja auch nur das Test-Script für mein etwas umfangreicheres Script, werdemal schauen, ob ich die Verkürzung auch dort unterbringen kann!

  • Icons imGUI mit Mausklick UND HotKey bedienen

    • Strahleman
    • 17. Oktober 2010 um 11:53

    Hallo Oscar,

    DANKE!
    Es hat funktioniert - genauso wie ich es mir gedacht hatte!
    Die Switch-Abfrage mit @GUI_CtrlID hatte ich erst drin, allerdings dachte ich, dass der Fehler vlt. aus dieser Ecke herrührt!
    Dann werde ich mir mal die

    [autoit]

    GUISetAccelerators()

    [/autoit]

    GUISetAccelerators-Funktion mal genauer anschauen.

    Schönes Wochenende

    der Strahleman :rock:

  • Icons imGUI mit Mausklick UND HotKey bedienen

    • Strahleman
    • 17. Oktober 2010 um 11:14

    Halo Leute,

    nun sitze ich da schon ne weile dran.
    Ich habe ein GUI gebastelt und verwende dort mehrere Icons als Buttons. Beim Anklicken werden die Icons ausgetauscht (On/Off). Das ganze funktioniert auch super, aber leider nur wenn ich die Icons direkt anklicke. Wenn ich Hotkeys vergebe, wird bei deren Benutzung immer das zuletzt von der Maus angeklickte Icon verwendet. Ich weiß, dass das an dem @GUI_CtrlID-Makro liegt bzw. am @HotKeyPressed-Makro. Kann man den Abgleich was genau gedrückt wurde auch anders realisieren??? oder gibt es ne Möglichkeit die Makros zu resetten oder zu überschreiben?

    Spoiler anzeigen
    [autoit]

    Opt('GUIOnEventMode', 1)
    Dim $aIcon[6] = ["save.ico","save_no.ico","hide.ico","hide_no.ico","readonly.ico","readonly_no.ico"]
    Dim $pthIco = "C:\Users\me\Documents\Autoit\Prog\ico\"
    Global $aBlnIco[3]=[False,False,False]

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

    GUICreate("Test 1.0")
    GUISetOnEvent(-3, 'Close')

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

    $ok1 = GUICtrlCreateIcon($pthIco & $aIcon[1], -1, 35,35)
    GUICtrlSetOnEvent($ok1, '_ButtonClicked')
    HotKeySet("s", "_ButtonClicked")
    $ok2 = GUICtrlCreateIcon($pthIco & $aIcon[3], -1, 70,35)
    GUICtrlSetOnEvent($ok2, '_ButtonClicked')
    HotKeySet("h", "_ButtonClicked")
    $ok3 = GUICtrlCreateIcon($pthIco & $aIcon[5], -1, 105,35)
    GUICtrlSetOnEvent($ok3, '_ButtonClicked')
    HotKeySet("r", "_ButtonClicked")
    guisetstate()

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

    while 1*Sleep(1000)
    WEnd

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

    Func Close()
    Exit
    EndFunc

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

    Func _ButtonClicked()
    Switch @GUI_CtrlHandle
    Case ControlGetHandle("[active]", "", $ok1)
    OK($ok1, 0, 0)
    Case ControlGetHandle("[active]", "", $ok2)
    OK($ok2, 1, 2)
    Case ControlGetHandle("[active]", "", $ok3)
    OK($ok3, 2, 4)
    EndSwitch
    EndFunc

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

    Func OK($hIcon, $blnID, $intIconOn, $intIconOff = "" )
    If $intIconOff = "" Then $intIconOff = $intIconOn + 1
    If $aBlnIco[$blnID] Then
    GUICtrlSetImage($hIcon, $pthIco & $aIcon[$intIconOff])
    $aBlnIco[$blnID] = False
    Else
    GUICtrlSetImage($hIcon, $pthIco & $aIcon[$intIconOn])
    $aBlnIco[$blnID] = True
    EndIf
    EndFunc

    [/autoit]

    Vlt. könnte mir auch jmd einen neuen Ansatz verraten, stehe zZ voll auf dem Schlauch.

    Dateien

    Icons.zip 285,03 kB – 289 Downloads
  • Variablenübergabe bei Funktionsaufruf (doofe überschrift)

    • Strahleman
    • 8. Oktober 2010 um 14:25

    Hi Techmix,

    Wie wäre es denn wenn du die Variablen in der Funbktion tauscht und die zweite dann mit deiner (globalen) Variable belegst.
    Wenn die sich nicht ändert wird sie ohne nachfragen übernommen.

    [autoit]


    Func Test( $New, $Base = $RGB)
    $_Temp = DllCall($S_DLL, "long", "Get", "long", $Base, "long", $New)
    return $_Temp[0]
    EndFunc

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

    Global $RGB = 0xffffff
    $New = 0x666666

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

    $RGB2 = Test($New)

    [/autoit]

    Bin mier bei der Globalen Variablendekjlaration aber nicht sicher, ob die zwingend ist ?(

    Der Strahleman 8)

  • Textdatei läßt sich nicht auslesen

    • Strahleman
    • 2. August 2010 um 11:15

    Nochmal herzlichen Dank an alle die sich an der Lösung versucht haben!

    Dann wünsche ich Euch noch einen schönen Tag!

    Der Strahelman 8)

  • Textdatei läßt sich nicht auslesen

    • Strahleman
    • 2. August 2010 um 11:13

    Hi BugFix,

    super! und herzlichen Dank.

    Ich war allerdings auf nicht untätig und hab selber auch geknobelt, leider nicht so elegant wir deine Lösung. Aber

    Zitat

    Viele Wege führ'n nach Rom

    Code
    $fl = StringLen($ft)
    $text = Stringright($ft, $fl - 3)
    $ftext = ""
    for $i = 0 to ($fl)/2 -1 
    	If Stringmid($text, $i * 2, 2) <> "00" Then
    		$ftext = $ftext & _HexToString(Stringmid($text, $i * 2, 2))
    	EndIf
    Next

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™