Bau einen Schließen Button in deine Gui ein . Oder schließ das Prog mit x am oberen rechten Fensterrand oder in der Tray .
MfG Raupi
Bau einen Schließen Button in deine Gui ein . Oder schließ das Prog mit x am oberen rechten Fensterrand oder in der Tray .
MfG Raupi
ich versuche mir im prinzip ein automatisches berichtsheft anzulegen.
d.h ich habe alle tätigkeiten die ich am tag so mache vorgefertigt und
lasse sie dann nurnoch per mausclick schreiben.also ich hoffe es klappt so wie ich es vorhabe
edit: ich mache eine überbetriebliche ausbildung und kann
deswegen schon ungefähr sagen was ich alles in mein
berichtheft schreiben werde ;)( ist eh fast immer nur das gleiche)
Oh, da wäre ich zu faul für ein Script zu schreiben . Hab ne G15 Tastatur , da legt man einfach die Textbausteine auf eine der 18 Funktionstasten .
Aber mach nur weiter mit deinem Programmieren . Bin zu Autoit auch nur durch zufall gekommen . Und es macht vollends Spaß.
MfG Raupi
Alles anzeigen
@ Raupi,die erste Zeile muss nicht sein:
[autoit][/autoit]
;Global $Programm, $Execute
#include <GUIConstants.au3>
Global $Programm = "Notepad.exe";hier dein Programmname
Global $Execute = "C:\Windows\"&$Programm[autoit]
Diese Zeilen gleich zu einer exe compilieren und sofort startet Notepad und schreibt immer den Wunschtext.[/autoit]
Run("notepad.exe")
WinWaitActive("Unbenannt - Editor")
Send("Ist das nicht ein beispielhafter Text ?")
Viel Erfolg!
Bis eben wußte ich noch nicht mal das er den Notepad überhaupt vorhatte. Hab ich in meinem Beispiel gut geraten
Die 1. Zeile muß bei mir sein weil ich immer Opt("MustDeclareVars", 1) als 1. Zeile meiner Scripte stehen habe war ein Tipp von BugFix. Kopier des aber meistens nicht mit.
MfG Raupi
Shit mit den Zitataten hab ich so meine Probs
Weiß zwar nicht für was du des mit dem Notepad brauchst. Aber hier bitte:
Global $Programm, $Execute
#include <GUIConstants.au3>
$Programm = "Notepad.exe";hier dein Programmname
$Execute = "C:\Windows\"&$Programm
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 214, 144, 193, 125)
Global $Button2 = GUICtrlCreateButton("Hier den Pfad der Exe auswählen", 20, 16, 170, 17, 0)
Global $Button1 = GUICtrlCreateButton("Start Exe", 64, 104, 75, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $Button1
Run($Execute)
WinWaitActive("[CLASS:Notepad]")
ControlSend("[CLASS:Notepad]", "", "Edit1", "Dies ist ein Test und ist für nix gut."& @CR)
Case $Button2
$Execute = FileOpenDialog("Programm wählen ", "c:\", $Programm & " (*.exe)", 1 + 4)
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
MfG Raupi
1. Schreib den Pfad in eine Ini Datei. Kannst du in der Hilfe bei IniRead und IniWrite nachlesen gibt es auch gute Beispiele dafür.
2.Öhm weiß ich jetzt auch nicht so recht wie man an Notepad einen Text sendet.
Edit es ist irgendwie Blöd wenn du deinen Post ständig anpasst. Sieht blöde aus wenn ich auf nicht gestellte Fragen antworte.
MfG Raupi
Naja so geil auch wieder nicht. Mir wurde hier im Forum schon viel geholfen und geb halt nur was zurück .
Wenn dein Problem gelöst ist kannst du es ja in deiner 1. Post als gelöst makieren .
MfG Raupi
Probier mal das aus :
Global $Programm, $Execute
#include <GUIConstants.au3>
$Programm = "Notepad.exe";hier dein Programmname
$Execute = "C:\Windows\"&$Programm ;hier deine Pfadvorgabe & Programm
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 214, 144, 193, 125)
Global $Button1 = GUICtrlCreateButton("Hier den Pfad der Exe auswählen", 20, 16, 170, 17, 0)
Global $Button2 = GUICtrlCreateButton("Start Exe", 64, 104, 75, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $Button1
$Execute = FileOpenDialog("Programm wählen ", "c:\", $Programm & " (*.exe)", 1 + 4)
Case $Button2
Run($Execute)
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Edit hab des ganze noch geordnet
Gruß Raupi
Wenn du einen Spoiler mit autoitCode haben willst dann einfach Spoilerund dann Autoit-Quellcode anklicken den Code zwischen den beiden Autoit einfügen.
MfG Raupi
Kein Problem . Wenn des Thema erledigt ist setze in deiner 1. Mail des ganze auf gelöst .
MfG Raupi
Hm, wenn du des Script in Autoit schreiben willst schon. Du fragst ja auch net in einem Englischen Forum ob man dir hilft Französisch zu lernen .
Oder vielleicht doch ?
MfG Raupi
Nimm FileExist und FileOpen auch mit dem Makro @Scriptdir . Makros siehe meine letzte Post .
MfG Raupi
Edit dein Script sieht so bei mir aus und es funzt so wie es soll .
opt("traymenumode",1)
opt("trayoneventmode",1)
$beenden=traycreateitem("Beenden")
[/autoit] [autoit][/autoit] [autoit]if fileexists(@ScriptDir&"\running") then
msgbox(0,"Fehler","Das Programm wird bereits ausgeführt. Mehrere Instanzen sind nicht möglich.")
exit
else
trayitemsetonevent($beenden,"beenden")
$Test = fileopen(@ScriptDir&"\running",1)
fileClose($Test)
;run("server\apache\bin\httpd.exe","server\apache\bin")
;run("server\mysql\bin\mysqld-nt.exe","server\mysql\bin")
endif
while 1
sleep(1)
wend
func beenden() ;processclose("httpd.exe")
;processclose("mysqld-nt.exe")
FileDelete(@ScriptDir&"\running.*")
exit
endfunc
Besser ist es aber wenn du die Variablen Declarierst :
Opt("traymenumode", 1)
Opt("trayoneventmode", 1)
Opt("MustDeclarevars", 1)
Global $beenden = TrayCreateItem("Beenden")
If FileExists(@ScriptDir & "\running") Then
MsgBox(0, "Fehler", "Das Programm wird bereits ausgeführt. Mehrere Instanzen sind nicht möglich.")
Exit
Else
TrayItemSetOnEvent($beenden, "beenden")
Global $Test = FileOpen(@ScriptDir & "\running", 1)
FileClose($Test)
;run("server\apache\bin\httpd.exe","server\apache\bin")
;run("server\mysql\bin\mysqld-nt.exe","server\mysql\bin")
EndIf
While 1
Sleep(1)
WEnd
Func beenden() ;processclose("httpd.exe")
;processclose("mysqld-nt.exe")
FileDelete(@ScriptDir & "\running.*")
Exit
EndFunc ;==>beenden
MfG Raupi
Dein Script funzt mit FileDelete bei mir auch net . Ich habe mal das probiert und dann funzt es .
[autoit]FileRecycle(@ScriptDir&"\running")
[/autoit]
Alternativ funzt das :
FileDelete(@ScriptDir&"\running.*")
[/autoit]Irgendwie interpretiert Autoit es ohne die .* erweiterung falsch
Du kannst dir ja mal die Makroreverenz in der Hilfe reinziehen ... ist sehr interessant .
MfG Raupi
Versuch des mal so :
[autoit]filedelete(@ScriptDir&"\running")
fileopen(@ScriptDir&"\running",1)
if fileexists(@ScriptDir&"\running") then
MfG Raupi
Ich würde FileDelete und FileExist mit einem vollständigen Pfad aufrufen .
Füge die Functionen an das Ende des Scriptes .
MfG Raupi
Ich weiß zwar jetzt net genau wieso , aber wenn das Standard Tray menu aktiviert ist funzen die neuen Befehle nicht . Jedenfalls bei mir net .
Also :
Opt("TrayMenuMode",1);1 = kein Standard Menü
[/autoit]
MfG Raupi
Der Code :
[autoit]If FileExists("running") Then
MsgBox("0", "Fehler", "Das Programm wird bereits ausgeführt. Mehrere Instanzen sind nicht möglich.")
Else
FileOpen("running", "1") ;aufruf d. Func
EndIf
Prüft höchstens ob ein File existiert und nicht ob des File gerade ausgeführt wird .
MfG Raupi
Edit : War schneller als du des Erklärt hast .
Alles anzeigenHallo und herzlich Willkommen hier.
Natürlich muß die Funktion "Running" auch vorhanden sein.
Spoiler anzeigen
[autoit][/autoit] [autoit][/autoit] [autoit]
Opt("trayoneventmode", "1")$close = TrayCreateItem("Beenden");
[/autoit] [autoit][/autoit] [autoit]
TrayItemSetOnEvent($close, "beenden");If FileExists("running") Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
MsgBox("0", "Fehler", "Das Programm wird bereits ausgeführt. Mehrere Instanzen sind nicht möglich.")
Else
FileOpen("running", "1") ;aufruf d. Func
EndIfWhile 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(10)
WEndFunc beenden()
[/autoit] [autoit][/autoit] [autoit]
MsgBox("0", "Test", "Test")
EndFunc ;==>beendenFunc running() ;die Func
[/autoit]
MsgBox("0", "running-Test", "running")
EndFunc ;==>running
Viel Erfolg !
Damit wird aber der Befehl von beenden nicht mehr ausgeführt .
MfG Raupi
Probier es mal so :
opt("trayoneventmode","1")
Opt("TrayMenuMode",1)
$close=traycreateitem("Beenden");
trayitemsetonevent($close,"beenden");
if fileexists("running") then
msgbox("0","Fehler","Das Programm wird bereits ausgeführt. Mehrere Instanzen sind nicht möglich.")
else
fileopen("running","1")
endif
While 1
sleep(10)
WEnd
func beenden()
msgbox("0","Test","Test")
endfunc
MfG Raupi
Thx BugFix . Ich denke dann komme ich weiter .
MfG Raupi
Danke , deine Erklärung hat mir geholfen . Hab aber noch eine Frage .
Wenn ich folgendes mache :
ReDim $ar[1] ; nur noch ein Element
ReDim $ar[200] ; alte Größe wiederherstellen
Ist dann der Ursprüngliche Inhalt gelöscht und ich habe ein Array mit 200 Leerelementen ?
@progandy So in der Art habe ich des auch schon Gemacht . War aber nicht nur ein Befehlsaufruf
MfG Raupi