Nun es ist letztlich jedem selbst überlassen, ob er Fremddateien (exe) ausführt.
Nur ändert ein Zertifikat nichts an einer exe, sie kann trotzdem schadhaft sein (auch ungewollt).
Ich finde, in einem Skriptforum haben exe-Dateien nichts verloren. Insofern stellt sich mir die Frage nach einer Zertifizierung eh nicht.
Und einem Zertifikat traue ich auch nicht weiter, als ich ein Schwein werfen kann. ![]()
Beiträge von BugFix
-
-
Im Schlüssel
"HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\DRIVERS"
findest du die Aliases als Unterschlüssel im Klartext.
Zu jedem Unterschlüssel kannst du dann (sofern registriert) 'Langdriver' und 'Servername' auslesen.z.B. "INTRBASE"
Key: "HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\INTRBASE"
SubKey: "..\DB OPEN" und "INIT"
Die Informationen sind in einem/beiden der SubKeys enthalten.
Hier sind sie in: "..\DB OPEN"
LANGDRIVER = DBWINWE0
SERVER NAME = IB_SERVER:/PATH/DATABASE.GDBEdit:
So kannst du die IDAPI32.CFG in Klartext wandeln:
- noch etwas erweitert, nun werden zusammengehörige Daten etwas gruppiertNoch ein Edit:

Ich empfehle dir aber die Registry auszulesen, da die IDAPI32.CFG z.B. die Langdriver nicht angibt, obwohl das Feld dafür vorgesehen ist.Spoiler anzeigen
[autoit]$path = 'C:\GDILine\BDE\idapi32.cfg'
[/autoit] [autoit][/autoit] [autoit]
$fh = FileOpen($path, 16)
$read = StringTrimLeft(FileRead($fh), 2)
FileClose($fh)
$text = ''
For $i = 1 to StringLen($read)-2 Step 2
$tmp = Dec(StringMid($read, $i, 2))
Switch $tmp
Case 0
$tmp = 32
Case 1,2,3,4
ContinueLoop
EndSwitch
$text &= Chr($tmp)
Next
$ar_text = StringSplit($text, 'TYPE', 1)Local $a_BDE[UBound($ar_text)-2][2]
[/autoit]
For $i = 2 To UBound($ar_text) -1
$ar_text[$i] = StringReplace($ar_text[$i], ' ', '***', 1, 1)
$tmp = StringSplit($ar_text[$i], '***', 1)
$a_BDE[$i-2][0] = $tmp[1]
$a_BDE[$i-2][1] = $tmp[2]
$tmp = StringSplit($a_BDE[$i-2][1], ' ', 1)
If @error Then ContinueLoop
ConsoleWrite('==========' & $a_BDE[$i-2][0] & '==========' & @CRLF)
For $j = 1 To UBound($tmp) -1
ConsoleWrite($tmp[$j] & @CRLF)
Next
Next -
oder wirklich der erste der eine Datei erstellen will...
..eine leere Datei erstellen - was soll das für einen Sinn haben? ==> Keinen, und deshalb hats noch niemand getan.
[autoit]
Wenn die Datei nicht existiert, wird sie automatisch erstellt.$file = 'Pfad_der_Datei'
[/autoit]
$fh = FileOpen($file, 1) ; "When opening a file in write mode, the file will be created if it does not exist." -
Da die Ausdrücke im gesuchten Bereich konstante Längen haben, kannst du dir auch _StringBetween schenken und mit den schnelleren Stringfunktionen arbeiten:
[autoit]$s = "CN=S0myT001,OU=Servers,OU=_Global,OU=E0my,DC=test,DC=my,DC=net Terminal Server"
[/autoit]
$select = StringTrimLeft(StringLeft($s, 11), 3)
ConsoleWrite('$select = ' & $select & @crlf) -
@slin: Das Forum hier heißt Skripte und nicht Links zu Downloads.
Wenn du uns etwas zeigen willst, kannst du es hier auch posten. -
Mich wundert immer Welche Tollen Ideen du doch Hast.
Mich auch
Scherz beiseite, ich habe eine Projektliste, in der ich meine Ideen verewige. Und die wird immer länger. Solch kleine Sachen, wie das hier macht man ja mal nebenbei. Aber etwas komplexeres, wie z.B. meine ListviewFormat-UDF hat insgesamt etwa 1/2 Jahr Arbeit geschluckt.
Und der Tag hat leider nur 24 h.
-
Da man im Windows XP Home ja keine Gruppenrichtlinien hat um den Autostart der Laufwerke zu managen, habe ich mal ein kleines Tool dafür erstellt, das den entsprechenden Registryeintrag ausliest und neu setzt.
Standardmäßig wird auf Eintrag unter HKCU geprüft, falls dort nichts steht, wird HKLM verwendet.
Gerade für Wechseldatenträger (die meisten USB-Sticks werden als solche erkannt) und USB-Festplatten (werden als Festplatten erkannt) macht es Sinn den Autorun zu deaktivieren.
Steckt man z.B. eine 500 GB externe Platte an, die auch noch voll ist, kann man Kaffe trinken gehen, bis die vom Autorun eingelesen wurde.
Zum Anderen bietet die autorun.inf gerne Schädlingen Unterschlupf
(Möchte nicht wissen, wie oft Conficker sich allein durch Anstöpseln von USB-Sticks vermehrt hat.)Edit: Nicht vergessen - geänderte Einstellungen werden erst mit einem Neustart aktiv.

