Ich denke auch, dass das eher nach Skripte gehört. [verschoben]
P.S.: Gut gemacht. ![]()
Ich denke auch, dass das eher nach Skripte gehört. [verschoben]
P.S.: Gut gemacht. ![]()
Ich habe die Posts wiederhergestellt.
SendXP: Bitte nicht Deine Posts löschen. Damit weiss man nicht mehr, worauf sich der Antwortende bezieht.
Hier die RegExp-Variante:
[autoit]
#include <Array.au3>
$sData = 'Unterschiedlicher Text1 den ich haben will Schlüsselwort1 Unterschiedlicher Text den ich nicht haben will' &@CRLF
$sData &= 'Unterschiedlicher Text2 den ich haben will Schlüsselwort1 Unterschiedlicher Text den ich nicht haben will Schlüsselwort2 Unterschiedlicher Text den ich nicht haben will' & @CRLF
$sData &= 'Unterschiedlicher Text3 den ich haben will Schlüsselwort2 Unterschiedlicher Text den ich nicht haben will' & @CRLF
$sData &= 'Unterschiedlicher Text4 den ich haben will' & @CRLF
$aData = StringRegExp($sData, '(?:\A|\v)(.+?)(?:Schlüsselwort1|Schlüsselwort2|\v)', 3)
_ArrayDisplay($aData)
Hier noch eine Variante im OnEventMode:
#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $iButtons = 10 ; Anzahl der Buttons
Global $aIDButtons[$iButtons], $IDContext, $IDStart, $IDEnd, $iDiv
$hGui = GUICreate("ContextMenu Example by Oscar", 400, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "_End")
$IDStart = GUICtrlCreateDummy()
For $i = 0 To $iButtons - 1
$aIDButtons[$i] = GUICtrlCreateButton($i + 1, 5 + $i * 40, 40, 30, 30)
GUICtrlSetOnEvent(-1, "_Button")
$IDContext = GUICtrlCreateContextMenu($aIDButtons[$i])
GUICtrlCreateMenuItem("Test-Item 1", $IDContext, 0)
GUICtrlSetOnEvent(-1, "_Context1")
GUICtrlCreateMenuItem("Test-Item 2", $IDContext, 1)
GUICtrlSetOnEvent(-1, "_Context2")
GUICtrlCreateMenuItem("Test-Item 3", $IDContext, 2)
GUICtrlSetOnEvent(-1, "_Context3")
Next
$IDEnd = GUICtrlCreateDummy()
$iDiv = ($IDEnd - $IDStart - 1) / $iButtons
GUISetState()
While Sleep(1000)
WEnd
Func _End()
Exit
EndFunc
Func _Button()
Local $iButton = (@GUI_CtrlId - $aIDButtons[0]) / $iDiv + 1
MsgBox(0, "Button", "ButtonClick" & @CR & "Button = " & $iButton)
EndFunc
Func _Context1()
Local $iButton = (@GUI_CtrlId - $aIDButtons[0] - 2) / $iDiv + 1
MsgBox(0, "Context1", "ContextClick 1" & @CR & "Button = " & $iButton)
EndFunc
Func _Context2()
Local $iButton = (@GUI_CtrlId - $aIDButtons[0] - 3) / $iDiv + 1
MsgBox(0, "Context2", "ContextClick 2" & @CR & "Button = " & $iButton)
EndFunc
Func _Context3()
Local $iButton = (@GUI_CtrlId - $aIDButtons[0] - 4) / $iDiv + 1
MsgBox(0, "Context3", "ContextClick 3" & @CR & "Button = " & $iButton)
EndFunc
AutoBert, da hast Du jetzt aber den Datensatz absichtlich verkürzt.
Eine csv-Datei enthält bei leeren Felder aber den jeweiligen Trenner (hier Kommata) und dann würde es funktionieren.
Ausgehend von dem Datensatz in Post#1 klappt das mit RegExp so:
[autoit]
#include <Array.au3>
$sData = FileRead(@ScriptDir & '\data.csv') & ',' ; Datei einlesen und ein Komma anhängen für den letzten Datensatz
$sData = StringReplace($sData, @CRLF, ',') ; alle Zeilenenden durch ein Komma ersetzen
$aData = StringRegExp($sData, '(".+?"|.*?),', 3)
_ArrayDisplay($aData)
Dann erhält man ein Array mit 40 Elementen (0-39). Jeweils 10 Elemente ergeben dann eine Zeile.
Bau mal das Script um auf den OnEventMode. Beim MessageLoopModus wird das Script langsamer, wenn man die Maus nicht bewegt bzw. nicht auf der Tastatur tippt.
Eventuell liegt es schon daran. 40 Hz halte ich nicht für so viel. Das sollte mit einem halbwegs aktuellem PC zu schaffen sein. Wieviel Zeit braucht denn Deine Auswertungs-/Anzeigefunktion? Hast Du mal gemessen?
Ich hatte mal eine Funktion zum generieren von Seriennummern geschrieben. Dabei werden keine doppelten Nummern generiert.
Und es wird außerdem eine Datei mit den MD5-Checksummen erzeugt, die man dann auf dem Zielcomputer zum vergleichen verwenden kann.
Hier die Funktion:
#include <Crypt.au3>
_GenSerials(1000, @ScriptDir & '\_Nummern.txt', @ScriptDir & '\_MD5Checksummen.txt')
;~ If @error Then MsgBox(0, 'Fehler aufgetreten!', 'Fehlernummer: ' & @error)
#cs
======================================================================================================================
Function Name: _GenSerials($iCount, $sSerialFile, $sMD5File)
Description: Seriennummern nach folgendem Muster "AAAA-BBBB-CCCC-DDDD-EEEE" generieren (keine Doppelten)
Parameter(s): $iCount = Anzahl der Seriennummern
$sSerialFile = Datei, in der die Seriennummern gespeichert werden
$sMD5File = Datei, in der die MD5-Hashwerte gespeichert werden
Author(s): Oscar (http://www.autoit.de)
======================================================================================================================
#ce
Func _GenSerials($iCount, $sSerialFile, $sMD5File)
If $iCount < 1 Or Not IsNumber($iCount) Then Return SetError(1, 0, 0)
Local $hFile1 = FileOpen($sSerialFile, 2)
Local $hFile2 = FileOpen($sMD5File, 2)
If $hFile1 <> -1 And $hFile2 <> -1 Then
Local $sSerialOut = '', $sMD5Out = ''
For $i = 1 To $iCount
ToolTip('Generiere Seriennummer: ' & $i, @DesktopWidth/2-100, 0)
Do
Local $sTmp = ''
For $j = 1 To 20
$sTmp &= StringMid('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', Random(1, 36, 1), 1)
If $j/4 = Int($j/4) And $j < 20 Then $sTmp &= '-'
Next
Until Not StringInStr($sSerialOut, $sTmp)
$sSerialOut &= $sTmp & @CRLF
$sMD5Out &= _Crypt_HashData($sTmp, $CALG_MD5) & @CRLF
Next
FileWrite($hFile1, StringTrimRight($sSerialOut, 2))
FileClose($hFile1)
FileWrite($hFile2, StringTrimRight($sMD5Out, 2))
FileClose($hFile2)
Return 1
Else
Return SetError(2, 0, 0)
EndIf
EndFunc
Hier eine Variante ohne RegExp:
[autoit]
$ID = "W442525"
If Not StringInStr("WHSZMKFCE", StringLeft($ID, 1)) Then
MsgBox(0, "D.3-ID Agent", "Es handelt sich um keine gültige Identnummer.")
$Fehler = 1
EndIf
Die UDF ist klasse!
Funktioniert auch im OnEventMode (gerade getestet). Super gemacht! Kann ich bestimmt mal gebrauchen.
ZitatConnecting to port 49450
Das solltest Du in Deinem Script auch mal eintragen, wenn auf dem Server nicht der Standard-FTP-Port (21) benutzt wird.
Was sollen die zusätzlichen Anführungszeichen bei FileGetVersion?
Lass die weg und es funktioniert:
Func _JREGetVersion()
Local $ver1 = FileGetVersion("javaw.exe")
Local $ver2 = FileGetVersion(@ProgramFilesDir & "\java\jre6\bin\javaw.exe")
MsgBox(0, "Pfad zu $ver2:",'"' & @ProgramFilesDir & "\java\jre6\bin\javaw.exe" & '"')
MsgBox(0," Version 1", $ver1)
MsgBox(0," Version 2", $ver2)
EndFunc ;==>_JREGetVersion
Auch von mir alles Gute zum Geburtstag!
Eine schöne Feier und viele Geschenke. ![]()
[verschoben nach Hilfe & Unterstützung]
Wo kann man eig AutoIT lehrling werden und was macht man da? Ich wusste gar nicht, dass das geht.
![]()
Mit Hilfe der Timer-UDF kann man auch den normalen FileSaveDialog benutzen, um Fehleingaben rauszufiltern:
#include <Timers.au3>
Global $hGUI = GUICreate("Test", 600, 400)
Global $sTitle = "Bitte Datei zum speichern wählen..."
[/autoit] [autoit][/autoit] [autoit]_Timer_SetTimer($hGUI, 100, "_CheckInput")
Global $sFilename = FileSaveDialog($sTitle, @MyDocumentsDir, "Scripts (*.aut;*.au3)", 2)
_Timer_KillAllTimers($hGUI)
Exit
Func _CheckInput($hWnd, $Msg, $iIDTimer, $dwTime)
#forceref $hWnd, $Msg, $iIDTimer, $dwTime
Local $sPattern = "[^a-zA-Z 0-9]" ; <- das sind die erlaubten Zeichen, alle anderen werden entfernt
Local $sInput = ControlGetText($sTitle, "", "[CLASS:Edit; INSTANCE:1]")
If StringRegExp($sInput, $sPattern) Then
_PlayDefaultSystemSound("SystemHand")
$sInput = StringRegExpReplace($sInput, $sPattern, "")
ControlSetText($sTitle, "", "[CLASS:Edit; INSTANCE:1]", $sInput, 1)
ControlSend($sTitle, "", "[CLASS:Edit; INSTANCE:1]", "{END}")
EndIf
EndFunc
; #FUNCTION# ====================================================================================================================
; Name...........: _PlayDefaultSystemSound()
; Description ...: Spielt einen Systemklang, welcher in der Registry definiert ist.
; Syntax.........: _PlayDefaultSystemSound($sSoundName, $iWait = 0)
; Parameters ....: $sSoundName - Name des SystemSound's
; | Default - Standardton Warnsignal / Default Beep
; | CriticalBatteryAlarm - Alarm bei kritischem Batteriestand / when battery is critical
; | DeviceConnect - Geräteanschluß / when a device is connect
; | DeviceDisconnect - Gerätetrennung / when a device is disconnect
; | DeviceFail - Geräteanschluß fehlgeschlagen / when a deviceconnect is fail
; | LowBatteryAlarm - Alarm bei niedrigem Batteriestand / when battery is low
; | MailBeep - Posteingangsbenachrichtigung / when email is received
; | SystemAsterisk - Stern / Asterisk
; | SystemExclamation - Hinweis / when windows shows a warning
; | SystemExit - Windows beenden / when Windows shuts down
; | SystemHand - Kritischer Abbruch / when a critical stop occurs
; | SystemNotification - Sprechblase / when a critical stop occurs
; | SystemStart - Windows starten / when Windows starts up
; | WindowsLogoff - beim Windows abmelden / when logging off Windows
; | WindowsLogon - beim Windows anmelden / when logging on Windows
; | EmptyRecycleBin - Löschen des Papierkorbs / when recycle bin is emptied
; | Navigating - Browser Klick / navigating in browser
; $iWait - Warten bis SoundPlay beendet? (0 = nein / 1 = ja)
; Return values .: -----
; Author ........: funkey (AutoIt.de)
; ===============================================================================================================================
Func _PlayDefaultSystemSound($sSoundName, $iWait = 0) ; funkey
Local $sKey = 'HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default'
If $sSoundName = 'EmptyRecycleBin' Or $sSoundName = 'Navigating' Then $sKey = 'HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Explorer'
Local $sFile = StringReplace(RegRead($sKey &'\' & $sSoundName & '\.Default', ''), '%SystemRoot%', @WindowsDir)
If $sFile = "" Then
SoundPlay(StringReplace(RegRead($sKey &'\.Default\.Default', ''), '%SystemRoot%', @WindowsDir), $iWait)
Else
SoundPlay($sFile, $iWait)
EndIf
EndFunc ;==>_PlaySystemSound
P.S.: Hier mal wieder mit der Verwendung Deiner "_PlayDefaultSystemSound"-Funktion, funkey. Danke dafür! Die habe ich schon öfter benutzt. ![]()
Oder so:
[autoit]
$string = '<marker id="7" type="cylinder" color="#FF000099" size="4" interior="0" dimension="0" posX="-2861.3000488281" posY="-905.09997558594" posZ="8.1999998092651" rotX="0" rotY="0" rotZ="0"></marker>' & @CRLF & '<marker id="7" type="cylinder" color="#FF000099" size="4" interior="0" dimension="0" posX="-2861.3000488281" posY="-905.09997558594" posZ="8.1999998092651" rotX="0" rotY="0" rotZ="0"></marker>' & @CRLF & '<marker id="7" type="cylinder" color="#FF000099" size="4" interior="0" dimension="0" posX="-2861.3000488281" posY="-905.09997558594" posZ="8.1999998092651" rotX="0" rotY="0" rotZ="0"></marker>' & @CRLF
$out = StringRegExpReplace($string, '<marker.+posX="(.+?)" posY="(.+?)" posZ="(.+?)".+</marker>', '$1, $2, $3')
ConsoleWrite($out & @CR)
Ich schliesse mich dem mal an: Alles Gute zum Geburtstag, Alina!
Feier schön und lass Dich beschenken!
Laut Nutzungsbedingungen der Seite ist das nicht erlaubt:
Zitat5. Die Inhalte der Web-Site sind urheberrechtlich geschützt. Nur die zur Weiterverwendung ausdrücklich freigegebenen Inhalte dürfen von der Web-Site durch die Nutzer, soweit die Freigabe auch ihnen gegenüber erfolgt ist, heruntergeladen und vervielfältigt werden. Hierbei dürfen die Inhalte nicht verändert oder verfälscht werden. Die Erstellung einer angemessenen Anzahl von Kopien auf elektronischen Datenträgern oder im Printverfahren ist zulässig, soweit diese Kopien ausschließlich zum persönlichen Gebrauch erstellt und genutzt werden. Die ABDA - Bundesvereinigung Deutscher Apothekerverbände ist als Quelle ausdrücklich zu nennen. Jede weitergehende Nutzung der Inhalte der Web-Site ist urheberrechtswidrig.
Somit: [closed]
Wirklich ein nützliches Script. Das Eintragen in den Autostart wird unter Windows 7 (und Vista ?) mit aktivierter UAC jedoch nicht gehen; das Setzen erstellen einer Verknüpfung im Autostartordner erfordert dort nämlich Adminrechte.
Ich besitze Windows 7 (mit aktiviertem UAC) und bei mir funktioniert das problemlos (ohne Adminrechte).
Ist das von Dir also nur eine Vermutung oder klappt das bei Dir nicht?
Und dann hab' ich noch eine Frage: Funktioniert das Script auch, wenn ich etwas über das Netzwerk drucke? Also PC 1 steht beim Drucker und ist mit dem Drucker per USB Kabel verbunden. Der an PC 1 angeschlossene Drucker ist im Netzwerk freigegeben. PC 2 steht irgendwo anderst in der Wohnung. Um von PC 2 aus zu drucken, muss PC 1 und der Drucker angeschaltet sein. Dann kann man mit PC 2 auf den freigegebenen Drucker zugreifen und eben drucken. Registriert das auf PC 1 laufende Script dann den Druckauftrag von PC 2?
Ich habe das gerade mal bei mir getestet.
Ja, das funktioniert! Zumindest unter Windows 7.