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

Beiträge von demmar

  • Fragen und Programmierer gesucht falls möglich!

    • demmar
    • 30. August 2014 um 21:52

    Hallo

    Habe da ein kleines Problem der jenige der für mich das Programm geschrieben hat meldet sich leider nicht mehr!Bis dato hat her wirklich gute Arbeit gemacht!

    Nun habe ich 3 Fehler festgestellt:


    1. Programm schließt sich wenn keine Emails vorhanden sind!

    ----> Ich möchte es aber immer im hintergrund laufen lassen und das er dan halt jede 1 min auf eine E-Mail checkt!


    2. Beim ausfühlen der Zeilen im Programm macht er alles wunderbar aber es bestätigt den Fenster nicht wo man unbedingt mit der Maus drauf klicken muss da
    das Programm nicht anders an nimmt aus Sicherheitsbestimmungen nicht!

    ----> hier müsste anstatt das man mit enter das fenster bestätigt mit dem mauszeiger die jeweiligen Buttons drücken!


    3. Zuletzt wenn er mal die emails durchgearbeitet hat und zum Ende kommt aber nichts ausgeführt hat schliest sich das Script!!

    ----> Hier soll es wieder von vorne anfangen heißt Emails checken!

    Um zu veranschaulichen was das script genau macht würde ich sagen das man in der woche mal per teamviewer drauf schaut!

    C
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile=..\..\demmar_output\main.exe
    #AutoIt3Wrapper_Outfile_x64=..\..\demmar_output\main_x64.exe
    #AutoIt3Wrapper_Compression=0
    #AutoIt3Wrapper_Compile_Both=y
    #AutoIt3Wrapper_UseX64=y
    #AutoIt3Wrapper_Add_Constants=n
    #AutoIt3Wrapper_Run_Tidy=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <Array.au3>
    #include<File.au3>
    #include <String.au3>
    #include <ArrayMore.au3>
    #include <GuiListView.au3>
    #include <MsgBoxConstants.au3>
    #include <GuiComboBoxEx.au3>
    #include <GuiListView.au3>
    #include "sender.au3"
    
    
    Global $hWnd, $hListView, $aListView, $aMails, $aSenders, $aRelevantMails, $sType
    Global $sConfigFile = @ScriptDir & "\config.ini"
    Global $sSenderFilesDir = @ScriptDir & "\senders"
    Global $sSensusPath = IniRead($sConfigFile, "config", "sensuspath", "")
    Global $sVolumen = IniRead($sConfigFile, "config", "volumen", "0.05")
    
    
    Global $aSignal[8]
    ;0 = Signal Type
    ;1 = po type
    ;2 = Symbol
    ;3 = cost
    ;4 = take profit
    ;5 = stoploss
    ;6 = start time
    ;7 = stop time
    
    
    #Region handle zu MT4 holen
    $hWnd = WinGetHandle("[CLASS:MetaQuotes::MetaTrader::4.00]")
    If Not IsHWnd($hWnd) Then
    	Run($sSensusPath)
    	;_errorHandler("SENSUS MT4 Client Terminal konnte nicht gefunden werden." & @CRLF & "Stellen sie sicher, das MT4 läuft und starten sie dieses Programm neu!")
    EndIf
    Do
    	$hWnd = WinGetHandle("[CLASS:MetaQuotes::MetaTrader::4.00]")
    Until IsHWnd($hWnd)
    #EndRegion handle zu MT4 holen
    Sleep(3000)
    #Region Konfigurationsdaten und Mails laden
    If Not FileExists($sConfigFile) Then
    	_errorHandler("Die Konfigurationsdatei konnte nicht gefunden werden!")
    EndIf
    Global $sMailPath = IniRead($sConfigFile, "config", "mailpath", "test")
    If @error Then
    	_errorHandler("Der Pfad zum EMail-rdner konnte nicht aus der Konfigurationsdatei gelesen werden." & @CRLF & "Bitte setzen sie im Abschnitt 'config' den Wert für den Schlüssel 'mailpath'!")
    EndIf
    $aMails = _FileListToArray($sMailPath, "*.eml", 1, 1)
    
    
    If Not IsArray($aMails) Then
    	_errorHandler("Es konnten keine Mails im angegebenen Ordner gefunden werden", 5, Default)
    EndIf
    $aSenders = IniReadSection($sConfigFile, "sender")
    If Not IsArray($aSenders) Then
    	_errorHandler("Es konnten keine Absenderdaten aus der Konfigurationsdatei geladen werden")
    EndIf
    #EndRegion Konfigurationsdaten und Mails laden
    
    
    $aRelevantMails = _getRelevantMails()
    If @error Then
    	_errorHandler("Keine relevanten Mails gefunden", 5, Default)
    EndIf
    For $i = 1 To $aRelevantMails[0][0]
    	Switch $aRelevantMails[$i][1]
    		Case "s1"
    			$asignal = _signalforesignalcom($aRelevantMails[$i][0])
    			_setOrder($asignal)
    	EndSwitch
    Next
    For $i = 1 To $aMails[0]
    	FileDelete($aMails[$i])
    Next
    Func _setOrder($asignal)
    	Local $hMarket, $aMails, $iIndex, $hcSymbol, $iSymbolIndex, $aListItems
    	Local $sOrderSelection = ""
    	$hMarket = ControlGetHandle($hWnd, "", "[CLASS:SysListView32;INSTANCE:17]")
    	$aMarket = _GUICtrlListView_CreateArray($hMarket)
    	$iIndex = _ArraySearch($aMarket, $asignal[2])
    	If @error Then
    		_errorHandler("Index im Markt konnte nicht ermittelt werden!")
    	EndIf
    	WinActivate($hWnd)
    	_GUICtrlListView_SetItemSelected($hMarket, $iIndex - 1, 1, 1)
    	ControlFocus($hWnd, "", $hMarket)
    	ControlSend($hWnd, "", $hMarket, "{F9}")
    	Sleep(300)
    	If WinExists("Auftrag", "") Then
    		$hWndOrder = WinGetHandle("Auftrag", "")
    		#Region Symbol setzen
    		$hcSymbol = ControlGetHandle($hWndOrder, "", "[CLASS:ComboBox;INSTANCE:1]")
    		$iSymbolIndex = _GUICtrlComboBoxEx_GetCurSel($hcSymbol)
    		_GUICtrlComboBoxEx_GetItemText($hcSymbol, $iSymbolIndex, $sOrderSelection)
    		If StringLeft($sOrderSelection, StringLen($asignal[2])) <> $sOrderSelection Then
    			$aListItems = _GUICtrlComboBoxEx_GetListArray($hcSymbol)
    			For $i = 1 To $aListItems[0]
    				$aListItems[$i] = StringLeft($aListItems[$i], 6)
    			Next
    			$iIndex = _ArraySearch($aListItems, $asignal[2])
    			_GUICtrlComboBoxEx_SetCurSel($hcSymbol, $iIndex - 1)
    		EndIf
    		#EndRegion Symbol setzen
    		#Region Volumen setzen
    		$hcVolumen = ControlGetHandle($hWndOrder, "", "[CLASS:Edit;INSTANCE:1]")
    		If Not IsHWnd($hcVolumen) Then _errorHandler("Die ComboBox `Volumen` konnte nicht gefunden werden!")
    		ControlSetText($hWndOrder, "", $hcVolumen, $sVolumen)
    		#EndRegion Volumen setzen
    		#Region Typ setzen
    		$hcType = ControlGetHandle($hWndOrder, "", "[CLASS:ComboBox;INSTANCE:3]")
    		If Not IsHWnd($hcType) Then
    			_errorHandler("ComboBox 'Typ' nicht gefunden!")
    		EndIf
    		$aListItems = _GUICtrlComboBoxEx_GetListArray($hcType)
    		For $i = 1 To $aListItems[0]
    			$aListItems[$i] = StringLower($aListItems[$i])
    		Next
    		$iIndex = _ArraySearch($aListItems, $asignal[0])
    		WinActivate($hWndOrder)
    		ControlFocus($hWndOrder, "", $hcType)
    		Do
    			ControlSend($hWndOrder, "", $hcType, "{DOWN}")
    		Until _GUICtrlComboBox_GetCurSel($hcType) == $iIndex - 1
    		#EndRegion Typ setzen
    		Sleep(200)
    		#Region Pending Order Typ setzen
    		$hcOrderType = ControlGetHandle($hWndOrder, "", "[CLASS:ComboBox;INSTANCE:5]")
    		If Not IsHWnd($hcOrderType) Then _errorHandler("Die ComboBox `Typ`im Abschnitt 'Pending Order' konnte nicht gefunden werden!")
    		$aListItems = _GUICtrlComboBoxEx_GetListArray($hcOrderType)
    		For $i = 1 To $aListItems[0]
    			$aListItems[$i] = StringLower($aListItems[$i])
    		Next
    		$iIndex = _ArraySearch($aListItems, $asignal[1])
    		WinActivate($hWndOrder)
    		ControlFocus($hWndOrder, "", $hcType)
    		While _GUICtrlComboBox_GetCurSel($hcOrderType) <> $iIndex - 1
    			ControlSend($hWndOrder, "", $hcOrderType, "{DOWN}")
    		WEnd
    		#EndRegion Pending Order Typ setzen
    		#Region Preis setzen
    		$hcCost = ControlGetHandle($hWndOrder, "", "[CLASS:Edit;INSTANCE:6]")
    		If Not IsHWnd($hcCost) Then _errorHandler("Die ComboBox `zum Preis`im Abschnitt 'Pending Order' konnte nicht gefunden werden!")
    		ControlSetText($hWndOrder, "", $hcCost, $asignal[3])
    		#EndRegion Preis setzen
    		#Region stop loss setzen
    		$hcStopLoss = ControlGetHandle($hWndOrder, "", "[CLASS:Edit;INSTANCE:2]")
    		If Not IsHWnd($hcStopLoss) Then _errorHandler("Die ComboBox `Stop Loss`im Abschnitt 'Pending Order' konnte nicht gefunden werden!")
    		ControlSetText($hWndOrder, "", $hcStopLoss, $asignal[5])
    		#EndRegion stop loss setzen
    		#Region Take Profit setzen
    		$hcTakeProfit = ControlGetHandle($hWndOrder, "", "[CLASS:Edit;INSTANCE:3]")
    		If Not IsHWnd($hcStopLoss) Then _errorHandler("Die ComboBox `Take Profit`im Abschnitt 'Pending Order' konnte nicht gefunden werden!")
    		ControlSetText($hWndOrder, "", $hcTakeProfit, $asignal[4])
    		#EndRegion Take Profit setzen
    		#Region DTP setzen
    		$hcDTP = ControlGetHandle($hWndOrder, "", "[CLASS:SysDateTimePick32;INSTANCE:1]")
    		If Not IsHWnd($hcDTP) Then _errorHandler("Der DateTimePicker im Abschnitt 'Pending Order' konnte nicht gefunden werden!")
    		ControlFocus($hWndOrder, "", $hcCost)
    		ControlClick($hWndOrder, "", $hcCost)
    		Send("{TAB}")
    		Send("{SPACE}")
    		$aDTP = StringSplit($asignal[7], "|", 3)
    		For $i = 0 To UBound($aDTP) - 1
    			Send("{RIGHT}")
    			ControlSend($hWndOrder, "", $hcDTP, $aDTP[$i])
    		Next
    		#EndRegion DTP setzen
    		#Region absenden
    		$hcSave = ControlGetHandle($hWndOrder, "", "[CLASS:Button;INSTANCE:16]")
    		If Not IsHWnd($hcSave) Then _errorHandler("Der Button zum platzieren des Eintrags konnte nicht gefunden werden")
    		ControlClick($hWndOrder, "", $hcSave)
    		#EndRegion absenden
    		Sleep(300)
    		$hcOK = ControlGetHandle($hWndOrder, "", "[CLASS:Button;INSTANCE:22]")
    		If Not IsHWnd($hcOK) Then _errorHandler("Der Button zum schliessen des Order Fensters konnte nicht gefunden werden")
    
    
    		If ControlGetFocus($hWndOrder) <> "#32770" Then
    			_log($asignal)
    			WinClose($hWndOrder)
    
    
    		EndIf
    		Sleep(300)
    	Else
    		_errorHandler("Auftragsfenster konnte nicht gefunden werden!")
    		Exit
    	EndIf
    EndFunc   ;==>_setOrder
    
    
    Func _getRelevantMails()
    	Local $sTmp = ""
    	Local $iIndex
    	Local $aResult, $aIndex
    	Local $aTmp[1][2]
    	$aTmp[0][0] = 0
    	For $i = 1 To $aMails[0]
    		$sTmp = FileRead($aMails[$i])
    		If Not @error Then
    			$aResult = StringRegExp($sTmp, "From:.*?<(.*?)>", 3, 1)
    			If IsArray($aResult) Then
    				$aIndex = _Array2DSearch($aSenders, $aResult[0])
    				If IsArray($aIndex) And $aIndex[0] <> 0 Then
    					$aIndex = StringSplit($aIndex[1], "|", 3)
    					If Not @error Then
    						$iSenderID = $aIndex[0]
    						_Array2dAdd($aTmp, $aMails[$i] & "|" & $aSenders[$iSenderID][0])
    						$aTmp[0][0] += 1
    					EndIf
    				EndIf
    			EndIf
    		EndIf
    	Next
    	If IsArray($aTmp) Then
    		Return $aTmp
    	Else
    		SetError(1)
    	EndIf
    EndFunc   ;==>_getRelevantMails
    
    
    Func _errorHandler($sError, $iTimeout = 0, $fExit = True)
    	MsgBox(64, "Fehler", $sError, Int($iTimeout))
    	If $fExit = True Then Exit
    EndFunc   ;==>_errorHandler
    
    
    Func _log($aArray)
    	Local $sLogFile = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & ".txt"
    	_FileWriteFromArray(@ScriptDir & "\logfiles" & $sLogFile, $aArray)
    	ShellExecute("notepad.exe", "'" & @ScriptDir & "\logfiles" & $sLogFile & "'")
    EndFunc   ;==>_log
    
    
    ;====================================================================================================================
    ; Name ..........: _GUICtrlListView_CreateArray
    ; Description ...: Creates a 2-dimensional array from a listview.
    ; Syntax ........: _GUICtrlListView_CreateArray($hListView[, $sDelimeter = '|'])
    ; Parameters ....: $hListView           - Control ID/Handle to the control
    ;                  $sDelimeter          - [optional] One or more characters to use as delimiters (case sensitive). Default is '|'.
    ; Return values .: Success - The array returned is two-dimensional and is made up of the following:
    ;                                $aArray[0][0] = Number of rows
    ;                                $aArray[0][1] = Number of columns
    ;                                $aArray[0][2] = Delimited string of the column name(s) e.g. Column 1|Column 2|Column 3|Column nth
    ;                                $aArray[1][0] = 1st row, 1st column
    ;                                $aArray[1][1] = 1st row, 2nd column
    ;                                $aArr)ay[1][2] = 1st row, 3rd column
    ;                                $aArray[n][0] = nth row, 1st column
    ;                                $aArray[n][1] = nth row, 2nd column
    ;                                $aArray[n][2] = nth row, 3rd column
    ; Author ........: guinness
    ; Remarks .......: GUICtrlListView.au3 should be included.
    ; Example .......: Yes
    ; =====================================================================================================================
    Func _GUICtrlListView_CreateArray($hListView, $sDelimeter = '|')
    	Local $iColumnCount = _GUICtrlListView_GetColumnCount($hListView), $iDim = 0, $iItemCount = _GUICtrlListView_GetItemCount($hListView)
    	If $iColumnCount < 3 Then
    		$iDim = 3 - $iColumnCount
    	EndIf
    	If $sDelimeter = Default Then
    		$sDelimeter = '|'
    	EndIf
    
    
    	Local $aColumns = 0, $aReturn[$iItemCount + 1][$iColumnCount + $iDim] = [[$iItemCount, $iColumnCount, '']]
    	For $i = 0 To $iColumnCount - 1
    		$aColumns = _GUICtrlListView_GetColumn($hListView, $i)
    		$aReturn[0][2] &= $aColumns[5] & $sDelimeter
    	Next
    	$aReturn[0][2] = StringTrimRight($aReturn[0][2], StringLen($sDelimeter))
    
    
    	For $i = 0 To $iItemCount - 1
    		For $j = 0 To $iColumnCount - 1
    			$aReturn[$i + 1][$j] = _GUICtrlListView_GetItemText($hListView, $i, $j)
    		Next
    	Next
    	Return SetError(Number($aReturn[0][0] = 0), 0, $aReturn)
    EndFunc   ;==>_GUICtrlListView_CreateArray
    Alles anzeigen
  • Fragen und Programmierer gesucht falls möglich!

    • demmar
    • 18. März 2014 um 19:35

    Erstmal vielen Dank für die schnellen Antworten!

    Zitat

    Kannst du noch nähere Informationen und/oder Beispiele geben?
    Also: Welcher eMail-Server? Oder kann der Server/die Adresse auch wechseln (das würde fast zwingend die Implementierung von POP3 erfordern)?
    Kannst du an einem Beispiel zeigen, wie eine eMail aussieht, und welche Werte ausgelesen werden sollen?

    So wie das aus sieht kommen die E-Mails auf mein GMX Konto dies möcht ich dann aber noch auf Gmail Adresse ändern!

    Wie genau die E-Mail aussieht sehe ich wahrscheinlich erst morgen da ich nicht damit gerechnet habe wie schnell hier antworten rein kommen!

    Ich werde morgen mal dokumentieren welche Werte er auslesen soll und wo er diese rein tragen soll.

    Da ich ein kein Autoit Junkie bin must ihr mit mir ein wenig pflegsamer umgehen :D

    zu POP implementierung = Greift autoit dann automatisch auf den Email ACC?


    Gruß Demmar

  • Fragen und Programmierer gesucht falls möglich!

    • demmar
    • 18. März 2014 um 16:45

    Hallo,

    Als erstes müsste einer von euch sagen das die Möglich ist da ich keine Ahnung von Autoit habe, ich weiß aber von einen bekannten das Autoit Werte lesen kann!

    Fragen:

    1. Neue Emails im Eingang überpüfen?

    2. Ist es möglich von einer E-Mail 4-6 Werte rauszulesen die dann in ein anderes Programm wo ein Popupfenster auf geht und dort und die richtigen Zeilen einträgt?

    3. Wenn das dann feritg ausgeführt worden ist Email löschen oder verschieben! damit diese dann nicht nochmal bearbeitet wird!

    Dies wäre es schon mit dem den Fragen von mir!


    Falls dies möglich seine sollte!


    Zeitfenster: Kein Zeitfenster

    Vergütung: 150€

    Folgearbeiten: JA, vielleicht

    Gruß

    Demmar

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™