Edit 2: Ich bin grad total perplex. :wacko: Hab das an einem andren PC probiert - ohne Wirkung.
Kann jemand von euch Erfolg vermelden?Hier der kleine Helfer:
Spoiler anzeigen
[autoit]#cs
[/autoit] [autoit][/autoit] [autoit]
Bit Wert Bedeutung Standardwert7 128 reserviert und immer gesetzt 1
[/autoit] [autoit][/autoit] [autoit]
6 64 Autostart für RAM-DISK 0
5 32 Autostart für CD-ROM 0
4 16 Autostart für Netzwerklaufwerke 1
3 8 Autostart für feste Datenträger (Festplatte) 0
2 4 Autostart für wechselbare Datenträger (z.B. Diskettenlaufwerk) 1
1 2 Laufwerk ohne Root 0
0 1 Autostart für unbekannte Laufwerkstypen 1Hex-Wert: Standard 95
[/autoit] [autoit][/autoit] [autoit]
#ce#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)Global $aCB[7][2]
[/autoit] [autoit][/autoit] [autoit]
Global $RegKey = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer'
Global $Value = "NoDriveTypeAutoRun"
Global $CurrentSet = RegRead($RegKey, $Value)
If @error Then $RegKey = 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer'
$CurrentSet = RegRead($RegKey, $Value)
If @error Then $CurrentSet = 0x00000095$GUI = GUICreate("Autorun - Settings", 392, 252, 266, 134)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "GUIClose")
$Group1 = GUICtrlCreateGroup("", 15, 9, 360, 226)
$aCB[0][0] = GUICtrlCreateCheckbox("RAM-Disk", 45, 39, 80, 17)
$aCB[1][0] = GUICtrlCreateCheckbox("CD-ROM", 45, 66, 100, 17)
$aCB[2][0] = GUICtrlCreateCheckbox("Netzlaufwerke", 45, 93, 100, 17)
$aCB[3][0] = GUICtrlCreateCheckbox("Festplatte", 45, 120, 100, 17)
$aCB[4][0] = GUICtrlCreateCheckbox("Wechseldatenträger", 45, 147, 140, 17)
$aCB[5][0] = GUICtrlCreateCheckbox("Laufwerk ohne Root", 45, 174, 140, 17)
$aCB[6][0] = GUICtrlCreateCheckbox("Unbekannte Laufwerke", 45, 201, 140, 17)
$btSet = GUICtrlCreateButton("Neu Setzen", 240, 39, 110, 20, $WS_GROUP)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetOnEvent(-1, "btSetClick")
GUICtrlCreateGroup("", -99, -99, 1, 1)
For $i = 0 To 6
GUICtrlSetOnEvent($aCB[$i][0], "cbClick")
$aCB[$i][1] = 2^(6-$i)
Next
GUISetState(@SW_SHOW)_MarkCB()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc GUIClose()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc cbClick()
[/autoit] [autoit][/autoit] [autoit]
If BitAND(GUICtrlGetState($btSet), $GUI_DISABLE) Then GUICtrlSetState($btSet, $GUI_ENABLE)
EndFuncFunc btSetClick()
[/autoit] [autoit][/autoit] [autoit]
Local $val = 0
For $i = 0 To 6
If BitAND(GUICtrlRead($aCB[$i][0]), $GUI_CHECKED) Then
$val += $aCB[$i][1]
EndIf
Next
RegWrite($RegKey, $Value, 'REG_DWORD', '0x' & Hex($val+128, 8))
GUICtrlSetState($btSet, $GUI_DISABLE)
EndFuncFunc _MarkCB()
[/autoit]
For $i = 0 To 6
If BitAND($CurrentSet, $aCB[$i][1]) Then
GUICtrlSetState($aCB[$i][0], $GUI_CHECKED)
Else
GUICtrlSetState($aCB[$i][0], $GUI_UNCHECKED)
EndIf
Next
EndFunc -
Tweaky: Bitte keine MsgBoxen in eine WM_Funktion.
Das crasht gern. -
Ein laufender Prozess hat ein
eineindeutigesHandle und eine ebenso eineindeutige PID.
Je nach Funktion wird die PID oder das Handle benötigt.
Hier mal ein Bsp., wie du das Handle eines Prozesses erhalten kannst. (Die PID zu erhalten ist ja bekannt)Edit: Sehe grad, ich habe etwas daneben gelegen ;). Das Handle wird nur erstellt, wenn es angefordert wird und anschließend verworfen. Es ist also nicht geeignet zur Identifikation.
[autoit]Const $PROCESS_QUERY_INFORMATION = 0x400
[/autoit][autoit][/autoit][autoit]$PID = Run('calc.exe')
[/autoit][autoit][/autoit][autoit]
$hProcess = OpenProcess($PROCESS_QUERY_INFORMATION, False, $PID)
ConsoleWrite('$hProcess "calc.exe": ' & $hProcess & @CRLF)Func OpenProcess($dwDesiredAccess, $bInheritHandle, $dwProcessId)
[/autoit]
Local $ret = DllCall("kernel32", 'long', 'OpenProcess', 'long', $dwDesiredAccess, _
'long', $bInheritHandle, 'long', $dwProcessId)
Return $ret[0]
EndFunc -
Es gibt auch noch andere Möglichkeiten
Registry-Funktionen per Objekt -
[autoit]
If Not StringRegExp($input, '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b') Then _
[/autoit]
MsgBox(0, '', 'Das ist keine IP!') -
(meistens ja 1 und nicht 0)
Meine Arrays gehen bei 0 los.
Werd ich mal noch einbauen, kein Problem. -
[autoit]
Paßt alles in eine Zeile:MsgBox(0, 'Ergebnis', InputBox('Potenzrechnung', 'Basis') ^ InputBox('Potenzrechnung', 'Exponent'))
[/autoit]und das hier ist auch viel flexibler.

-
Hi,
ich hatte mal eine Stoppuhr gebastelt, da kannst du dir anschauen, wie es geht.
Der Code ist noch etwas verbugt (hatte nicht weitergemacht), aber das Prinzip wird deutlich.Spoiler anzeigen
[autoit]#include<EditConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include<GUIConstantsEx.au3>
Global $start, $UsedTime, $diff_Alt = 0
Global $SetTime = False, $Break = False, $Pause = False, $Run = True
Global $colBG = 0x0000FF, $colFont = 0xFFEA00$GUI = GUICreate('Stoppuhr', 400, 100, -1, -1)
[/autoit] [autoit][/autoit] [autoit]
$Time = GUICtrlCreateInput('00:00:00,000', 100, 20, 200, 20, BitOR($ES_CENTER,$ES_READONLY))
GUICtrlSetBkColor(-1, $colBG)
GUICtrlSetColor(-1, $colFont)
$bStart = GUICtrlCreateButton('Start', 40, 60, 80, 20)
$bBreak = GUICtrlCreateButton('Unterbrechen', 160, 60, 80, 20)
GUICtrlSetState(-1, $GUI_DISABLE)
$bPause = GUICtrlCreateButton('Pause', 280, 60, 80, 20)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()While True
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
If $SetTime Then $UsedTime = SetTime()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $bStart ; Start/Stop Messung absolut
$Run = Not $Run
If $Run Then
$SetTime = False
SetTime()
GUICtrlSetData($bStart, 'Start')
GUICtrlSetState($bBreak, $GUI_DISABLE)
GUICtrlSetState($bPause, $GUI_DISABLE)
Else
GUICtrlSetData($Time, '00:00:00,000')
$SetTime = True
$start = TimerInit()
GUICtrlSetData($bStart, 'Stop')
GUICtrlSetState($bBreak, $GUI_ENABLE)
GUICtrlSetState($bPause, $GUI_ENABLE)
EndIf
Case $bBreak ; nur Anzeige wird angehalten (z.B. Rundenmessung)
$Break = Not $Break
If $Break Then
$SetTime = False
GUICtrlSetData($bBreak, 'Fortsetzen')
GUICtrlSetState($bPause, $GUI_DISABLE)
Else
$SetTime = True
GUICtrlSetData($bBreak, 'Unterbrechen')
GUICtrlSetState($bPause, $GUI_ENABLE)
EndIf
Case $bPause ; Messung wird angehalten (Additionsmessung)
$Pause = Not $Pause
If $Pause Then
$diff_Alt = $UsedTime ; abgelaufene Zeit aufaddieren
$SetTime = False
GUICtrlSetData($bPause, 'Weiter')
GUICtrlSetState($bBreak, $GUI_DISABLE)
Else
$SetTime = True
$start = TimerInit() ; Zeitmessung neu initialisieren
GUICtrlSetData($bPause, 'Pause')
GUICtrlSetState($bBreak, $GUI_ENABLE)
EndIf
EndSwitch
WEndFunc SetTime()
[/autoit]
Local $diff = TimerDiff($start)/1000 + $diff_Alt
Local $hour = 0
Local $min = 0
Local $sec = Floor($diff)
Local $rest = ($diff-$sec)*1000
Local $secShow, $minShow, $hourShow
If $sec > 59 Then
$min = Floor($sec/60)
$secShow = Mod($sec, 60)
ElseIf $sec > 3599 Then ; ???? testen
$hourShow = Mod(Mod($sec,3600),60)
$minShow = Floor(Mod($sec,3600)/60)
$secShow = Floor($sec/3600)
Else
$secShow = $sec
$minShow = $min
$hourShow = $hour
EndIf
GUICtrlSetData($Time, StringFormat('%02u', $hourShow) & ':' & StringFormat('%02u', $minShow) & ':' & StringFormat('%02u', $secShow) & ',' & StringFormat('%03u', $rest))
Return $diff ; gibt abgelaufene Zeit als absolute Differenz zurück
EndFunc -
Da gibt es eine einfachere Lösung (statt $text halt "FileRead(deine_Datei)")
[autoit]#include <array.au3>
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
$text = _
'10/02/2009 02:00:00 2 ankauf 12 1 ' & @CRLF & _
'13/02/2009 08:00:00 2 verkauf 13 0 0' & @CRLF & @CRLF & _
'14/02/2009 05:00:00 5 ankauf 14 1 ' & @CRLF & _
'14/02/2009 10:00:00 5 verkauf 12 0 0' & @CRLF & @CRLF & _
'16/02/2009 06:00:00 6 ankauf 12 1 ' & @CRLF & _
'18/02/2009 12:00:00 6 verkauf 13 0 0' & @CRLF & @CRLF & _
'19/02/2009 07:00:00 7 ankauf 12 1 ' & @CRLF & _
'19/02/2009 08:00:00 8 verkauf 14 0 0'$pattern = '(\d{2}:\d{2}:\d{2})(?:\s+\d+\s+)(\w+)'
[/autoit][autoit][/autoit][autoit]
$ret = StringRegExp($text, $pattern, 3)
;~ _ArrayDisplay($ret)MsgBox(0, 'Letzte Zeile', $ret[UBound($ret)-2] & ' ' & $ret[UBound($ret)-1])
[/autoit]Falls die Leerbereiche evtl. Tabs enthalten, müßte das Pattern im RegEx angepaßt werden.
-
Und noch mal zum Sinn:
Somit kann man auch jedem Control ein Kontextmenü zuordnen (das geht nämlich standardmäßig nur bei wenigen) und das macht sehr viel Sinn.
Bsp.: Individuelle Gestaltung einer GUI durch den User
- Rechtsklick auf den Hintergrund: wird ihm Farbwechsel oder Hintergrundbild angeboten
- Rechtsklick auf Button: Farbwechsel oder Image
usw. -
Es gibt in AutoIt eine hervorragend dokumentierte Hilfe. Vielleicht solltest du dir mal die Mühe machen und in SciTE 'For' eintippen, mit dem Cursor draufgehen und F1 drücken. Dann kannst du alles nachlesen.
-
Du kannst eine Schleife verwenden:
[autoit]For $i = 1 To 5
[/autoit]
; dein Befehl
Next -
In Bezug auf Send?
z.B. sende 5 mal 's' : Send('{s 5}') -
[autoit]Send("$deinevariable")
Send($deinevariable)
[/autoit]