Hallo, wozu gibt es denn Makros in Autoit ?
[autoit]DirCopy(@AppDataDir & "\Mozilla\Firefox", "D:\Backup\" , 1)
[/autoit]Hallo, wozu gibt es denn Makros in Autoit ?
[autoit]DirCopy(@AppDataDir & "\Mozilla\Firefox", "D:\Backup\" , 1)
[/autoit]Hi,
folgendes Problem. Ich bereite einige hier in DE ausrangierte Diagnostik-PC fürs Ausland vor.
Auch hier habe ich das Problem, dass ich keine Windows-Neuinstallation durchführen kann, da dann die verankerten Lizenzinformationen futsch sind.
Für den Auslandseinsatz soll der PC mit englischer Sprache laufen. Kein Problem für die Anwendersoftware, da kann ich das umstellen.
Jetzt hätte ich aber gern auch Windows auf englisch umgestellt. Ist das überhaupt irgendwie möglich (Sprachdateien importieren ?) oder nicht?
System ist Win2K.
Hallo Bernd,
Danke :kiss: - genau so hat es geklappt.
Auch wenn mir nicht ganz klar ist wieso. Ich hatte zu diesem PC keine separaten SATA-Treiber (nur RAID-Treiber, die ich aber mit meiner Win2K-Version nicht verwenden kann, da SP4 erforderlich und das darf ich wegen der installieren Software nicht aufspielen - darunter läuft die nicht). Habe nur die Chipsatz- und Grafiktreiber installiert und dann auf SATA geklont. Booten ging dann anstandslos.
Ich weiß noch von 'nem Notebook mit SATA, dass dort im Gerätemanager nach der Installation auch ein SATA-Controller zu finden war.
Das ist bei dem PC nicht der Fall (vllt. wg. Dual-Channel ?).
Egal - es funzt, und das ist wichtig.
Unter welchem Namen hast du es denn kompiliert? Es darf natürlich NICHT der Name einer existierenden Datei sein -sonst treten benannte Effekte auf.
Hi,
ist mir bisher gar nicht aufgefallen - aber die Funktionen zum Edit-Ctrl geben entweder einen Zeilen- oder einen Zeichen-Index zurück.
Man kann mit keiner Funktion direkt den markierten Text ausgeben.
Hierzu habe ich jetzt eine Funktion hinzugefügt: GUICtrlEditGetSelTxt($h_edit)
;----------------------------------------------------------------------------------------------------------------------
; Fuction _GUICtrlEditGetSelTxt($h_edit)
;
; Description Get selectet text from an edit-control
;
; Parameter $h_edit edit control
;
; Return Succes selected text
; Failure 0 set @error = 1; error from _GUICtrlEditGetSel()
; set @error = 2; nothing selected
;
; Requirement #include <GuiEdit.au3>
;
; Author BugFix ([email='bugfix@autoit.de'][/email])
;----------------------------------------------------------------------------------------------------------------------
Func _GUICtrlEditGetSelTxt($h_edit)
Local $sel = _GUICtrlEditGetSel($h_edit)
If ($sel == $EC_ERR) Then
SetError(1)
Return 0
ElseIf (Not IsArray($sel)) Or ($sel[1] = $sel[2]) Then
SetError(2)
Return 0
EndIf
Local $selTxt = ''
$arTxt = StringSplit(GUICtrlRead($h_edit),'')
For $i = $sel[1]+1 To $sel[2]
$selTxt &= $arTxt[$i]
Next
Return $selTxt
EndFunc ;==>_GUICtrlEditGetSelTxt
Cursor an den Anfang setzen (Position 0):
[autoit]_GUICtrlEditSetSel ($edit, 0, 0)
[/autoit]Edit: Wenn du weißt, wieviel Zeichen du markieren möchtest:
[autoit]_GUICtrlEditSetSel ($edit, 0, $anzahl)
[/autoit]Dann bleibt dir nur erst zu markieren:
#include <GuiEdit.au3>
HotKeySet("!s", "_selectionRead") ; Auswahl zeigen mit Alt+s
GUICreate("Test", 200, 100)
$a = GUICtrlCreateEdit("", 20, 20, 150, 32, $WS_HSCROLL, $WS_EX_LAYERED )
GUISetState(@SW_SHOW)
$b = _StringRepeat("1234567890", 15)
GUICtrlSetData($a, $b)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
Sleep(10)
WEnd
Exit
Func _selectionRead()
$sel = _GUICtrlEditGetSel($a)
If IsArray($sel) Then
$editTxt = GUICtrlRead($a)
$arTxt = StringSplit($editTxt,'')
$selTxt = ''
For $i = $sel[1]+1 To $sel[2]
$selTxt &= $arTxt[$i]
Next
EndIf
MsgBox(0, '', "Select: " & $selTxt)
EndFunc
EDIT: Post Nr. 888 - Schnapszahl, ich gebe einen aus
:tassen:
Verstehe ich nicht, wenn es nur eine Zeile ist, dann ist dies doch der gesamte Inhalt des Edits - also: GUICtrlRead($Edit).
Oder ist das Editfeld so schmal, dass du nur die Hälfte der Zeile siehst, und du möchtest diesen Teil auslesen?
Also, du kannst die erste sichtbare Zeile ermitteln ( _GUICtrlEditGetFirstVisibleLine( ) ). Allerdings habe ich im Moment keine Idee, wie du die letzte sichtbare Zeile feststellen kannst, evtl. berechnen aus der Höhe des Editbereichs ( _GUICtrlEditGetRECT( ) ) und Schrifthöhe.
Alternativ, den gewünschten Bereich markieren. Mit _GUICtrlEditGetSel( ) erhältst du dann Start-und Endposition des markierten Bereiches.
Sag mal, wieso eigentlich WinActivate() ?
Du willst doch wissen ob das Fenster aktiv ist, also WinActive().
Oder liege ich da falsch?
$text = WinGetText($Title [,Text])
[/autoit]$Title ist bei dir aber: "Microsoft Business Solutions-Navision", also:
[autoit]$text = WinGetText("Microsoft Business Solutions-Navision")
[/autoit]Der Fehler: Es wurde kein String selektiert - $array ist leer.
[autoit]#include <String.au3>
#include <array.au3>
$text =("In Debitor D10000 fehlt die E-Mail-Adresse"); die quelle $text ist der ist-zustand, also kein anderer input vorhanden
$array = StringRegExp($text, "(?i)Debitor(.*?)(?i)fehlt",1)
If IsArray($array) Then
MsgBox(64,"",$array[0])
Else
MsgBox(0, '', "Array leer!")
EndIf
Probier malo dieses Pattern, bei mir klappt es damit:
[autoit]$array = StringRegExp($text, "((?<=Debitor )(.*?)(?= fehlt))",1)
[/autoit]#include <File.au3>
Dim $arLinks
_FileReadToArray("Pfad-Link-Datei", $arLinks)
For $i = 1 To $arLinks[0]
; Download $arLinks[$i]
Next
Ok, werd ich mal testen.
Vorher probier ich allerdings ob ich in den abgesicherten Modus komme. Vielleicht läßt sich von dort nachträglich der Treiber installieren.
Hi,
ich will einen PC ausrangieren, hab schon 'nen neuen und dieser ist mit SATA-Platten bestückt.
Der alte hat IDE-Platte mit Win2K. Die kommt aber nicht mit in den neuen PC da sowieso zu klein, hab sie aber auf eine SATA-Platte geklont.
Nun sind aber dort noch keine SATA-Treiber drauf und Windows kann somit nicht starten.
Hat jemand 'ne Idee, wie ich die Treiber da jetzt einbinden kann?
(Neuinstallation fällt eigentlich flach, da auf der Platte Lizenzinformationen zu einigen Programmen 'eingegraben' sind in Root und MBR. Die Infos gehen beim Klonen nicht verloren aber bei erneuter Installation ist alles futsch. )
Hab grad bemerkt, dass Sleep(0) auch schon gewaltig bremst
Baue es mal ans Ende der For-Schleife ein. Das reduziert die Geschwindigkeit drastisch.
Oops, schon im Papierkorb. Aber ich machs nochmal.
Edit: So, hier die 2-Fenster-Variante.
#include <GUIConstants.au3>
Dim $x1 = 0, $y1 = 0, $x2 = @DesktopWidth-200, $y2 = @DesktopHeight-200
Dim $w1 = 400, $h1 = 400, $w2 = 200, $h2 = 200
$Wnd1 = GUICreate("Top Window", $w1, $h1, $x1, $y1)
$Wnd2 = GUICreate("Bottom Window", $w2, $h2, $x2, $y2)
GUISetState(@SW_SHOW, $Wnd1)
GUISetState(@SW_SHOW, $Wnd2)
$x1_way = @DesktopWidth-200
$y1_step = (@DesktopHeight-200)/$x1_way
$size_step = 200/$x1_way
$x2_way = @DesktopWidth-200
$x2_start = $x2_way
For $x1 = 0 To @DesktopWidth-200
$y1 += $y1_step
$w1 -= $size_step
$h1 -= $size_step
WinMove($Wnd1,'', $x1, Int($y1), Int($w1), Int($h1))
$y2 -= $y1_step
$x2 = $x2_start-$x1
WinMove($Wnd2,'', $x2, Int($y2), Int($w1), Int($h1))
Next
Edit2: Und hier eine Variante, in der ein Fenster wächst und das andere schrumpft.
#include <GUIConstants.au3>
Dim $x1 = 0, $y1 = 0, $x2 = @DesktopWidth-200, $y2 = @DesktopHeight-200
Dim $w1 = 400, $h1 = 400, $w2 = 200, $h2 = 200
$Wnd1 = GUICreate("Top Window", $w1, $h1, $x1, $y1)
$Wnd2 = GUICreate("Bottom Window", $w2, $h2, $x2, $y2)
GUISetState(@SW_SHOW, $Wnd1)
GUISetState(@SW_SHOW, $Wnd2)
$x1_way = @DesktopWidth-200
$y1_step = (@DesktopHeight-200)/$x1_way
$size_step = 200/$x1_way
$y2_step = $y1_step
For $x1 = 0 To @DesktopWidth-200
$y1 += $y1_step
$w1 -= $size_step
$h1 -= $size_step
WinMove($Wnd1,'', $x1, Int($y1), Int($w1), Int($h1))
$pos = WinGetPos($Wnd2)
$y2 -= $pos[1]/((@DesktopWidth-200)-$x1)
$x2 -= $pos[0]/((@DesktopWidth-200)-$x1)
$w2 += $size_step
$h2 += $size_step
WinMove($Wnd2,'', Int($x2), Int($y2), Int($w2), Int($h2))
Next
Sollte trotzdem gehen:
Fenster1 - 1 Schritt diagonal
Fenster2 - 1 Schritt diagonal usw. immer abwechselnd.
Die Geschwindigkeit sollte groß genug sein, wenn du zwischen den Schritten kein Sleep einbaust.
Hier mal ein Beispiel für ein Fenster. Brauchst jetzt nur entgegengesetzt für das andere Fenster im Wechsel laufen lassen.
Hab mal ein Sleep eingebaut, zum besseren Angucken.
#include <GUIConstants.au3>
Dim $x1 = 0, $y1 = 0
Dim $w1 = 400, $h1 = 400
$Wnd1 = GUICreate("Top Window", $w1, $h1, $x1, $y1)
GUISetState(@SW_SHOW, $Wnd1)
$x1_way = @DesktopWidth-200
$y1_step = (@DesktopHeight-200)/$x1_way
$size_step = 200/$x1_way
For $x1 = 0 To @DesktopWidth-200
$y1 += $y1_step
$w1 -= $size_step
$h1 -= $size_step
WinMove($Wnd1,'', $x1, Int($y1), Int($w1), Int($h1))
Sleep(5)
Next
EDIT: Habs grade mit 2 Fenstern probiert, wird zu langsam. Evtl. zum schnelleren Ausführen erst alle Parameter für jeden Schritt berechnen und in einem Array ablegen.
Ja, sollte nicht zu schwierig werden.
Ähnlich wie ich es in meiner _SlideWindow() Funktion gemacht habe. Nur zusätzlich die Parameter für Fenstergröße berücksichtigen.
Also farbig läßt sich die UDF durch SciTE wohl nicht so ohne weiteres darstellen.
Aber UserCalltips kannst du selber erstellen:
In der Datei "...\Scite\api\au3.user.calltips.api" sind die entsprechenden Einträge für deine eigenen Calltips vorzunehmen. Falls die Datei noch nicht existiert - erstellen.
Die Einträge werden wie folgt vorgenommen: