Habs gefunden, danke für deine Hilfe!
Beiträge von Tigger1975
-
-
Das habe ich schon versucht, ich habe aber noch was anderes gefunden wenn ich die höhe des Fensters ändre, ändert ich auch der Versatz
-
Ja soweit war ich ja auch schon, ich sitze immerhin schon 2 Tage an dem Problem.
Ich vermute ich bin da einem Bug aufgesessen.
Immerhin wir ja auch der Button immer an der Relativ gleichen Position erstellt, so wie es sein soll.
Aber das Lable nicht, ich habe das lable auch als button erstellen lassen und das gleiche Problem. -
Ich hab das gerade nochmal ausprobiert. Nur leider funktioniert das nicht.
In meinem Original Code ist das auch so gelöst das erst wenn in der Ausgabe was drin ist wird überhaupt die Eingabe realisiert.
-
Ja das Programm wird gestartet, zum einen findest sich die exe dann in der Prozess liste und zum anderen kommt ja der Output das es auf das Password wartet.
-
Das Tool würde ich auch empfehlen
http://technet.microsoft.com/de-de/sysinternals/bb896645.aspx
-
Doch!
Zeile 7 und die bestätigen in zeile 10
das ist ein gekapselt um das Ergebnis darzustellen.
Das spielt aber keine rolle, da ich das im Original code anders mache.
Und da funktioniert das auch nicht. -
Ja so ähnlich, aber ich habe vor das alle Fragen nacheinander gestellt werde können, aber gleichzeitig in der gui angezeigt werden.
Zudem arbeite ich mit event bei Änderung des Daten oder bei Click auf den button.
-
Was mache ich?
das ist das beispiel aus der hilfe, etwas gepimpt mit einer funktion die einem zeigt was passiert.oder übersehe ich da was?
Wieso schreibst du eigentlich das was ausgegeben wird wieder direkt an das Programm?
-
Hm... seint wohl wie immer Schwere kost zu sein!
ich schreibe an einer UDF die durch min 2 kleine aufrufe eine Dialog GUI aufbaut und anzeigt.
1. Aufruf ist die Frage die man dem Benutzer der Anwendung (nicht die UDF) stellen möchte z.B. "Wo befindet sich die Datei XYZ". in der Gui gibt es dann einen Button der einen File öffnen Dialog anzeigt.
Dieses Funktion wird so oft aufgerufen wie man (Entwickler der Anwendung) es eben benötigt.
2. Aufruf ist eine dazugehörige Funktion die dann noch zwei Buttons unten dran baut und die Gui anzeigt.Wenn jetzt die Gui benutzt wird um wie im obigen Beispiel die Datei auszuwählen kommt das Ergebnis in ein Array welches von der Funktion unter 1 aufgebaut wird.
Jetzt möchte der Entwickler natürlich das Ergebnis in einer dedizierten variable stehen haben. Die er sinnvoller weise beim Aufruf von Funktion unter eins mit gibt.Ich stelle mir da vor das es so ähnlich gelöst werden kann wie bei einer byref variable und dieser verwies müsste dann in dem unter 1 erzeugten Array abgelegt werden. Also so was wie ein Poniter müsste in der erste Funktion erzeugt werden und der dann so gespeichert werden das man in einer Anderen Funktion wieder über den Pointer an die Variable kommt.
-
Hilft mir auch nicht, leider.
Kann es sein das es Programme gibt die sich Irgend wie an dem Stdin vorbei mogeln?
-
Sorry bugfix, aber du hast leider nicht verstanden was ich vor habe.
ich wills mal einfacher darstellen.
Ich schreibe Programme die Informationen benötigen wie die Umgebung aussieht. Dies löse ich mit einem UDF welches den Benutzer mit Poupfenster frag was ich wissen muss. Das funktioniert jetzt auch super. Allerdings stört mich das das für jede Information ein Popup hochkommt. Deswegen arbeite ich an Version 2 es wir über die gleich Art von Funktionsaufruf eine Gui gebaut die im Programmablauf dann am ende gestartet wird (also dynamisch). Jetzt habe ich das Problem das die Antworten des Nutzers in einem Array gespeichert wird und das anhand der Reihenfolge wie die Funktionen aufgerufen wurden.
Und genau das möchte ich auflösen das beim Aufruf der Funktion eine variable mitgegeben werden kann in der dann beim klick auf den Speicher butten in der Gui der wert der Antwort für diese Frage enthalten ist.
Es Funktioniert ja auch alles wie ich mir das vorstelle es geht nur darum das ich klar festlegen kann wo ich das Ergebnis finde. -
Kann mir jemand helfen; Warum wird das Passwort nicht übergeben.
Spoiler anzeigen
[autoit][/autoit] [autoit][/autoit] [autoit]; Demonstrates the use of StdinWrite()
[/autoit] [autoit][/autoit] [autoit]
#include <Constants.au3>Local $foo = Run(@ProgramFilesDir & "\" & "notes\nfixup", @UserProfileDir & "\NOTESDATA\", @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
[/autoit] [autoit][/autoit] [autoit]
; Write string to be sorted to child sort.exe's STDIN
;StdinWrite("password" & @CRLF)
_ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : StdinWrite($foo,"password" & @CRLF) = ' & StdinWrite($foo,"password" & @CRLF) & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
; Calling with no 2nd arg closes stream
;StdinWrite($foo)
_ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : StdinWrite($foo) = ' & StdinWrite($foo) & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console; Read from child's STDOUT and show
[/autoit] [autoit][/autoit] [autoit]
Local $data
While True
$data = StdoutRead($foo)
If @error Then ExitLoop
_ConsoleWrite($data) ;### Debug Console
Sleep(25)
WEndFunc _ConsoleWrite($sMsg)
[/autoit] [autoit][/autoit] [autoit][/autoit]
If Not $sMsg = "" Then
$sMsg = StringReplace($sMsg, @CRLF, " ")
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sMsg = ' & $sMsg & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
;_FileWriteLog(@TempDir & "\" & @ScriptName & ".log", $sMsg)
EndIf
EndFunc ;==>_ConsoleWriteDanke
-
Ich will versuchen es einfacher darzustellen:
ich habe eine Funktion die einen Teil einer GUI aufbaut, zudem wird ein Steuer Array jeweils um ein Eintrag erweitert. In diesem Array befinden sich alle GUI Elemente sowie alle werte des Funktionsaufrufs, auch die Initialen werte sowie die zurückgegebenen werte. Dieser möchte ich eine byref var mitgeben, die dann im Array verlinkt werden soll.
Diese Funktion wird natürlich nur aufgerufen wenn die GUI aufgebaut wird.
Die Elemente dieses GUI Teils startet eine Eventfunktion die die Werte speichern. genau hier möchte ich dann den Wert in die oben verlinkte Variable schreiben.Ich hoffe das ist jetzt verständlicher.
-
Ja da hast du natürlich recht, aber ich will die Variable erst in der Folgenden Funktion verändern und zurück geben, wie oben beschrieben ist es so das es diese Verkettung der Funktionen nicht wirklich gibt, und genau das ist mein Problem ich möchte sie über diese Vareable Verketten.
Zitat
Da Du in der Funktion "main" die Variable $test per ByRef übergibst, musst Du diese natürlich auch ändern (am Ende der Funktion den Wert von $a_Werte[0] wieder an $test übergeben:Spoiler anzeigen
[autoit]
[/autoit]
Global $a_Werte[1]
$test123 = "12345"
main($test123)
MsgBox(0, "", $test123) ; hier sollte 54321 rauskommen
Func main(ByRef $test)
$a_Werte[0] = $test
test1($a_Werte[0])
$test = $a_Werte[0] ; <- das hier fehlt
EndFunc ;==>main
Func test1(ByRef $test1)
$test1 = "54321"
EndFunc ;==>test1 -
Ich glaube die Aufgabenstellung ist noch nicht richtig rausgekommen.
Mein Problem ist das die Funktion Main eine Funktion ist die eine Teil einer GUI aufbaut. Und die Funktion Test1 gibt das ergebnis der GUI dann wieder zurück.
Aber es soll so sein das wenn jemand die GUI Aufbaut er auch Festlegen kann in Welcher Variable das Ergebnis zu finden ist.Im Moment mache ich das über ein Array, dies hat zur folge das es Schwirig wird die Reienfolge der GUI zu verändern. Da sich ja auch die Reienfolge der Antworten Im Array ändert.
Zur erklärung das ganze gibt einen Konfigurationsdialog für Autoit Scripte, so das man zu begin des scripts alle Einstellungen abfragen kann und diese eingaben in einer INI gespeichert oder gelesen werden.
Nach dem der Nutzer den Konfigurationsdialog geschlossen hat sollen alle notwendigen werde in Vareablen gespeichert sein die der Entwickler vorgegeben hat. -
Hallo ich möchte eine Variable ByRef durchreichen. Like this
Spoiler anzeigen
[autoit]
[/autoit]
$test123 = "12345"
main($test123)
MsgBox(0, "", $test123)
Func main(ByRef $test)
test1($test)
EndFunc ;==>main
Func test1(byref $test1)
$test1 = "54321"
EndFunc ;==>test1
Hier funktioniert das natürlich auch wie ich das möchte, aber eigentlich habe ich das vor:Spoiler anzeigen
[autoit]Global $a_Werte[1]
[/autoit]
$test123 = "12345"
main($test123)
MsgBox(0, "", $test123) ; hier sollte 54321 rauskommen
Func main(ByRef $test)
$a_Werte[0] = $test
test1($a_Werte[0])
EndFunc ;==>main
Func test1(byref $test1)
$test1 = "54321"
EndFunc ;==>test1
Hat jemand eine Idee wie ich das Lösen kann? -
Hallo, ich habe hier eine Funktion die Emails mit Anhang und Dringlichkeiten Verschicken kann.
Sie sollte auch Authentivizierung können, nur leider scheint das keine erfolg zu haben.
Könnt Ihr mit weiter helfen warum das nicht geht?Spoiler anzeigen
[autoit]Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance = "Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
[/autoit]
Local $objEmail = ObjCreate("CDO.Message")
Local const $sEmailSchema = "http://schemas.microsoft.com/cdo/configuration/"
With $objEmail
.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
.To = $s_ToAddress
Local $i_Error = 0
Local $i_Error_desciption = ""
If $s_CcAddress <> "" Then .Cc = $s_CcAddress
If $s_BccAddress <> "" Then .Bcc = $s_BccAddress
.Subject = $s_Subject
If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
.HTMLBody = $as_Body
Else
.Textbody = $as_Body & @CRLF
EndIf
If $s_AttachFiles <> "" Then
Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
For $x = 1 To $S_Files2Attach[0]
$S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
;~ ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
If FileExists($S_Files2Attach[$x]) Then
;ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)
.AddAttachment($S_Files2Attach[$x])
Else
ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
Return SetError(1, 0, 0)
EndIf
Next
EndIf
EndWith
With $objEmail.Configuration.Fields
.Item($sEmailSchema & "sendusing") = 2
.Item($sEmailSchema & "smtpserver") = $s_SmtpServer
If Number($IPPort) = 0 Then $IPPort = 25
.Item($sEmailSchema & "smtpserverport") = $IPPort
;Authenticated SMTP
If $s_Username <> "" Then
.Item($sEmailSchema & "smtpauthenticate") = 1
.Item($sEmailSchema & "sendusername") = $s_Username
.Item($sEmailSchema & "sendpassword") = $s_Password
Else
.Item($sEmailSchema & "smtpauthenticate") = 0
EndIf
If $ssl Then
.Item($sEmailSchema & "smtpusessl") = True
Else
.Item($sEmailSchema & "smtpusessl") = False
EndIf
;Update settings
.Update
EndWith
With $objEmail.Fields
; Set Email Importance
If $s_Importance = "" Then
.Item("urn:schemas:mailheader:Importance") = "Normal"
Else
.Item("urn:schemas:mailheader:Importance") = $s_Importance
EndIf
.Update
EndWith
; Sent the Message
$objEmail.Send
If @error Then
Return SetError(2, @error, 0)
EndIf
$objEmail = ""
Return 1
EndFunc ;==>_INetSmtpMailComDanke
-
-
Ehm...mit StringReplace oder irgendwas ähnlichem ersetzen...dafür gab es doch mal irgendwas
Ja daran dachte ich auch schon, aber das funktioniert natürlich nicht für jede Sprache und es ist ziemlich mühselig raus zu bekommen was genau alles mit was ersetzt werden kann.
Ich hatte eher an etwas gedacht wie über die Codepages zu übersetzen