Du musst das direkt nach der erstellung des Bildes einfügen: GuiCtrlSetState(-1,$GUI_DISABLE)
Gruss Shadowigor
Du musst das direkt nach der erstellung des Bildes einfügen: GuiCtrlSetState(-1,$GUI_DISABLE)
Gruss Shadowigor
Ok, wusst ich nicht. Hab einfach das genommen was bei mir stand. Aber " - SciTE" reicht ja eigentlich auch.
Ich habs jetzt noch mal kompiliert.
Gruss Shadowigor
So ich habs noch mal überarbeitet und jetzt sollte es auch bei dir funktionieren. Freut mich, dass es dir gefällt.
Und ja, natürlich darfst dus auf die Website stellen.
Gruss Shadowigor
Erstmal möchte ich ein Lob aussprechen. Tolles Ding!
Find ich super hat mal wer sowas gemacht. Gut möglich, dass ich es weiterhin nutze.
Aber zum Hauptgrund meines Posts:
Falls jemand mit der IDE++ nicht so wirklich zurechtkommt habe ich mal ein kleines Script geschrieben um AutoC++ auch in SciTE nutzen zu können.
Mann muss einfach das Script während dem Gebrauch von SciTE am laufen haben und dann kann man mit F5 das Script starten.
WICHTIG: Das Script muss im IDE-Ordner von AutoC++ sein.
Andere Anwendungen sollten F5 dann immer noch empfangen (keine Garantie).
Gruss Shadowigor
Dann musst du einfach einen Interpreter für dein Programm schreiben. Der Schwierigkeitsgrad kommt aber wohl auf den Sprachumfang an.
Aber ich denke der ist nicht riesig und deshalb könnte das durchaus funktionieren. Unter Umständen wartest du dann aber ein wenig bis sich am Ausgang was tut.
Aber am besten fängst du einfach mal an. Bei Problemen kannst du ja immer noch mal fragen.
Gruss Shadowigor
Ich denke das wird recht komplex. Da ich auch schon mit so was ähnlichem gearbeitet habe (FPGA (oder auch asm) - Wenn ich Wikipedia richtig verstehe ist das ja was ähnliches),
kann ich mir vorstellen, dass so ein Programm nicht einfach wird. Wenn du einen grafischen Editor willst, wirds wohl noch schwieriger.
Doch auch mit solchen Befehlen wie beschrieben musst du wohl sehr viel beachten, dass alles fehlerfrei läuft. Dafür kenn ich die Sprache aber zuwenig.
Würde mich aber noch interessieren was daraus wird, solltest du es trotzdem in Angriff nehmen.
Gruss Shadowigor
Nein nicht ganz. Beim 2ten ist $ColorIndex = 3 vor dem For. Dadurch setzt er die Farbe nicht bei jedem Schleifendurchgang zurück. Geht denn das auch nicht?
Dann funktioniert das was ich gepostet habe also nicht?
Ja das denke ich schon aber so wie das jetzt ist wird er dir das Feld im ersten durchgang Blau färben und im zweiten dann wider Rot, da die Farbe immer zurückgesetzt wir. Dann müsste es wohl so sein:
Func _versandchecken($excel_fenster, $ie_fenster)
_IELinkClickByText($inet, "Alle Details zum Versandanzeigen")
Sleep(1200)
WinSetState($ie_fenster, "", @SW_MINIMIZE)
$ColorIndex = 3 ; Standardmässig ist die Farbe 3
[/autoit] [autoit][/autoit] [autoit]For $s = 0 To UBound($standard) - 1 ; Ubound ist die grösse des Arrays. Deshalb noch -1 um den letzten Index zu erhalten.
[/autoit] [autoit][/autoit] [autoit]Select
[/autoit] [autoit][/autoit] [autoit]Case $versandtext[0] = " - Paketversand"
$ColorIndex = 16
Case $standard[$s] = $versender[0]
$ColorIndex = 45 ; Sollte jedoch einer dieser Fälle eintreffen, ändert sich die Farbe zu 16, 45 oder 5
Case $versender[2] = $standard[$s]
$ColorIndex = 5
EndSelect
$excel.Cells($i, 10).Font.ColorIndex = $ColorIndex ; Und hier wird dann die Farbe in Ecxel benutzt
Next
_IEQuit($inet)
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_versandchecken
[/autoit]
Ist es das was du meinst? Wenn nein habe ich dich vielleicht falsch verstanden.
Gruss Shadowigor
Ok, jetzt verstehe ich. Dabei fällt mir aber noch auf, dass bei $excel.Cells($i, 10).Font.ColorIndex = $ColorIndex die Zeile $i gewählt wird. Ich denke mal es wäre aber $s oder nicht? denn sonst schreibst du die verschiedenen Farben ja in die gleiche Zelle wenn $i die ganze Zeit gleich bleibt. Wäre es dann nicht so richtig: $excel.Cells($s, 10).Font.ColorIndex = $ColorIndex. Das könnte auch dein Problem beheben.
Gruss Shadowigor
Also bei deiner Frage kann ich dir nicht ganz folgen. Welche Farbe? Welcher Versender? Welches Array? Und welche Ware??.... Das verstehe ich noch nicht ganz. Die Bitte ist jedoch kein Problem:
Func _versandchecken($excel_fenster, $ie_fenster)
_IELinkClickByText($inet, "Alle Details zum Versandanzeigen")
Sleep(1200)
WinSetState($ie_fenster, "", @SW_MINIMIZE)
For $s = 0 To UBound($standard) - 1 ; Ubound ist die grösse des Arrays. Deshalb noch -1 um den letzten Index zu erhalten.
[/autoit] [autoit][/autoit] [autoit]$ColorIndex = 3 ; Standardmässig ist die Farbe 3
[/autoit] [autoit][/autoit] [autoit]Select
[/autoit] [autoit][/autoit] [autoit]Case $versandtext[0] = " - Paketversand"
$ColorIndex = 16
Case $standard[$s] = $versender[0]
$ColorIndex = 45 ; Sollte jedoch einer dieser Fälle eintreffen, ändert sich die Farbe zu 16, 45 oder 5
Case $versender[2] = $standard[$s]
$ColorIndex = 5
EndSelect
$excel.Cells($i, 10).Font.ColorIndex = $ColorIndex ; Und hier wird dann die Farbe in Ecxel benutzt
Next
_IEQuit($inet)
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_versandchecken
[/autoit]
Ich hoffe das reicht dir. Viel mehr gibts da nicht zu kommentieren.
Gruss Shadowigor
Also so wie ich das sehe soll doch je nach dem was in $standard steht, eine andere Zahl bei $excel.Cells($i, 10).Font.ColorIndex haben. Da du immer die selbe Zelle färben willst machst dus vielleicht so.
Meiner Meinung nach reicht das schon:
Func _versandchecken($excel_fenster, $ie_fenster)
_IELinkClickByText($inet, "Alle Details zum Versandanzeigen")
Sleep(1200)
WinSetState($ie_fenster, "", @SW_MINIMIZE)
For $s = 0 To UBound($standard) - 1
[/autoit] [autoit][/autoit] [autoit]$ColorIndex = 3
[/autoit] [autoit][/autoit] [autoit]Select
[/autoit] [autoit][/autoit] [autoit]Case $versandtext[0] = " - Paketversand"
$ColorIndex = 16
Case $standard[$s] = $versender[0]
$ColorIndex = 45
Case $versender[2] = $standard[$s]
$ColorIndex = 5
EndSelect
$excel.Cells($i, 10).Font.ColorIndex = $ColorIndex
Next
_IEQuit($inet)
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_versandchecken
[/autoit]
Einige Case kann man dann eh löschen, da diese die Farbe sowieso nicht beeinflussen würden. Und das maximieren des Fensters un die Sleeps kannst du dir denke ich auch sparen.
Ausserdem, so wie ich das sehe, gehst du immer davon aus dass $standard die Indexe 0-3 hat. Ich bin mir jetzt nicht ganz sicher aber so wie du das beschreibst hat der doch nicht immer 4 Werte.
Wenn du nur 2 Versandarten hast hat der doch auch nur 2 Werte oder habe ich das falsch verstanden? Wenn das so ist, würde ich es mit 'For $s = 0 To Ubound($standard) - 1' machen.
Aber das mit dem Logik-Fehler stimmt auch.
Edit: Einen Vorschlag kann ich dir nicht machen, aber das sinnvollste wäre wohl wenn du die am Schluss noch mit einem If abfängst.
Gruss Shadowigor
Da solltest du dir am besten mal ControlSend() in der Hilfe ansehen. Das müsste das sein, was du suchst.
Hallo Leute
Ich habe mal ein Script geschrieben um Datein rekursiv (inklusive Unterordner, UnterUnterordner... etc.) aufzulisten. Ich weis es gibt schon viele und jetzt halt noch eines mehr.
Ich habe auch unteranderem eines von BugFix gefunden und gedacht da braucht es ja wirklich keines mehr von mir. Ich musste aber mit verwunderung feststellen, dass meines erheblich schnellen ist als seines.
(Darauf geb ich keine Garantie. Vielleicht ists auch nur bei mir so) Deshalb poste ich es jetzt trozdem mal. Schaden kanns ja nicht.
Zu sagen ist noch das man mit diesem Script (im Moment) noch nicht gezielt nach Dateinamen suchen, sonder nur die Endungen rausfiltern kann.
Das Resultat wird Standardmässig in die Files.txt im Scriptverzeichniss geschrieben. Es kann aber auch als Array oder String mit @CRLF-Trennzeichen erhalten werden. (Siehe Beschreibung von $fFlag)
Und natürlich noch das Script:
#include <Array.au3>
#include <File.au3>
#cs
===========================================================================================================================================
_GetFiles
---------
Version: 1.0
[/autoit] [autoit][/autoit] [autoit]Autor: Shadowigor
[/autoit] [autoit][/autoit] [autoit]Funktion: Gibt die Dateistruktur eines Pfades an (mit Filter)
[/autoit] [autoit][/autoit] [autoit]Parameter: $sPathFull Der zu durchsuchende Pfad (z.B C:\Users\Benutzer\*.* oder C:\Users\Benutzer\*.jpg)
$fFlag 0 > Wird in Files.txt geschrieben
1 > Gibt es als Array zurück
2 > Gibt es als String zurück
Bemerkung: Setzt @error und gibt "Nothing Found!" zurück (bzw. schreibt es in die Datei) wenn nichts gefunden wurde
Gezielte Dateisuche wird noch nicht unterstützt.
===========================================================================================================================================
#ce
Func _GetFiles($sPathFull, $fFlag = 0)
[/autoit] [autoit][/autoit] [autoit]Local $aSubdirTmp[1], $aSubdir[1], $iLengh, $sPath, $sFile, $aFileList[1], $i, $sFileList, $sSubPath, $aFiles[1]
[/autoit] [autoit][/autoit] [autoit]$iLengh = StringInStr($sPathFull, "\", 0, -1)
$sPath = StringLeft($sPathFull, $iLengh)
$sFile = StringTrimLeft($sPathFull, $iLengh + 1)
$iLengh = StringLen($sFile)
If Not FileExists($sPath) Then
If $fFlag = 0 Then
$hFileWrite = FileOpen(@ScriptDir & "\Files.txt", 2)
FileWrite($hFileWrite, "Nothing Found!")
FileClose($hFileWrite)
Return SetError(1)
EndIf
SetError(1)
Return "Nothing Found!"
EndIf
$aFileList = _FileListToArray($sPath)
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $aFileList[0]
If StringInStr(FileGetAttrib($sPath & $aFileList[$i]), "D") <> 0 Then
_ArrayAdd($aSubdirTmp, $sPath & $aFileList[$i])
_ArrayAdd($aFiles, $sPath & $aFileList[$i])
ElseIf ($sFile = ".*") Or (StringRight($aFileList[$i], $iLengh) = $sFile) Then
_ArrayAdd($aFiles, $sPath & $aFileList[$i])
EndIf
Next
While UBound($aSubdirTmp) > 1
$sSubPath = $aSubdirTmp[UBound($aSubdirTmp) - 1]
$aFileList = _FileListToArray(_ArrayPop($aSubdirTmp))
If IsArray($aFileList) Then
For $i = 1 To $aFileList[0]
If StringInStr(FileGetAttrib($sSubPath & "\" & $aFileList[$i]), "D") <> 0 Then
_ArrayInsert($aSubdirTmp, 1, $sSubPath & "\" & $aFileList[$i])
If $sFile = ".*" Then _ArrayInsert($aFiles, 1, $sSubPath & "\" & $aFileList[$i])
ElseIf ($sFile = ".*") Or (StringRight($aFileList[$i], $iLengh) = $sFile) Then
_ArrayInsert($aFiles, 1, $sSubPath & "\" & $aFileList[$i])
EndIf
Next
EndIf
WEnd
If $fFlag = 1 Then Return $aFiles
$sFileList = _ArrayToString($aFiles, @CRLF)
If $fFlag = 2 Then Return $sFileList
$hFileWrite = FileOpen(@ScriptDir & "\Files.txt", 2)
FileWrite($hFileWrite, $sFileList)
FileClose($hFileWrite)
EndFunc ;==>_GetFiles
[/autoit]
Gruss Shadowigor
TCPRecv hat einen Parameter bei dem du die maximale länge einstellen kannst. Auf unendlich setzen kannst du den nicht und das macht auch keinen Sinn.
Wenn du sehr viele Daten empfängst, füllst du dir damit unter Umständen deinen ganzen Arbeitsspeicher. Und das willst du doch nicht.
Wenn du TCPRecv mehrmals aufrufst, wirst du aber auch alle Daten erhallten. Die werden zuerst in einem Buffer zwischengespeichert.
Und die anzahl der erhaltenen Zeichen steht in @extended. Steht alles in der Hilfe.
Gruss Shadowigor
Ok ich gebs zu der war schlecht von mir. Manchmal denkt man einfach viel zu weit... Danke.
Hallo zusammen
Ich habe folgendes Problem:
Ich habe ein Script geschrieben, welches in gewissem Abstand ein Screenshot per TCP sendet. Hier das Script (also ein Teil davon):
$idSendSocket = TCPConnect(@IPAddress1, 50002) ; Die IP ist natürlich nur zum testen
While 1
_ScreenCapture_Capture(StringTrimRight(@ScriptDir, 7) & "\Tmp\TmpScreenPic.bmp")
$hFile = FileOpen(StringTrimRight(@ScriptDir, 7) & "\Tmp\TmpScreenPic.bmp", 16)
$bData = FileRead($hFile, 2048)
Do
$ret = TCPSend($idSendSocket, StringTrimRight(@ScriptDir, 7) & "\Tmp\TmpScreenPic.bmp")
MsgBox(0, @error, $ret) ; $ret ist immer 72
$bData = FileRead($hFile, 2048)
Until @error = -1
FileClose($hFile)
FileDelete(StringTrimRight(@ScriptDir, 7) & "\Tmp\TmpScreenPic.bmp")
Sleep(1000)
WEnd
Mein Problem: Es kommt (fast) nichts an.
Deshalb habe ich mir mal den Rückgabewert von TCP-Send angesehen. @error ist immer 0 und , was ich nicht verstehe, der Rückgabewert
(normalerweise die anzahl der gesendeten Bytes) ist immer 72. Keine Ahnung warum 72 aber es ist so. Ich habe auch schon versucht, bei FileRead kleinere Werte zu nehmen als 72.
Hat auch nichts gebracht. Immer noch 72. An der datei kann es nicht liegen, denn ich habe überprüft ob die Daten etwas enthalten. Jedenfalls erhalte ich am anderen Ende nur ein leeres .bmp.
Hat jemand irgendeine Ahnung was da falsch ist?
Da ist aber jemand sehr anspruchsvoll wenn ihm 0.08ms nicht reichen.
Aber weshalb machst du es überhaupt als String? Wenn du es wirklich binär willst dann nimm doch einfach 'Binary()'. (Weis jetzt auch nicht wie schnell das ist)
Wenn du es dann anzeigst hast dus halt in Hex. Aber ich weis ja jetzt nicht wozu man sowas brauchen kann... Wenn dus aber wirklich so willst
wie du es gemacht hast, wird es wahrscheinlich schwierig da noch Geschwindigkeit rauszuholen.