Perfekt jetzt weiß ich bescheid. Danke AspirinJunkie.
Beiträge von chip
-
-
Deinen ersten Beitrag editieren und den Präfix ändern.
-
Willst mir damit sagen, dass man mit Autoit nur Funktionen in Dlls aufrufen kann und kleine Klassen/Methoden?
-
-
Hi,
ich habe eine DLL (gpgFuncDll.dll) mit folgendem Inhalt:
gpgFuncDLL.h
Spoiler anzeigen
Code
Alles anzeigen// gpgFuncDll.h #ifdef GPGFUNCDLL_EXPORTS #define GPGFUNCDLL_API __declspec(dllexport) #else #define GPGFUNCDLL_API __declspec(dllimport) #endif namespace gpgFunc { // This class is exported from the gpgFuncDll.dll class MygpgFunc { public: // Returns a + b static GPGFUNCDLL_API double Add(double a, double b); // Returns a - b static GPGFUNCDLL_API double Subtract(double a, double b); // Returns a * b static GPGFUNCDLL_API double Multiply(double a, double b); // Returns a / b // Throws const std::invalid_argument& if b is 0 static GPGFUNCDLL_API double Divide(double a, double b); }; }gpgFuncDll.cpp
Spoiler anzeigen
C
Alles anzeigen// gpgFuncDll.cpp : Definiert die exportierten Funktionen für die DLL-Anwendung. // #include "stdafx.h" #include "gpgFuncDll.h" #include <stdexcept> using namespace std; namespace gpgFunc { double MygpgFunc::Add(double a, double b) { return a + b; } double MygpgFunc::Subtract(double a, double b) { return a - b; } double MygpgFunc::Multiply(double a, double b) { return a * b; } double MygpgFunc::Divide(double a, double b) { if (b == 0) { throw invalid_argument("b cannot be zero!"); } return a / b; } }Mir ist aber nun nicht klar wie ich mit DLLCall z.b. die Methode "Add" aufrufen kann.
mfg
-
Ist denke ich schon daher nicht möglich, weil nicht auf jedem System das englische Sprachpaket installiert ist,
-
Es gibt zwar eine rudimentäre Möglichkeit Parameter für den "Fragedialog" direkt zu übergeben, allerdings sind dort einige Punkte nicht möglich welche im "Fragedialog" vorhanden sind. Alle anderen Sachen kann man problemlos direkt via Paramter steuern. Warum man allerdings die Schlüsselerzeugung nicht richtig für Parameter implementiert hat ist mir ein Rätzel.
-
Macht leider keinen Unterschied.
-
Ich bin inzwischen so weit, dass ganz ganz wohl durch einen bypass an stdout vorbeigeleitet wird und direkt in consol ausgegeben wird.
-
Hi,
ich habe folgende Funktion:Spoiler anzeigen
[autoit]Func gpa_create_das_mainkey()
[/autoit] [autoit][/autoit] [autoit]
$pid = Run("C:\cryptconv\gpg\gpg2.exe --gen-key", @SystemDir, @SW_SHOW, $STDERR_CHILD + $STDOUT_CHILD + $STDIN_CHILD)While 1
[/autoit] [autoit][/autoit] [autoit]
sleep(100)
$line = StdoutRead($pid)
If @error Then ExitLoopIf $line <> "" Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, "STDOUT gelesen:", $line)
EndIf
WEndWhile 1
[/autoit] [autoit][/autoit] [autoit]
$line = StderrRead($pid)
If @error Then ExitLoopIf $line <> "" Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, "STDERR gelesen:", $line)
EndIf
WEndEndFunc ;==>gpa_create_das_mainkey
[/autoit]Es wird also die gpg2.exe (http://www.gpg4win.de/) mit dem Paramter --gen-key aufgerufen welches ein normales Konsolenprogramm ist. Ich möchte dann schlicht erstmal die Ausgabe auswerten welche im Konsolenfenster so aussieht:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Leider liefert StdoutRead dabei nichts zurück.
StderrRead hingegen liefert beim Schließen des Fensters richtigerweise dieses Ergebiss.
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Mir ist nicht klar warum StderrRead funktioniert, StdoutRead allerdings nicht.
P.s. StdinWrite funktioniert ebenfalls nicht.
-
Wen interessiert, ob dir Olly ne Fehlermeldung an den Kopf wirft? Es ging einzig und allein darum, das in der AutoIt EULA nicht das reversen von mit AUtoIt kompilierten Skripten untersagt wird.
Und genau ist eine fatale Änderungen die scheinbar auch nicht wirklich dem kompletten Autoitteam bekannt ist, da nach wie vor im offiziellen Forum Leute wegen decompiler mit Hinweis auf die Eula bestraft werden. Hab mal einen Thread dazu aufgemacht.
-
Da liegst du leider falsch i2c. Es verstößt gegen die Lizenzbestimmungen, da es keinen offiziellen decompiler für die aktuelle Autoitversion gibt. Siehe offizielle FAQ dazu: http://www.autoitscript.com/wiki/Decompili…y_decompiler.3F
-
Schon schwer einfach mal die Suche zu benutzen oder? [ gelöst ] Problem mit GuiCtrlCreateAvi
-
Sicherheit != Autoit.
Eine Möglichkeit wäre das ein via Autoit einen entsprechendes Wert an ein PHP-Script übergibst und dieses dann wenn der Wert stimmt die Antwort liefert.
-
So sollte es gehen:
FileCopy("\\server_ip\freigabe\update\java\sec-files\*.*", "C:\user\" & @UserName & "\AppData\LocalLow\Sun\Java\Deployment\security\")
-
Hier hast ein passendes Script: http://www.autoitscript.com/forum/topic/41…tview/?p=307469
Hab das mal für die aktuelle Autoitversion angepasst:
Spoiler anzeigen
[autoit]; original by lazycat
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; modded by xcal#include<WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include<ListViewConstants.au3>
#include<GUIConstantsEx.au3>Global $gaDropFiles[1]
[/autoit] [autoit][/autoit] [autoit]GUICreate('', 320, 220, -1, -1, -1, $WS_EX_ACCEPTFILES)
[/autoit] [autoit][/autoit] [autoit]$list = GUICtrlCreateListView('Files', 10, 10, 300, 200)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSendMsg($list, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, -1)
GUICtrlSetState($list, $GUI_DROPACCEPTED)GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')
[/autoit] [autoit][/autoit] [autoit]GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_DROPPED
For $i = 0 To UBound($gaDropFiles) - 1
GUICtrlCreateListViewItem($gaDropFiles[$i], $list)
Next
EndSwitch
WEndFunc WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local $nSize, $pFileName
Local $nAmt = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", 0xFFFFFFFF, "ptr", 0, "int", 255)
For $i = 0 To $nAmt[0] - 1
$nSize = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", 0, "int", 0)
$nSize = $nSize[0] + 1
$pFileName = DllStructCreate("char[" & $nSize & "]")
DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", DllStructGetPtr($pFileName), "int", $nSize)
ReDim $gaDropFiles[$i + 1]
$gaDropFiles[$i] = DllStructGetData($pFileName, 1)
$pFileName = 0
Next
EndFuncFunc quit()
[/autoit]
Exit
EndFunc -
Das Problem ist, dass du Strings vergleichst und keine Integer. Bei String wird von vorne nach hinten verglichen und da 9 (90) höher als 1 (110) ist wird richtigerweise abgebrochen.
So geht es:
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
$von = 0
$bis = 0
$server = 0
$kunde = 0
$while = 0
$err = 1
#region ### START Koda GUI section ### Form=c:\scripte\ip liste erstellen\gui.kxf
$Form1_1 = GUICreate("Form1", 177, 264, 1323, 317)
$Adressbereichvon = GUICtrlCreateInput("Adressbereich von:", 16, 72, 145, 21)
$Adressbereichbis = GUICtrlCreateInput("Adressbereich bis:", 16, 104, 145, 21)
$FQDN = GUICtrlCreateCheckbox("FQDN", 16, 168, 57, 33)
$Kundenname = GUICtrlCreateInput("Kundenname", 16, 8, 145, 21)
$DNS = GUICtrlCreateInput("DNS Server", 16, 40, 145, 21)
$Create = GUICtrlCreateButton("Liste erstellen", 16, 208, 145, 33)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While $while = 0
$nMsg = GUIGetMsg()
Switch $nMsg
Case $Create
$von = GUICtrlRead($Adressbereichvon)
$bis = GUICtrlRead($Adressbereichbis)
$server = GUICtrlRead($DNS)
$kunde = GUICtrlRead($Kundenname)
If _fddf($von) = 0 Then
MsgBox(0, "FALSCHEINGABE", "Der Startwert wurde nicht im korekten Format eingegeben (XXX.XXX.XXX.XXX)")
$err = 1
ElseIf _fddf($bis) = 0 Then
MsgBox(0, "FALSCHEINGABE", "Der Endwert wurde nicht im korekten Format eingegeben (XXX.XXX.XXX.XXX)")
$err = 1
ElseIf _fddf($server) = 0 Then
MsgBox(0, "FALSCHEINGABE", "Die ServerIP wurde nicht im korekten Format eingegeben (XXX.XXX.XXX.XXX)")
$err = 1
ElseIf $kunde = "" Then
MsgBox(0, "FALSCHEINGABE", "Es wurde kein Kunde angegeben")
$err = 1
Else
MsgBox(0, "Eingabe akzeptiert", "Liste wird erstellt")
$err = 0
EndIf
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
If $err = 0 Then $while = 1
WEnd
$von = StringSplit($von, ".")
$bis = StringSplit($bis, ".")
;_arrayDisplay($von)
;_arrayDisplay($bis)
FileWrite("IP Liste.txt", "Kunde: " & $kunde & @CRLF & "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
FileWrite("IP Liste.txt", "DNS Server: " & $server & @CRLF)
While 1
FileWrite("IP Liste.txt", "Client: " & $von[1] & "." & $von[2] & "." & $von[3] & "." & $von[4] & @CRLF)
MsgBox(0, "", Int($von[4]) < Int($bis[4]))
If (Int($von[4]) < Int($bis[4])) Then
$von[4] = Int($von[4]) + 1
Else
ExitLoop
EndIf
WEnd
FileWrite("IP Liste.txt", "END OF FILE")
Func _fddf($ip)
If StringRegExp($ip, "(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})", 0) Then
Return 1
Else
Return 0
EndIf
EndFunc ;==>_fddf -
Da wird dir so helfen, dass du diesen Thread direkt auf gelöst setzen kannst.
-
Da jeder DAU Autoit mit zwei Klicks decompilieren kann nicht wirklich nützlich.
-
Liegt daran, dass du mit einem anderem Algorithmus verschlüsselt hast als du entschlüsselst und das du das Ergebnis nicht mit BinaryToString() behandelst. Sprich zwei Fehler.