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

Beiträge von BugFix

  • Interaktion mit Notepad++

    • BugFix
    • 18. März 2011 um 12:34

    Danke progandy, dann werde ich mal probieren das hinzubekommen.
    Vielleicht kann ich ja einfach ein vorhandenes Plugin dazu umfunktionieren.
    Ich melde mich hier, wenn ich ein Ergebnis habe. (Kann dauern, noch habe ich Null-Ahnung von C++ und Dll-Erstellung ;))

  • Fast schon peinliche Frage zu AutoIt / Scite

    • BugFix
    • 18. März 2011 um 11:38
    Zitat von Ynkelonium

    Ich hab eher das Gefühl dass die Installation unvollständig


    Das vermute ich auch.
    Bei der Installation die richtige Reihenfolge beachten!
    1. AutoIt Prod installieren
    2. [optional] AutoIt Beta installieren
    3. SciTE4AutoIt installieren (nicht das 'einfache' SciTE)

  • Interaktion mit Notepad++

    • BugFix
    • 18. März 2011 um 11:26

    Nach dem Lesen von unzähligen Dokus und Quelltexten bin ich auf die "PluginManager.dll" gestoßen. Diese enthält eine Funktion "setInfo" und bekommt als Parameter eine Struktur (NppData) mit 3 Handle übergeben.
    Das sieht dann so aus:

    Spoiler anzeigen
    [autoit]

    Local $tNppData = DllStructCreate( _
    "HWND _nppHandle;" & _
    "HWND _scintillaMainHandle;" & _
    "HWND _scintillaSecondHandle;")

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

    Local $hDll = DllOpen(@ProgramFilesDir & "\notepad++\plugins\pluginmanager.dll")
    If @error Then
    Exit ConsoleWrite('DllOpen Error: ' & @error & @LF)
    Else
    ConsoleWrite('DllOpen: OK' & @LF)
    EndIf

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

    Local $ret = DllCall($hDll, 'int:cdecl', 'setInfo', 'ptr', DllStructGetPtr($tNppData))
    If @error Then Exit ConsoleWrite('DllCall Error: ' & @error & @LF)
    DllClose($hDll)

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

    ConsoleWrite('_nppHandle: ' & DllStructGetData($tNppData, 1) & @LF)
    ConsoleWrite('_scintillaMainHandle: ' & DllStructGetData($tNppData, 2) & @LF)
    ConsoleWrite('_scintillaSecondHandle: ' & DllStructGetData($tNppData, 3) & @LF)

    [/autoit]

    Jedoch wird bei meinem Aufruf die Struktur nicht befüllt. Die Source für die pluginmanager.dll habe ich nicht finden können. Habe testweise statt 'ptr' mal 'int_ptr' verwendet, aber auch ohne Erfolg.
    Also der Dll-Call ist erfolgreich, kein Fehler und ein Return > 0.
    Nun hatte ich die Struktur als Fehlerquelle überprüft und dort mal "HWND" mit "HANDLE" ersetzt, auch ohne Erfolg.
    Im Moment gehen mir da die Ideen aus. :wacko:

  • Daten in ein .jar verpackten ordner schieber

    • BugFix
    • 17. März 2011 um 20:56

    Nimm zum Bsp. den Packer IZArc.
    Du öffnest den Explorer, Rechtsklick auf Datei die hinzugefügt werden soll, als Ziel die *.jar auswählen und OK. Schon ist sie hinzugefügt.

  • Erkennt AUTOIT nicht immer richtig den Inhalt von Variablen ?

    • BugFix
    • 17. März 2011 um 11:50
    Zitat von Ynkelonium

    Kann ich denn beeinflußen und wie, wie die Daten in einem Array gespeichert werden ?


    Ja, schau dir die Befehle: Number(), String().. etc. an.

  • Drag & Drop überprüfen

    • BugFix
    • 17. März 2011 um 11:04

    Zeig mal deinen bisherigen Code, sonst wird es ein Rätselraten. ;)

  • Interaktion mit Notepad++

    • BugFix
    • 17. März 2011 um 10:25

    Also das Abfragen des Scintilla Handle führt unweigerlich zum Crash von Notepad++. ;(
    Andere Aktionen, die das Scintilla-Handle nicht benötigen, funktionieren problemlos:

    Spoiler anzeigen
    [autoit]

    #Include <SendMessage.au3>

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

    Local Const $WM_USER = 0x400
    Local Const $NPPMSG = $WM_USER + 1000

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

    Local Const $NPPM_GETCURRENTSCINTILLA = ($NPPMSG + 4)
    Local Const $NPPM_GETCURRENTDOCINDEX = ($NPPMSG + 23)
    Local Const $MAIN_VIEW = 0
    Local Const $SUB_VIEW = 1
    Local Const $NPPM_GETMENUHANDLE = ($NPPMSG + 25)
    Local Const $NPPM_ACTIVATEDOC = ($NPPMSG + 28)
    ;~ void $NPPM_ACTIVATEDOC(int view, int index2Activate)
    Local Const $NPPM_GETWINDOWSVERSION = ($NPPMSG + 42)
    ;~ winVer $NPPM_GETWINDOWSVERSION(0, 0)

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

    Local $hNpp = WinGetHandle('[CLASS:Notepad++]')

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

    ; Index (0-basiert des aktuellen Dokuments) ==> funktioniert
    Local $iDocIndex = _SendMessage($hNpp, $NPPM_GETCURRENTDOCINDEX)
    ConsoleWrite('@@ DEBUG_Line: ' & @ScriptLineNumber & ', Var: $iDocIndex >> ' & $iDocIndex & ' ; @error: ' & @error & ', @extended: ' & @extended & @LF) ; Debug To Console

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

    ; Dokument vor dem aktuellen aktivieren ==> funktioniert
    Local $ret = _SendMessage($hNpp, $NPPM_ACTIVATEDOC, $MAIN_VIEW, $iDocIndex-1)
    ConsoleWrite('@@ DEBUG_Line: ' & @ScriptLineNumber & ', Var: $ret >> ' & $ret & ' ; @error: ' & @error & ', @extended: ' & @extended & @LF) ; Debug To Console

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

    ; Menü-Handle abfragen ==> funktioniert
    $hMenu = _SendMessage($hNpp, $NPPM_GETMENUHANDLE)
    ConsoleWrite('@@ DEBUG_Line: ' & @ScriptLineNumber & ', Var: $hMenu >> ' & $hMenu & ' ; @error: ' & @error & ', @extended: ' & @extended & @LF) ; Debug To Console

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

    ;=================================================
    ; Scintilla-Handle abfragen ==> Exception Error !
    Local $hScintilla = _SendMessage($hNpp, $NPPM_GETCURRENTSCINTILLA)
    ConsoleWrite('@@ DEBUG_Line: ' & @ScriptLineNumber & ', Var: $hScintilla >> ' & $hScintilla & ' ; @error: ' & @error & ', @extended: ' & @extended & @LF) ; Debug To Console

    [/autoit]


    Ich bekomme einen Exception Error und NPP bietet dann an, einen Dump zu speichern, was dann im Crash endet mit unzähligen Fenstern "Visual C++ Runtime Error".

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    NppExceptionErr.png 27,95 kB – 0 Downloads NppRuntimeErr.png 27,9 kB – 0 Downloads
  • Interaktion mit Notepad++

    • BugFix
    • 16. März 2011 um 17:52

    Danke progandy, dann werde ich dort mal weiterlesen.

  • Notepad++ und AutoIt

    • BugFix
    • 16. März 2011 um 17:48

    Im Moment bastel ich an den Grundlagen um Abbrev und Autovervollständigung realisieren zu können.
    Wenn du was übernehmen möchtest, warte vielleicht etwas, bis ich die Interaktion im Griff habe. Ohne das geht keines der beiden Probleme. Ich überlaß dir dann aber gern die Autovervollständigung. Abbrev-Management habe ich ja bereits mal gemacht und werde es hierfür umgestalten.

  • Interaktion mit Notepad++

    • BugFix
    • 15. März 2011 um 23:34

    Hi,
    ich bastel ja gerade an der Verwendung von Notepad++ als AutoIt-Editor.
    Nun benötige ich Interaktionen mit dem NPP-Fenster (Scintilla-Edit-Control). Scintilla verwendet einen eigenen Adressraum, somit kann man nicht mit WM_GETTEXT und WM_SETTEXT arbeiten. Dazu gibt es von Scintilla eigene Messages.
    Ich habe jetzt mal ein Skript nachgestellt um den Text des aktuell offenen NPP-Fensters auszugeben. Aber schon die Abfrage der Textlänge bleibt ohne Erfolg.

    [autoit]

    #Include <SendMessage.au3>

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

    Local $Wnd = WinGetHandle('[CLASS:Notepad++]'), $Len
    $Len = _SendMessage($Wnd, 2183, 0, 0) ; Rückgabe '0', kein Fehler

    [/autoit]


    Hat jemand eine Idee?

  • Notepad++ und AutoIt

    • BugFix
    • 15. März 2011 um 19:08

    Ja, ist mir auch aufgefallen ;)
    Habe das jetzt abgefangen und ein Skript erstellt, das wahlweise Ausgabe in Konsole oder MsgBox erstellt.
    Werde es gleichmal im ersten Post aktualisieren.


    Edit:
    Habe wohl noch einen Bug in der Variablenerkennung (Debug). Einige Kombinationen werden nicht richtig erkannt.
    Falls ihr auch was findet sagt Bescheid.

    Ahh.. >> Ich muß vor der Auswertung die Tabs in Zeichen umwandeln, dann paßt es. ;)
    Werde ich gleich mal ändern.

  • Notepad++ und AutoIt

    • BugFix
    • 15. März 2011 um 16:02

    Neu: Debug To Console

  • Array vs. mySQL

    • BugFix
    • 15. März 2011 um 10:21
    Zitat von Techmix

    Wie gesagt ich suche nache einer 'schnellen' Datenbankabfrage


    Bist du dir da sicher? Eine Datenbankabfrage lautet z.B. (als Pseudo-Abfrage):
    Suche: KDNR, Name, Adresse, Telefonnummer
    von: Tab_Kunden, Tab_Umsatz
    wenn: Tab_Kunden.KDNR = Tab_Umsatz.KDNR und JahrVon(Tab_Umsatz.DATUM) = 2010
    sortiert nach: KDNR
    Dabei ist eine SQL-Datenbank unschlagbar. Als reinen Datenspeicher würde ich eine SQL-DB nicht mißbrauchen.

  • Fragen zu SciTE

    • BugFix
    • 15. März 2011 um 10:07

    Oder du nutzt Notepad++ als AutoIt-Editor.
    Das Konsolen-PlugIn verhält sich genau so, wie du es willst. ;)

  • Array vs. mySQL

    • BugFix
    • 15. März 2011 um 09:30

    Es kommt drauf an, was du mit den Werten anfangen willst. Eine komplexe SQL-Abfrage auf Array-Ebene umzusetzen ist sicher wesentlich zeitintensiver.
    Wie gesagt: Der Verwendungszweck ist hier entscheidend.
    Und warum MySQL? SQLite ist doch auch eine prima Alternative und bereits in AutoIt integriert.

  • Fragen zu SciTE

    • BugFix
    • 15. März 2011 um 07:40

    Ich habe mir bisher noch nicht angesehen, wie die Konsole angesteuert wird. Ich vermute aber, dass du hier mit LUA oder SciTECommands weiterkommst.
    Hier mal der SciTECommands-Part aus Xenos OrganizeIncludes:

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ; Description: Sending commands to SciTE interface
    ;===============================================================================
    Func SendSciTE_Command($sCmd, $Wait_For_Return_Info = 0)
    Local $WM_COPYDATA = 74
    Local $WM_GETTEXT = 0x000D
    Local $WM_GETTEXTLENGTH = 0x000E224
    Local Const $SCI_GETLINE = 2153
    Local $Scite_hwnd = WinGetHandle('DirectorExtension') ; Get SciTE DIrector Handle
    Local $My_Hwnd = GUICreate('AutoIt3-SciTE interface') ; Create GUI to receive SciTE info
    Local $My_Dec_Hwnd = Dec(StringTrimLeft($My_Hwnd, 2)) ; Convert my Gui Handle to decimal
    $sCmd = ':' & $My_Dec_Hwnd & ':' & $sCmd ; Add dec my gui handle to commandline to tell SciTE where to send the return info
    ;~ ConsoleWrite('SciTE Command --> ' & $sCmd & @LF)
    Local $CmdStruct = DllStructCreate('Char[' & StringLen($sCmd) + 1 & ']')
    DllStructSetData($CmdStruct, 1, $sCmd)
    Local $COPYDATA = DllStructCreate('Ptr;DWord;Ptr')
    DllStructSetData($COPYDATA, 1, 1)
    DllStructSetData($COPYDATA, 2, StringLen($sCmd) + 1)
    DllStructSetData($COPYDATA, 3, DllStructGetPtr($CmdStruct))
    DllCall('User32.dll', 'None', 'SendMessage', 'HWnd', $Scite_hwnd, _
    'Int', $WM_COPYDATA, 'HWnd', $My_Hwnd, _
    'Ptr', DllStructGetPtr($COPYDATA))
    GUIDelete($My_Hwnd)
    EndFunc ;==>SendSciTE_Command
    ;===============================================================================
    ; Description: Sending commands to SciTE interface
    ;===============================================================================
    Func MY_WM_COPYDATA($hWnd, $msg, $wParam, $lParam)
    Local $COPYDATA = DllStructCreate('Ptr;DWord;Ptr', $lParam)
    Local $SciTECmdLen = DllStructGetData($COPYDATA, 2)
    Local $CmdStruct = DllStructCreate('Char[255]', DllStructGetData($COPYDATA, 3))
    $SciTECmd = StringLeft(DllStructGetData($CmdStruct, 1), $SciTECmdLen)
    EndFunc ;==>MY_WM_COPYDATA

    [/autoit]

    Das könnte dir als Ansatz helfen. Mußt 'nur' noch die erforderlichen Kommandos finden. (Scintilla Dokumentation)

  • AutoBot initalisiert...

    • BugFix
    • 14. März 2011 um 22:48

    Willkommen.
    Aber mit deinem Nick hast du dir echt keinen Gefallen getan. Bots mögen wir, wie der Teufel das Weihwasser. :whistling:

  • Daten in ein .jar verpackten ordner schieber

    • BugFix
    • 13. März 2011 um 21:03

    Wozu ein Programm? Kann doch ziemlich jeder Packer: ..dem Archiv hinzufügen - meist als Rechte-Maustastenmenü. ;)

  • Array

    • BugFix
    • 13. März 2011 um 20:42

    Hi Anna,
    hier liegt der Hund begraben

    [autoit]

    For $x = 1 to $aIP[0]
    $ip = ($aIP[$x])
    Next

    [/autoit]

    analog in den anderen For-Schleifen.
    Du durchläufst das Array und weist den Inhalt der Variablen $ip zu - aber machst dann nichts weiter damit. Somit hat die Variable nur den Inhalt des letzten Eintrages.
    Du mußt also innerhalb der Schleife den sich ändernden Wert auch anwenden. ;)
    Gibt es für jede IP exakt einen Modellnamen und eine OID?
    Dann brauchst du nur eine einzige Datei (und demzufolge nur ein Array).

  • Notepad++ und AutoIt

    • BugFix
    • 13. März 2011 um 14:43

    Aufrufeskripte erstellt für Check, Tidy, Run (Compile geändert).
    Damit wird nur aufgerufen, wenn aktuelle Datei auch eine au3-Datei ist.
    s. Post #1

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™