Na dann is ja prima
- Und wieder konnte einem armen Irren geholfen werden ![]()
Beiträge von BugFix
-
-
Da hadddu Recht.

Ist mir gar nicht aufgefallen. Dieses Bsp. beweist, dass es besser ist mit Option Explicit,
bzw. wie es in AutoIt heißt, mit Opt("MustDeclareVars", 1) zu arbeiten. -
Du erzeigst ja auch jedes mal ein neues Objekt.
[autoit]
Versuch mal, ob du eine Referenz auf das existierende Objekt erhalten kannst:$Referenz_Auf_Offene_Datei = ObjGet($Worddatei_Pfad, "Word.Application")
[/autoit] -
wenn ich WinGetText benutze gibt er mir die komplette console aus, ich brauche aber nur die letzte zeile davon ...
Na was erwartest du denn? Sollen dir die gebratenen Tauben in den Mund fliegen?

Etwas mußt du schon noch selbst erledigen, Zeilen kann man an ihrem Umbruch splitten. Dafür gibt es Makros (@LF, @CRLF).
Einfach mal etwas in der Hilfe lesen. -
Auf den ersten Blick würde ich vermuten, dass du die Schleife
[autoit]For $read_line = 1 to 18
[/autoit]nicht verläßt.
Laß dir doch mal die Werte der Abbruchbedingung in die Console ausgeben, dann siehst du ja ob und warum es hängt. -
Probier mal das:
Spoiler anzeigen
[autoit]Global $sourcePath = @ScriptDir
[/autoit]
Global $application = '\gepackt.exe'
Global $SuchOrdner = 'zu suchender Ordner'
Global $Daten = _GetFileList($StartPfad, "n",1) ; erzeugt Array mit allen Ordnernamen
Global $ret = _ArraySearch($Daten, $SuchOrdner,1,0,0,True) ; durchsucht nach Ordner
;~ If $ret > 0 Then MsgBox(0, '', $Daten[$ret]) ; gibt den kpl.Pfad zurück
If $ret > 0 Then
FileCopy($sourcePath & $application, $Daten[$ret] & $application, 1) ; EXE in gefundenen Ordner kopieren
Run($Daten[$ret] & $application)
Else
MsgBox(0, 'Fehler', 'Ordner nicht vorhanden')
EndIf -
Beruhigt mich ja, dass ich das nicht verstehen muß.

Machbar ist, dass du in deinem Skript eine Variable für eine Codezeile bereithältst, diese Codezeile einliest und dann im Skript per Execute dieser Code ausgeführt wird.
Aber ein Skript zur Laufzeit ergänzen kannst du knicken. Ist auch völlig sinnfrei.Übrigens: Wenn du meinst, dass wir nicht verstehen müssen, worum es geht, kannst du dir auch die Frage schenken. Denn ohne den Hintergrund eines Problems zu kennen, ist das wie Stochern im Nebel - es kommt nix bei raus.

-
Versteh ich nicht. Du willst ein Skript ausführen und dabei neuen Code in dieses Skript hineinschreiben?
:wacko: -
Das ist doch eine Funktion - was willst du da für ein Bsp?
[autoit]
Du übergibst einen String und bekommst einen Hash zurück.$MD5_Hash = md5($sMessage)
[/autoit] -
-
Wie macht man es, das er in das Verzeichnis springt und nicht die Msg-Ausgabe ausführt?Welches Programm soll denn in dieses Verzeichnis wechseln?
-
Guckst du hier:

Spoiler anzeigen
[autoit]#include <GuiListBox.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <File.au3>Global $aFile, $aFolder, $aPath[1] = [@HomeDrive & '\'], $currPath, $sUp = '[ EBENE HÖHER ]'
[/autoit] [autoit][/autoit] [autoit]
Global $Safed = '[SHOC]' ; mit diesen Attributen gesperrt für: Ausführen, Umbenennen, Löschen
Global $Application, $RunPath
Global $aZuordnung[2][2] = [ _
['ico|bmp|jpg', 'mspaint.exe '], _
['txt|ini|log', 'notepad.exe ']]; Leerzeichen hinter Dateinamen ist wichtig für Aufruf!
; Je nach Anwendung kann es notwendig sein, den kpl. Pfad anzugeben!!$GUI = GUICreate("Simple Explorer",400,300)
[/autoit] [autoit][/autoit] [autoit]
$label = GUICtrlCreateLabel('', 5, 5, 390, 53)
$List = GUICtrlCreateList( '', 2, 65, 396, 230, BitOR($WS_HSCROLL, $WS_VSCROLL, $WS_BORDER))
$hList = GUICtrlGetHandle($List)
$menu = GUICtrlCreateContextMenu($List)
$itemRun = GUICtrlCreateMenuItem('Ausführen', $menu)
$itemShape = GUICtrlCreateMenuItem('', $menu)
$itemCopy = GUICtrlCreateMenuItem('Kopieren', $menu)
$itemPaste = GUICtrlCreateMenuItem('Einfügen', $menu)
GUICtrlSetState(-1, $GUI_DISABLE)
$itemRen = GUICtrlCreateMenuItem('Umbenennen', $menu)
$itemShape = GUICtrlCreateMenuItem('', $menu)
$itemDel = GUICtrlCreateMenuItem('Löschen', $menu)
GUISetState(@SW_SHOW)GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
[/autoit] [autoit][/autoit] [autoit]_WriteList($aPath[0])
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $itemRun
_RunFile()
Case $itemCopy
_CopyFile()
Case $itemPaste
_PasteFile()
Case $itemRen
_RenFile()
Case $itemDel
_DelFile()
EndSwitch
WendFunc _WriteList($PATH)
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListBox_ResetContent($hList) ; alte Inhalte löschen
$aFolder = _FileListToArray($PATH, '*', 2)
$aFile = _FileListToArray($PATH, '*', 1)
If UBound($aPath) > 1 Then _GUICtrlListBox_AddString($hList, $sUp)
If IsArray($aFolder) Then
_GUICtrlListBox_AddString($hList, '--------------- ORDNER ---------------')
For $i = 1 To UBound($aFolder) -1
_GUICtrlListBox_AddString($hList, $aFolder[$i])
Next
EndIf
If IsArray($aFile) Then
_GUICtrlListBox_AddString($hList, '--------------- DATEIEN ---------------')
For $i = 1 To UBound($aFile) -1
_GUICtrlListBox_AddString($hList, $aFile[$i])
Next
EndIf
GUICtrlSetData($label, $PATH)
EndFuncFunc _ListDblClick()
[/autoit] [autoit][/autoit] [autoit]
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
Local $tmpPath = ''
If $str = $sUp Then
ReDim $aPath[UBound($aPath)-1]
$currPath = $aPath[UBound($aPath)-1]
_WriteList($currPath)
Else
$currPath = $aPath[UBound($aPath)-1] & $str & '\' ; neuer Pfad = letzter Pfad + geklickter Pfad
If Not StringRegExp(FileGetAttrib($currPath), 'D') Then ; ist es kein Ordner ?
_RunFile()
Else
ReDim $aPath[UBound($aPath)+1]
$aPath[UBound($aPath)-1] = $currPath ; neuen Pfad hinzufügen
_WriteList($currPath)
EndIf
EndIf
EndFuncFunc _RunFile()
[/autoit] [autoit][/autoit] [autoit]
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
$RunPath = $aPath[UBound($aPath)-1] & $str
$Application = _GetApplication($RunPath)
If $Application = -1 Then ; keine Anwendung hinterlegt
ShellExecuteWait($RunPath) ; mit Standardanwendung ausführen
Else
RunWait($Application & '"' & $RunPath & '"') ; Dateipfad muß in "" eingebettet sein!
EndIf
EndFuncFunc _GetApplication($PATH)
[/autoit] [autoit][/autoit] [autoit]
Local $SUFFIX = StringRight($PATH, StringLen($PATH)-StringInStr($PATH, '.', 1, -1))
For $i = 0 To UBound($aZuordnung) -1
If StringInStr($aZuordnung[$i][0], $SUFFIX) Then Return $aZuordnung[$i][1]
Next
Return -1 ; keine Anwendung hinterlegt
EndFuncFunc _CopyFile()
[/autoit] [autoit][/autoit] [autoit]
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If StringRegExp($attrib, 'D') Then Return MsgBox(0, 'Achtung', $str & ' ist keine Datei')
ClipPut($aPath[UBound($aPath)-1] & $str)
GUICtrlSetState($itemPaste, $GUI_ENABLE)
EndFuncFunc _PasteFile()
[/autoit] [autoit][/autoit] [autoit]
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If Not StringRegExp($attrib, 'D') Then Return MsgBox(0, 'Achtung', $str & ' - ist kein Ordner')
Local $tmp = ClipGet(), $pos = StringInStr($tmp, '\', -1)
Local $file = StringRight($tmp, StringLen($tmp)-$pos)
If FileExists($aPath[UBound($aPath)-1] & $str & '\' & $file) Then $file = 'Kopie von ' & $file
FileCopy($tmp, $aPath[UBound($aPath)-1] & $str & '\' & $file)
_WriteList($aPath[UBound($aPath)-1])
GUICtrlSetState($itemPaste, $GUI_DISABLE)
EndFuncFunc _RenFile()
[/autoit] [autoit][/autoit] [autoit]
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
Local $tmp = InputBox('Umbenennen', 'Neuer Name:' & @LF & @LF & $aPath[UBound($aPath)-1], $str)
If $tmp <> '' Then FileMove($aPath[UBound($aPath)-1] & $str, $aPath[UBound($aPath)-1] & $tmp)
_WriteList($aPath[UBound($aPath)-1])
EndFuncFunc _DelFile()
[/autoit] [autoit][/autoit] [autoit]
Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
If $str = '' Then Return
Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
FileDelete($aPath[UBound($aPath)-1] & $str)
_WriteList($aPath[UBound($aPath)-1])
EndFuncFunc WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit]
Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
If Not IsHWnd($hList) Then $hWndListBox = GUICtrlGetHandle($hList)
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
$iCode = BitShift($iwParam, 16) ; Hi Word
Switch $hWndFrom
Case $hList, $hWndListBox
Switch $iCode
Case $LBN_DBLCLK ; Sent when the user double-clicks a string in a list box
_ListDblClick()
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND -
Soweit ich weiss ist das Programm aber dafür da, das es den gesperrten Taskmanager wieder entsperrt ;).
Genau das ist der Sinn. Entstanden ist es aus der Tatsache, dass ein Trojaner diesen Schlüssel angelegt hatte, um zu verhindern dass man dessen Prozeß killen kann.

Hat ihm nicht geholfen, hab ihm trotzdem den Garaus gemacht.
Aber dabei kam mir der Gedanke, dass man das auch zur Skriptsicherung nutzen kann. -
Werden nicht auch bei DLL die Dateien mit 0 beginnend angesprochen?
-
Genau, meinte ich

Im Editor brauch ich nur sis dafür schreiben
, aber hierdrin muß ich jeden Befehl selbst tippen, da kann man schon mal was verwurschteln 
-
Warum liest du die Source aus, nimm doch den Text.
[autoit]$txt = _IEBodyReadText($oIE)
[/autoit]
If StringInString($txt, 'Suchbegriff') Then MsgBox(0, '', 'gefunden') -
Man kann es natürlich umständlich machen
- aber es gibt doch Funktionen, die dir die Links selektieren.Spoiler anzeigen
[autoit]#include <IE.au3>
[/autoit]
$PicPath = @ScriptDir & '\Secure.gif'
$url = 'http://www.sceneload.to/?p=Userupload'
$oIE = _IECreate($url,0,0)
$oLinks = _IEImgGetCollection($oIE)
For $Link In $oLinks
If StringInStr($Link.href, 'http://www.sceneload.to/secure/') Then
$SecureLink = $Link.href
ExitLoop
EndIf
Next
InetGet($SecureLink, $PicPath, 1)
_IEQuit($oIE)
MsgBox(0, '', 'Fertig')
Alerdings ist diese Website sehr mit Vorsicht zu genießen. Wer versteckte Links anbringt ("Ihr Browser verhindert einen schnellen Downlad. Zur Problembehebung klicken Sie bitte hier." ==> Link auf usenext), ist für mich alles andere als seriös. Ebenso Warez-Links etc.
Ich hoffe deine Programme laufen in einer Sandbox, wenn du dich da einwählst. Denn akuter Virenbefall ist vorprogrammiert. -
Ich hab im Web ein Skript gefunden, dass ich mal AutoIt-fähig gemacht habe.
Ziel des Skripts ist eine automatische Anmeldung und dafür die notwendigen Daten (u.a. die OU des Users) zu ermitteln.
Kann es selbst nicht testen, weiß also nicht ob es wirklich funktioniert.
Vielleicht bringt es dich weiter.Spoiler anzeigen
[autoit]; Create all necessary COM objects.
[/autoit] [autoit][/autoit] [autoit]
;--------------------------------------------------------------------------
$WSHShell = ObjCreate("WScript.Shell")
$AppShell = ObjCreate("Shell.Application")
$WSHNetwork = ObjCreate("WScript.Network")
$WSHfso = ObjCreate("Scripting.FileSystemObject")
$objADSysInfo = ObjCreate("ADSystemInfo")
$objFavoritesFolderRef = $AppShell.Namespace('FAVORITES')
$objFavoritesFolder = $objFavoritesFolderRef.Self
$objNetHoodFolderRef = $AppShell.Namespace('NETHOOD')
$objNetHoodFolder = $objNetHoodFolderRef.Self
$FavoritesDir = $objFavoritesFolder.Path
$NetHoodDir = $objNetHoodFolder.Path; find the domain name and login-parameters
[/autoit]
;--------------------------------------------------------------------------
$strComputer = $WSHNetwork.ComputerName
$objDomain = ObjGet("LDAP://rootDse")
$strConfigNC = $objDomain.Get("configurationNamingContext")
$SiteName = $objADSysInfo.SiteName
$objSite = ObjGet("LDAP://CN=" & $SiteName & ",CN=Sites," & $strConfigNC)
$SiteDesc = $objSite.Get("description")
$DomainString = $objDomain.Get("dnsHostName")
$WinDir = $WshShell.ExpandEnvironmentStrings("%WinDir%")
$clientname = $WshShell.ExpandEnvironmentStrings("%clientname%")
$UserString = $WSHNetwork.UserName
$AdsPath = $objDomain.ADsPath($UserString)
$adsUser = ObjGet($AdsPath)
$adsParent = ObjGet($adsUser.Parent)
$UserOU = $adsParent.Get("ou")
$UserObj = ObjGet("WinNT://" & $DomainString & "/" & $UserString)
$ADSCompPath = $objDomain.ADsPath($strComputer)
$CompObj = ObjGet($ADSCompPath) -
Gibt es dort auch die Möglichkeit zusagen mit welchem Programm eine Datei geöffnet werden soll?
Klar, du kannst ja die Dateiendung abfragen und in Abhängigkeit davon ein bestimmtes Programm aufrufen.
Hinterleg dir beim Start ein 2D-Array mit dem Aufbau:
[n][0] = Dateiendung(en)
[n][1] = zugehöriger ProgrammpfadHier mal ein Bsp. - kannst es ja dann einbauen.
Spoiler anzeigen
[autoit]Global $aZuordnung[2][2] = [ _
[/autoit] [autoit][/autoit] [autoit]
['ico|bmp|jpg', 'mspaint.exe '], _
['txt|ini|log', 'notepad.exe ']]; Leerzeichen hinter Dateinamen ist wichtig für Aufruf!$PicPath = "C:\Dokumente und Einstellungen\Standard\Eigene Dateien\Eigene Bilder\pda.ico"
[/autoit] [autoit][/autoit] [autoit]
$Application = _GetApplication($PicPath)
If $Application = -1 Then ; keine Anwendung hinterlegt
ShellExecuteWait($PicPath) ; mit Standardanwendung ausführen
Else
RunWait($Application & '"' & $PicPath & '"') ; Dateipfad muß in "" eingebettet sein!
EndIfFunc _GetApplication($PATH)
[/autoit]
Local $SUFFIX = StringRight($PATH, StringLen($PATH)-StringInStr($PATH, '.', 1, -1))
For $i = 0 To UBound($aZuordnung) -1
If StringInStr($aZuordnung[$i][0], $SUFFIX) Then Return $aZuordnung[$i][1]
Next
Return -1 ; keine Anwendung hinterlegt
EndFunc -
Dann ist die Funktion nicht erfolgreich, füge eine Fehlerauswertung ein:
Code$cp = GUIGetCursorInfo() If Not IsArray($cp) Then Exit MsgBox(0, '', 'Cursor-Info konnte nicht ermittelt werden) GUICtrlSetData ($mx,$cp[0]+3)
Mist, die AutoIt-Code-Darstellung funzt grad nicht.Edit:
Vielleicht drauf achten: "The mouse cursor position is successful only on an window created by a GUICreate. "
Oder einfach mal versuchen, das Handle mit zu übergeben: $cp = GUIGetCursorInfo($Handle-GUI)Edit2:
[autoit]
Verwende doch#Include <WinAPI.au3>
[/autoit]
$cp = _WinAPI_GetCursorInfo()Damit solltest du keine Probleme haben.