Hallo Bert,
das isses!
[autoit]
Global Enum $idPaste = 1000, ...
Vielen Dank!
Viele Grüße
Thomas
Hallo Bert,
das isses!
[autoit]
Global Enum $idPaste = 1000, ...
Vielen Dank!
Viele Grüße
Thomas
Schleife ist natürlich da. Sonst würde es mit den anderen Buttons ja genauso passieren. Es betrifft nur den "Paste"-Button.
Auch das hier führt zum Beenden (als müßte man hier ein "Stop" setzen...):
[autoit]
Func _einfuegen()
;MsgBox(4096, "Information", "Einfügen")
;Send("^v")
;sleep(200)
Korrekt ausgeführt wird das hier:
[autoit]
Func _einfuegen()
MsgBox(4096, "Information", "Einfügen")
;Send("^v")
;sleep(200)
Die anderen Grafik-Buttons arbeiten einwandfrei mit ihren Funktionen!
Hallo,
ich hatte gestern ja schon zunächst dieses (gelöste) merkwürdige Problem.
Jetzt habe ich in dieser Konstellation mit diesen grafischen Buttons die nachfolgenden simplen Anweisungen geschrieben. Es soll der "Copy"-Button nur den markierten Text irgendeines Feldes in die Zwischenablage kopieren (Strg+c) und der "Einfügen"-Button diesen in irgendeinem Feld wieder einfügen (Strg+v). Der "Copy"-Button mit send funktioniert. Der "Einfügen"-Button dagegen nicht. Wird dieser betätigt, wird zwar der Text eingefügt, das Programm wird dann nach (!) dem sleep beendet. Wird das sleep auf 10 Sekunden gestellt, beendet sich das Programm nach 10 Sekunden. Also kein akuter Programmabsturz. Im Textmenü funktioniert das alles einwandfrei mit diesen Funktionen.
[autoit]
If _GUICtrlToolbar_IsButtonPressed($ToolBar1, $idCut) then
_ausschneiden()
ElseIf _GUICtrlToolbar_IsButtonPressed($ToolBar1, $idCopy) then
_kopieren()
ElseIf _GUICtrlToolbar_IsButtonPressed($ToolBar1, $idPaste) then
_einfuegen()
_kopieren()
ElseIf _GUICtrlToolbar_IsButtonPressed($ToolBar1, $idSave) then
_speichern()
Func _einfuegen()
;MsgBox(4096, "Information", "Einfügen")
Send("^v")
sleep(200)
EndFunc
Func _kopieren()
;MsgBox(4096, "Information", "Kopieren")
Send("^c")
sleep(200)
EndFunc
Setze ich in den "Einfügen"-Button die Funktion " _kopieren()" ein, dann beendet sich das Programm übrigens auch! Es muss also was mit dem Button an sich zu tun haben.
[autoit]
_GUICtrlToolbar_AddButton($ToolBar1, $idPaste, $STD_PASTE)
Bringt der Button irgendeine Funktion bereits mit oder funktioniert er nur mit einer bestimmten Anweisungsart?
Dank und Gruß
Thomas
Ist schon gelöst. S.o.
Dein Beispiel ist aber von der Wirkung identisch.
Hallo,
jetzt geht es. Ich habe testweise links vom "Ausschneiden" einen anderen Button reingemacht. Danach ging dieser Button ganz links wieder nicht. Dafür ging der "Ausschneiden"-Button wieder.
Lösung:
[autoit]
_GUICtrlToolbar_AddBitmap($ToolBar1, 1, -1, $IDB_STD_LARGE_COLOR)
;_GUICtrlToolbar_AddButtonSep($ToolBar1)
_GUICtrlToolbar_AddButton($ToolBar1, $idCut, $STD_CUT)
_GUICtrlToolbar_AddButtonSep($ToolBar1)
_GUICtrlToolbar_AddButton($ToolBar1, $idCopy, $STD_COPY)
_GUICtrlToolbar_AddButton($ToolBar1, $idPaste, $STD_PASTE)
_GUICtrlToolbar_AddButtonSep($ToolBar1)
_GUICtrlToolbar_AddButton($ToolBar1, $idSave, $STD_FILESAVE)
Viele Grüße
Thomas
Hallo,
ich finde den Fehler hier nicht. Kann mir jemand sagen, ob ich mit $idCut, bzw.
$STD_CUT vielleicht den falschen Button-Bezeichner eingesetzt habe? Folgendes Problem:
Ich definiere hier die Toolbar-Buttons:
[autoit]
_GUICtrlToolbar_AddBitmap($ToolBar1, 1, -1, $IDB_STD_LARGE_COLOR)
_GUICtrlToolbar_AddButtonSep($ToolBar1)
_GUICtrlToolbar_AddButton($ToolBar1, $idCut, $STD_CUT)
_GUICtrlToolbar_AddButtonSep($ToolBar1)
_GUICtrlToolbar_AddButton($ToolBar1, $idCopy, $STD_COPY)
_GUICtrlToolbar_AddButton($ToolBar1, $idPaste, $STD_PASTE)
_GUICtrlToolbar_AddButtonSep($ToolBar1)
_GUICtrlToolbar_AddButton($ToolBar1, $idSave, $STD_FILESAVE)
und lese sie damit aus:
[autoit]
If _GUICtrlToolbar_IsButtonPressed($ToolBar1, $idCut) then
MsgBox(4096, "Information", "Ausschneiden")
ElseIf _GUICtrlToolbar_IsButtonPressed($ToolBar1, $idCopy) then
MsgBox(4096, "Information", "Kopieren")
ElseIf _GUICtrlToolbar_IsButtonPressed($ToolBar1, $idPaste) then
MsgBox(4096, "Information", "Einfügen")
ElseIf _GUICtrlToolbar_IsButtonPressed($ToolBar1, $idSave) then
MsgBox(4096, "Information", "Speichern")
EndIf
Es funktioniert alles - mit Ausnahme des ersten Buttons links, dem "Ausschneiden"-Button. Hat jemand eine Idee?
Dank und Gruß
Thomas
Das isses, Oscar!
Vielen Dank!
Hi,
klingt etwas kompliziert... Ich hatte gehofft, dass es einen GUI-Style gibt, den ich noch nicht kenne...
Viele Grüße
Thomas
Hallo,
ich habe eine Zeitangabe (Timer) mit Updown gemacht. Funktioniert auch alles sehr schön. Dieses Format: 12:15 oder 04:03 (also zwei Stellen für die Stunden und zwei Stellen für die Minuten). Wenn das Programm startet, ist diese Einstellung auch in der Form so. Wenn UpDown betätigt wird, springt das Feld bei einstelligen Zahlen aber auch wirklich auf einstellig um. Also z.B. 4:4 für 04:04.
Gibt es da eine Lösung, um das generell zweistellig rauf- und runter zu betätigen?
Dank und Gruß
Thomas
Hallo Bernd,
super! Vielen Dank! Funktioniert.
Viele Grüße
Thomas
Geht nicht: Prozesspriorität bleibt "Normal"...
Hallo,
ich komme nicht weiter dabei, neben einem Programm-Autostart Eintrag in die Registry (...\Run) einen zusätzlichem Eintrag für niedrige Prozess-Priorität zu machen. Weiß jemand wo man das wie einträgt?
Erfolgreich habe ich das nur über die Verknüpfung einer *.cmd mit FileCreateShortcut machen können. Diese *.cmd enthält:
[autoit]
start "" /b /low xy.exe
Schöner wäre es, das via Registry Eintrag ohne Batch-Datei dazwischen zu machen...
Dank und Gruß
Thomas
Grundsätzlich ist das Problem gut rübergekommen Das neue Dokument heißt nicht immer *_001.odt. Nur das erste Dokument in einem Ordner heißt so.
ZitatWenn ja: Bedenken, dass für die interne fortlaufende Nummerierung mit _002 begonnen werden muß, damit keine Kollisionen mit den jeweils neuen _001 entstehen.
Die fortlaufende Nummerierung ist kein Problem. Das wird von einem externen Programm (SpeedAddressPro) vorgenommen, das jeden Ordner bezüglich der Zahlen ausliest und immer hochzählt. Die Vorlage heißt immer *_00.odt und wird erstmals nach dem Beschreiben "_001.odt" benannt. Usw. Ich will das an dieser Stelle aber nicht unnötig verkomplizieren... Das Problem ist wohl offensichtlich der Start der DDE-Verknüpfung, das bei eindeutigem Fensternamen nicht auftritt (statt dem Class-Namen).
Weil ich die Änderung des Fenstertitels drin habe am Ende, sieht man jetzt genau, dass das Writer-Dokument öffnet, gleichzeitig - sonst unsichtbar - die DDE-Verknüpfung mit dem Calc-Dok hergestellt wird und hier passiert es nun gelegentlich:
Das Calc-Fenster taucht kurz auf, der neue Titel, der für das Writer *.odt bestimmt ist, wird in die Fensterzeile des Calc-Fensters (*.ods) geschrieben und ein leeres graues Calc(!) -"Dokument" friert am Bildschirm ein.
Ich habe gerade festgestellt, dass die Sache bei "normalen" *_001.odt" funktioniert. Das Dokument für das ich das geschrieben habe, lädt aber beim Dokumentöffnen eine interne DDE-Verknüpfung zu einer Calc-Datei (*.ods), die denselben Class-Namen hat (SALFRAME). Das müßte noch eindeutiger abgefragt werden ...
Hallo,
ich will bestimmte Dateien, die so benannt sind, beim Öffnen in den Vordergrund bringen: *_001.odt
Dabei soll die dreistellige Zahl von 001 bis 999 möglich sein. Die Titelzeile in OpenOffice Writer lautet dann so: "*_001.odt - OpenOffice.org Writer"
Wenn ich das mit einer konkreten Datei namens "_001.odt" machen will, dann funktioniert das:
[autoit]
$b = "_001.odt"
$i = "Vordergrund-Wächter aktiviert"
While 1 * sleep(100)
If WinExists($b) Then
WinSetState($b, "", @SW_MAXIMIZE)
WinSetOnTop($b, "", 0)
WinActivate($b, "")
WinSetTitle($b, "", $i)
EndIf
Wend
Meine Versuche, das zu abstrahieren gehen soweit:
[autoit]
$i = "Vordergrund-Wächter aktiviert - SAP_OO"
$t = "[CLASS:SALFRAME]"
; _001.odt - OpenOffice.org Writer
; Titelzeile von rechts: 32 Zeichen!
While 1 * sleep(100)
If WinExists ($t,"") Then
$tit = WinGetTitle($t)
$tit2 = StringRight($tit, 32)
; Unterstrich:
$tit3 = StringLeft($tit2, 1)
$tit4 = StringRight($tit, 28)
; .odt :
$tit5 = StringLeft($tit4, 4)
; 3 Zahlen:
$sid1 = StringRight($tit, 31)
$sid2 = StringLeft($sid1, 3)
;Prüfen, ob die 3 Stellen links vom Punkt Zahlen sind
$x = StringIsDigit($sid2)
If $x = 1 AND $tit3 = "_" AND $tit5 = ".odt" Then
WinSetState($tit, "", @SW_MAXIMIZE)
WinSetOnTop($tit, "", 0)
WinActivate($tit, "")
WinSetTitle($tit, "", $i)
Else
; $x = 0 also keine 3 Zahlen
EndIf
EndIf
Wend
Das macht das halbwegs. Nur muss erst nochmal ein anderes geöffnetes Dokument angeklickt werden. Es funktioniert also nicht, wie es soll...
Dank und Gruß im Voraus!
Thomas