1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Leo.1906

Beiträge von Leo.1906

  • Kontextmenü verstecken

    • Leo.1906
    • 17. Juni 2016 um 12:35

    Lauffähig ist das ganze sowieso erst wenn man ArcMap installiert hat und ich glaube das das die wenigsten von euch haben.
    Aber ok, hier ist das ganze Script:

    AutoIt
    #include "UIAWrappers.au3"
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <GuiToolbar.au3>
    #include <MsgBoxConstants.au3>
    #include <GuiTreeView.au3>
    #include <File.au3>
    #include <ScreenCapture.au3>
    
    
    
    
    OnAutoItExitRegister ("_exit()")
    AutoItSetOption("WinTitleMatchMode", 2)
    
    
    Global $program_name = "test"
    $ParentTitle = "ArcMap"
    $hParentWindow = WinGetHandle($ParentTitle)
    GLOBAL $XTPToolBar = _WinAPI_GetClassName($hParentWindow)
    Global $random = Random(10000, 50000, 1)
    
    
    While Not WinExists($hParentWindow)
        Sleep(200)
    WEnd
    
    
    $fleft = 650
    $ftop = 5
    
    
    $winf7 = GUICreate("F7", 30, 30, $fleft, $ftop, $WS_POPUP)
    GUISetBkColor(0xff0000)
    $Btnf7 = GUICtrlCreateButton("F7", 1, 1, 28, 28)
    
    
    DllCall("user32.dll", "int", "SetParent", "hwnd", $winf7, "hwnd", $hParentWindow)
    GUISetState()
    
    
    ;~ AdlibRegister("redrawButton", 500)
    $first_time = 1
    
    
    While WinExists($hParentWindow)
        If GUIGetMsg() = $Btnf7 Then
    ;~ 		$img = _freeze()
    ;~ 		_first_Startup()
    		$pyHandle = _start_python()
    		_createPython("add_shp")
    		_exec("add_shp.py", $pyHandle)
    		_start_edit("poly")
    		Sleep(1000)
    ;~ 		WinSetState("Python", "", @SW_SHOW)
    
    
    ;~ 		Sleep(5000)
    ;~ 		_unfreeze($img)
    ;~ 		WinSetState("Python", "", @SW_SHOW)
    
    
    	EndIf
    
    
    WEnd
    
    
    
    
    WinKill($winf7)
    
    
    
    
    
    
    Func redrawButton()
    	_WinAPI_InvalidateRect($winf7)
    EndFunc
    
    
    Func _first_Startup()
    	If $first_time = 1 Then
    		$PyButton="Python"
    		$oPyButton=_UIA_getFirstObjectOfElement($UIA_oDesktop,"class:=" & $XTPToolBar, $treescope_children)
    		if isobj($oPyButton) Then
    			_UIA_DumpThemAll($oPyButton,$treescope_subtree)
    			$oButton=_UIA_getFirstObjectOfElement($oPyButton,"name:=" & $PyButton, $treescope_subtree)
    			$oInvokeP=_UIA_getpattern($oButton,$UIA_InvokePatternID)
    			$oInvokeP.Invoke
    			Sleep(400)
    			$first_time = 0
    			Run("kill.exe")
    		EndIf
    	EndIf
    EndFunc
    
    
    Func _start_python()
    	WinKill("Python")
    	$PyButton="Python"
    	$oPyButton=_UIA_getFirstObjectOfElement($UIA_oDesktop,"class:=" & $XTPToolBar, $treescope_children)
    	if isobj($oPyButton) Then
    		_UIA_DumpThemAll($oPyButton,$treescope_subtree)
    		$oButton=_UIA_getFirstObjectOfElement($oPyButton,"name:=" & $PyButton, $treescope_subtree)
    		$oInvokeP=_UIA_getpattern($oButton,$UIA_InvokePatternID)
    		$oInvokeP.Invoke
    		WinWaitActive("Python")
    		WinSetState("Python", "", @SW_HIDE)
    		$pyHandle = WinGetHandle("Python")
    		Return $pyHandle
    	EndIf
    EndFunc
    
    
    Func _send_simple($send, $handle)
    	WinActivate("Python")
    	ControlCommand($handle, "", "", "EditPaste", $send)
    	ControlSend($handle, "", "", @CR)
    	AutoItSetOption("WinDetectHiddenText", 1)
    	Return(WinGetText($handle))
    EndFunc
    
    
    Func _start_edit_old()
    	WinActivate($hParentWindow)
    	Send("{ALTDOWN}ee{ALTUP}")
    ;~ 	Sleep(100)
    	Send("{ENTER}")
    ;~ 	Sleep(100)
    	Send("{ENTER}")
    ;~ 	Sleep(100)
    	$t1 = WinGetHandle("Bearbeitung starten")
    	ControlSend($t1, "", "SysListView321", "temp")
    ;~ 	Sleep(100)
    	Send("{ENTER}")
    EndFunc
    
    
    Func _start_edit($shp_name)
    	Local $class = _getClasses($shp_name)
    	WinActivate($hParentWindow)
    	$t2 = ControlGetHandle($hParentWindow, "", $class)
    	$t3 = _GUICtrlTreeView_FindItem($t2, $shp_name)
    	WinActivate($t2)
    	_GUICtrlTreeView_SelectItem($t2, $t3)
    	Send("{APPSKEY}")
    	Send("{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{RIGHT}{ENTER}")
    EndFunc
    
    
    Func _getClasses($shp_name)
    	Local $count = 0
    	Local $SysTreeView = 0
    	$all = WinGetClassList($hParentWindow)
    	$str = StringSplit($all, @CRLF)
    	For $i = 0 To $str[0]
    		If $str[$i] = "SysTreeView32" Then
    			$count += 1
    		EndIf
    	Next
    	For $i = 1 To $count
    		$t1 = ControlGetHandle($hParentWindow, "", "SysTreeView32"&$i)
    		$t2= _GUICtrlTreeView_FindItem($t1, $shp_name)
    		If NOT @error Then $SysTreeView = "SysTreeView32"&$i
    	Next
    	Return $SysTreeView
    EndFunc
    
    
    Func _createGeoJSON($epsg)
    	$json = '{ '& @CRLF & _
    			'"type": "FeatureCollection",' & @CRLF & _
    			'"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::'&$epsg&'" } },' & @CRLF & _
    			'"features": [' & @CRLF & _
    			'{ "type": "Feature", "properties": { "Id": 0 }, "geometry": { "type": "Polygon", "coordinates": [] } }' & @CRLF & _
    			']' & @CRLF & _
    			'}'
    	If NOT FileExists(@ScriptDir&"\temp") Then
    		DirCreate(@ScriptDir&"\temp")
    	Else
    		$file = _FileCreate(@ScriptDir&"\temp\temp.geojson")
    		FileOpen($file)
    		FileWrite($file, $json)
    		FileClose($file)
    	EndIf
    EndFunc
    
    
    Func _createPython($save_name)
    	Switch $save_name
    		Case "add_shp"
    			$add_shp = 	'mxd = arcpy.mapping.MapDocument("CURRENT")'& @CRLF & _
    						'dataframe_string = mxd.activeView'& @CRLF & _
    						'dataframe = arcpy.mapping.ListDataFrames(mxd, dataframe_string)[0]'& @CRLF & _
    						'epsg = oldspatialref = dataframe.spatialReference'& @CRLF & _
    						'shp = arcpy.CreateFeatureclass_management(r'&"'"&'C:\Users\kursteilnehmer\Desktop\Neuer Ordner (2)\Shape'&"'"&', "'&$random&'.shp"'&', "POLYGON", spatial_reference=epsg)'
    			DirCreate(@TempDir&"\"&$program_name)
    			$file = _FileCreate (@TempDir&"\"&$program_name&"\add_shp.py")
    			FileOpen(@TempDir&"\"&$program_name&"\add_shp.py", 2)
    			FileWrite($file, $add_shp)
    			FileClose($file)
    	EndSwitch
    EndFunc
    
    
    Func _exec($exec, $handle)
    	_send_simple('execfile(r'&"'"&@TempDir&"\"&$program_name&"\"&$exec&"')", $handle)
    EndFunc
    
    
    Func _exit()
    	DirRemove(&@TempDir&"\"&$program_name, 1)
    EndFunc
    
    
    Func _freeze()
    	$img = @TempDir&"\"&$program_name&"\freeze.bmp"
    	WinActivate($hParentWindow)
    	$pos = WinGetPos($hParentWindow)
    	$border_top = _WinAPI_GetSystemMetrics($SM_CYCAPTION)
    	$border_side = _WinAPI_GetSystemMetrics($SM_CXFRAME)
    	$x1 = ($pos[0] + $border_side)
    	$y1 = ($pos[1] + $border_top + $border_side)
    	$x2 = ($pos[0] + $pos[2] - $border_side)
    	$y2 = ($pos[1] + $pos[3] - $border_side)
    	_ScreenCapture_SetBMPFormat(4)
    	_ScreenCapture_Capture($img, $x1, $y1, $x2, $y2, False)
    	GUICtrlSetState($Btnf7, $GUI_HIDE)
    	WinMove($winf7, "", 0, 0,($pos[2] - $border_side*2), ($pos[3] - $border_side*2 -$border_top))
    	$pic = GUICtrlCreatePic($img, 0, 0, ($pos[2] - $border_side*2), ($pos[3] - $border_side*2 -$border_top))
    	WinSetOnTop($winf7, "", 1)
    	Return $pic
    EndFunc
    
    
    Func _unfreeze($pic)
    	GUICtrlDelete($pic)
    	WinMove($winf7, "", $fleft, $ftop,30, 30)
    	GUICtrlSetState($Btnf7, $GUI_SHOW)
    EndFunc
    Alles anzeigen

    Edit:
    hier noch der Code der "Kill.exe"


    AutoIt
    #NoTrayIcon
    WinKill("Python")

    Edit2:
    ArcMap verwendet durchgehend eigene GUI-Objekte und nicht die von Windows gegebenen. Ich glaube also nicht das man das Contextmenü von ArcMap mit dem von Windows vergleichen kann, aber ich denke das, wenn man das Contextmenü von Windows verstecken könnte, dann könnte man mit der gleichen Methode auch das von ArcMap verstecken.
    Also ein einfaches Beispielscript wäre, ein GUI zu erstellen, welches Always on Top ist und dann einen Rechtsklick irgendwo hinter dem Fenster zu machen. Das Ergebnis ist, dass das Contextmenü über dem Always on Top Gui gezeigt wird ... :/

  • Kontextmenü verstecken

    • Leo.1906
    • 16. Juni 2016 um 09:28

    Ah sorry, das hier ist iwie bei mir bisschen eingeschlafen :D
    Ich bin momentan auch wieder bei nem anderen Projekt angekommen xD

    Das Programm das ich automatisieren möchte ist ESRIs ArcMap. Hier mal ein paar der Funktionen inklusive der "freeze" funktion, welche den Inhalt des GUIs "freezed" :D

    AutoIt
    Func _start_edit($shp_name)
    	Local $class = _getClasses($shp_name)
    	WinActivate($hParentWindow)
    	$t2 = ControlGetHandle($hParentWindow, "", $class)
    	$t3 = _GUICtrlTreeView_FindItem($t2, $shp_name)
    	WinActivate($t2)
    	_GUICtrlTreeView_SelectItem($t2, $t3)
    	Send("{APPSKEY}")
    	Send("{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{RIGHT}{ENTER}")
    EndFunc
    
    
    Func _getClasses($shp_name)
    	Local $count = 0
    	Local $SysTreeView = 0
    	$all = WinGetClassList($hParentWindow)
    	$str = StringSplit($all, @CRLF)
    	For $i = 0 To $str[0]
    		If $str[$i] = "SysTreeView32" Then
    			$count += 1
    		EndIf
    	Next
    	For $i = 1 To $count
    		$t1 = ControlGetHandle($hParentWindow, "", "SysTreeView32"&$i)
    		$t2= _GUICtrlTreeView_FindItem($t1, $shp_name)
    		If NOT @error Then $SysTreeView = "SysTreeView32"&$i
    	Next
    	Return $SysTreeView
    EndFunc
    Alles anzeigen

    Hier die freeze Funktio. Im vorangegangenen wird ein Child-Windows erstellt, welches normalerweise nur ein einzelner Button ist. Wenn freeze aktiviert wird, resized sich das Window auf die Größe des Inhaltes des Parent-GUIs, so das der Rahmen immer noch der des Originals ist :D
    Ich hoffe das ist verständlich erklärt :D

    AutoIt
    Func _freeze()
    	$img = @TempDir&"\"&$program_name&"\freeze.bmp"
    	WinActivate($hParentWindow)
    	$pos = WinGetPos($hParentWindow)
    	$border_top = _WinAPI_GetSystemMetrics($SM_CYCAPTION)
    	$border_side = _WinAPI_GetSystemMetrics($SM_CXFRAME)
    	$x1 = ($pos[0] + $border_side)
    	$y1 = ($pos[1] + $border_top + $border_side)
    	$x2 = ($pos[0] + $pos[2] - $border_side)
    	$y2 = ($pos[1] + $pos[3] - $border_side)
    	_ScreenCapture_SetBMPFormat(4)
    	_ScreenCapture_Capture($img, $x1, $y1, $x2, $y2, False)
    	GUICtrlSetState($Btnf7, $GUI_HIDE)
    	WinMove($winf7, "", 0, 0,($pos[2] - $border_side*2), ($pos[3] - $border_side*2 -$border_top))
    	$pic = GUICtrlCreatePic($img, 0, 0, ($pos[2] - $border_side*2), ($pos[3] - $border_side*2 -$border_top))
    	WinSetOnTop($winf7, "", 1)
    	Return $pic
    EndFunc
    
    
    Func _unfreeze($pic)
    	GUICtrlDelete($pic)
    	WinMove($winf7, "", $fleft, $ftop,30, 30)
    	GUICtrlSetState($Btnf7, $GUI_SHOW)
    EndFunc
    Alles anzeigen

    Über eine Lösung meines Problems würde ich mich auf jeden Fall freuen, aber wie gesagt bin ich momentan wieder an was anderem dran und weiß überhaupt nicht ob ich das hier noch zuende bringen werde :D
    Interessant ist das Problem dennoch ;)

    lg
    Leo.1906

  • Kontextmenü verstecken

    • Leo.1906
    • 9. Juni 2016 um 14:39

    Hallo Leute, ich brauche mal eure Hilfe ..
    Ich versuche ein Programm zu automatisieren, möchte aber nicht, dass das weiter auffällt .. Im Zuge der Automatisierung muss auch einmal das Kontextmenü (also rechtklick-menü) benutzt werden. Das sieht natürlich nicht so geil aus, wenn da auf einmal so ein menü aufpopt, auch wenn es nur sehr kurz zu sehen ist.

    Aufgerufen wird das Menü durch Send-Befehle: Send("{APPSKEY}") z.B. für den Rechtsklick. Es werden insgesamt keine Clicks benutzt.
    Um das zu verstecken habe ich versucht ein Gui darüber zu legen, welches immer im Vordergrund ist.

    Code
    $winf7 = GUICreate("Test", 500, 500, 0, 0, BitOr($WS_BORDER, $WS_POPUP), BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))


    Das funktioniert aber leider nicht, das Gui ist leider doch nicht so "TOPMOST" wie ich es gerbe hätte.

    Habe auch diese Flags hier getestet:

    Code
    WinSetOnTop($winf7, "", 1)


    und diese Funktion hier, die ich beim googlen gefunden habe:


    Code
    Func SetAlwaysOnTop($hWnd)
       _WinAPI_SetWindowPos($hWnd, $HWND_TOP+$HWND_TOPMOST, 0, 0, 0, 0, BitOr($SWP_NOMOVE, $SWP_NOSIZE))
    EndFunc

    Das funktioniert aber alles leider nicht ..
    Das Kontextmenü steht über allem :/

    Eine Idee habe ich noch, aber ich glaube das die nicht umsetzbar ist, bzw wenn dann nur sehr schwer. :S
    Ich würde den Mauszeiger an eine Stelle schieben, an der er nicht sichtbar ist. Denn an der Stelle des Zeigers erstellt sich das Kontextmenü automatisch, wenn es über {APPSKEY} aufgerufen wird.
    Am liebsten wäre es mir wenn man den Mauszeiger außerhalb des Fensters schieben könnte, aber das geht ja leider nicht weil dort nichts ist. Man bräuchte also eine Art virtuellen Desktop und an der Stelle wird das dann leider etwas zu krass für autoit denke ich mal ... :D


    Vielleicht fällt euch ja noch was schlaues ein, ich weiß nämlich nicht ob das überhaupt möglich wäre ..

    Vielen Dank!

    lg
    Leo.1906

  • IUIAutomation Problem mit handles

    • Leo.1906
    • 2. Juni 2016 um 14:21

    Ok .. ich habs doch selber rausgefunden .. war wesentlich einfacher als erst gedacht ... :S

    Hier ist die Lösung:

    Code
    _WinAPI_GetClassName($hwnd)


    $hwnd ist das Handle von dem Programm. Das bekommt man durch WinGetHandle()
    Also eig sehr einfach .. und man muss diese UDF garnicht benutzen :D

    Aber ich hab noch was anderes, was ich gerne wissen würde.
    Und zwar macht IUIAutomation immer eine rote Umrandung um die Elemente bei denen es gerade ist. Ich glaube nicht das man das wirklich braucht und würde das gerne entfernen. Ich kann das aber in den Scripten leider nicht wirklich finden (wo das gemacht wird). Könnt ihr mir da vlt bei helfen? :)

    lg
    Leo

  • IUIAutomation Problem mit handles

    • Leo.1906
    • 2. Juni 2016 um 13:37

    Hallo Leute,

    ich habe ein Problem .. Es ist das erste Mal das ich mit IUIAutomation arbeite und ich bin schon sehr froh es überhaupt ans laufen zu bekommen haben.
    Ich habe eine Funktion geschrieben, die mir in einem externen GUI eine Python-Console öffnet. Hier mal die Funktion:

    AutoIt
    Func _start_python()
        WinKill("Python")
        $XTPToolBar="Afx:00310000:b:00010003:00000006:010F01BB"
        $PyButton="Python"
        $oPyButton=_UIA_getFirstObjectOfElement($UIA_oDesktop,"class:=" & $XTPToolBar, $treescope_children)
    
    
        if isobj($oPyButton) Then
            _UIA_DumpThemAll($oPyButton,$treescope_subtree)
            $oButton=_UIA_getFirstObjectOfElement($oPyButton,"name:=" & $PyButton, $treescope_subtree)
            $oInvokeP=_UIA_getpattern($oButton,$UIA_InvokePatternID)
            $oInvokeP.Invoke
            WinWaitActive("Python")
            $pyHandle = WinGetHandle("Python")
            WinSetState("Python", "", @SW_HIDE)
            sleep(1000)
            Return $pyHandle
        EndIf
    EndFunc
    Alles anzeigen


    Das Problem das ich jetzt habe ist, dass sich die Handle: $XTPToolBar="Afx:00310000:b:00010003:00000006:010F01BB" bei jedem neustart des Programms ändert.
    Ich habe diese handle bis jetzt immer nur über Simple Spy rausgefunden und dann eingefügt. Ich will das aber natürlich automatisch haben. Allerdings steige ich nicht ganz durch das Programm Simple Spy durch und kann deswegen auch nicht nur einfach diese Parameter-Abfrage heraus extrahieren.
    Vielleicht könnt ihr mir ja dabei helfen :)

    Vielen Dank und leibe Grüße,
    Leo

  • TCP Server kann Anfragen nicht verarbeiten

    • Leo.1906
    • 28. Februar 2016 um 16:44

    Perfekt :)
    Danke autoBert, so klappts jetzt :)

    Das Thema ist damit erledigt :D

  • TCP Server kann Anfragen nicht verarbeiten

    • Leo.1906
    • 28. Februar 2016 um 14:49

    Hallo Leute,

    ich habe mal eine Frage an euch. Nachdem ich lange herumprobiert habe und auch viel gegoogelt und hier geguckt habe, komm ich leider alleine nicht mehr weiter ..

    Ich habe einen simplen TCP Server und Client. Die funktionieren auch soweit erstmal. Das Senden von Daten funktioniert auch, nur schaffe ich es nicht auf bestimmte gesendete Wörter zu reagieren.
    Hier mal der Quellcode:

    AutoIt
    Global $conned = False
    Global $ConnectedSocket = ""
    
    
    TCPStartUp()
    OnAutoItExitRegister("_resetConnection()")
    
    
    $MainSocket = TCPListen ("0.0.0.0", 8898, 5)
    
    
    If $MainSocket = -1 Then
        Exit
    EndIf
    
    
    _waitForConn()
    
    
    Func _waitForConn()
        While $conned = False
            $ConnectedSocket = TCPAccept ($MainSocket)
            If $ConnectedSocket >= 0 Then
                $conned = True
                _connected()
            EndIf
    		Sleep(200)
        WEnd
    EndFunc
    
    
    Func  _connected()
        While $conned = True
            $pack = TCPRecv ($ConnectedSocket, 2048)
            If $pack <> "" Then
    			Switch $pack
    				Case 'test'
    					TCPSend($ConnectedSocket, "läuft" & @CRLF)
    				Case "exit"
    					_resetConnection()
    			EndSwitch
    ;~ 			TCPSend($ConnectedSocket, $pack & @CRLF)
            EndIf
    		Sleep(200)
        WEnd
    EndFunc
    
    
    
    
    Func _resetConnection()
        TCPCloseSocket ($ConnectedSocket)
        $ConnectedSocket = -1
        $conned = False
        _waitForConn()
    EndFunc
    Alles anzeigen

    und hier der client:


    AutoIt
    TCPStartup()
    
    
    HotKeySet("{F5}", "SendData")
    
    
    Global $Sock = TCPConnect("127.0.0.1", 8898)
    
    
    While 1
        Local $sRecv = TCPRecv($Sock, 8192)
        If $sRecv = "" Then ContinueLoop
        MsgBox(4096, "Server Reply", $sRecv)
    WEnd
    
    
    Func SendData()
        Local $sData = InputBox("Send To Server", "Enter the string of data you wish to send to the server...")
        If $sData = "" Then Return
        TCPSend($Sock, $sData & @CRLF)
    EndFunc
    Alles anzeigen


    Wenn ich jetzt Daten sende, dann kommen die an (ich kann die zurück loopen und es kommt genau das wieder an was ich gesendet habe).
    Aber wenn ich jetzt einen Switch nach den gesendeten Wörtern mache, dann schafft er es nicht auf das Wort zu reagieren, obwohl es exakt so reinkommt wie ich es will .. Ich hoffe ihr versteht was ich meine :D
    (siehe Zeile 30)

    Da ich immer nur ein Wort bzw eine "Line" senden will, brauche ich die Daten die reinkommen nicht nach @crlf oder ähnlichem zu splitten ..

    Muss ich die empfangenen Daten noch irgendwie umformatieren oder so?

    Ich weiß echt nicht mehr weiter. Es wäre sehr nett wenn ihr mir da helfen könnten :)

    lg
    Leo.1906

  • mozrepl läuft nicht

    • Leo.1906
    • 21. Oktober 2015 um 14:12

    Oh nein wie dumm :D
    Ich hab nicht daran gedacht mir diese Reiter anzeigen zu lassen. Standartmäßig sind die ja nicht sichtbar :/
    Ich hab die ganze Zeit bei den installierten Addons gesucht ob man da irgendwo sagen kann, das es starten soll ... und hab da natürlich nichts gefunden.

    Jetzt läufts! Vielen Dank :D:)

  • mozrepl läuft nicht

    • Leo.1906
    • 21. Oktober 2015 um 09:44

    Das Addon ist aktiv. Einen Eintrag zum starten sehe ich nirgendwo.

  • mozrepl läuft nicht

    • Leo.1906
    • 20. Oktober 2015 um 23:27

    Hallo Leute,

    ich muss jetzt hier doch mal ne Frage stellen. Ich habe heute den ganzen Tag versucht die oben angepinnte FF.au3 zum laufen zu bekommen, leider ohne Erfolg ..
    Ich versteh nicht was ich falsch mache.

    Ich habe den neuesten Firefox heruntergeladen und die mozrepl extension dem Link im Thread folgend installiert. Die Extention ist auch aktiv, jedenfalls sagt FF das. Ist sie aber nicht ..
    Der Port 4242 wird nicht belegt. Mit telnet kommt man da auch nicht rauf.

    Ich hab dann mit haufenweise älteren FF versionen versucht zu experimentieren, aber das alles hat nicht geklappt. Ich verstehe einfach nicht wieso. In meinen Augen hab ich echt alles versucht. Die Suche hier hat mir auch nicht geholfen. Ich hoffe ich hab da jetzt keinen offensichtlichen Hinweis übersehen ..

    Mein OS ist Windows 10 Pro x64
    Autoit ist auf dem aktuellsten Stand.

    Wär echt nett wenn mir einer helfen könnte :)

    Vielen Dank :)

  • array negativ sortieren

    • Leo.1906
    • 16. März 2014 um 16:02

    OK, vielen dank für die vielen Antworten! Ihr habt mir echt geholfen :D
    das thema ist damit dann wohl erledigt :)
    Danke :)

  • array negativ sortieren

    • Leo.1906
    • 15. März 2014 um 13:44

    Vielen Dank für die Antworten! Das klappt alles wirklich gut :)
    Ich hab jetzt aber doch noch ne andere Frage .. Ich wollte das eigentlich so haben das ich zwei Listen vergleiche und die neuen Einträge übernehme. Und zwar nur die neuen. Dafür hab ich die beiden listen halt in einen array geladen. Aber jetzt seh ich das da ein Denkfehler drin ist. Denn er vergleicht die listen in beide richtungen. Also wenn in der alten Liste etwas drin ist das in der neuen nicht mehr vorhanden ist, dann wird das auch als "neu" mit aufgelistet, was ich aber eigentlich nicht möchte .. :D
    Versteht ihr was ich meine? Wie kann man sowas lösen? Mir fällt dazu jetzt spontan nichts ein ... :/

  • array negativ sortieren

    • Leo.1906
    • 15. März 2014 um 00:34

    Ich wusste nicht genau wie ich es nennen sollte. Ich glaube das könnte schon irgendwie treffen.
    Mein problem ist das ich eine große liste habe aus der ich alle Einträge die doppelt sind herauslöschen möchte, so das nur die übrig bleiben die einfach vorkommen.

    Beispiel:

    bla1
    bla1
    bla2
    bla3
    bla3

    In diesem Fall sollte in der fertigen liste NUR bla2 stehen.
    Ich habe versucht das so zu lösen:

    [autoit]

    #include <array.au3>
    #include <File.au3>

    [/autoit][autoit][/autoit][autoit]

    Dim $sFilePath = "check.txt"
    Dim $aContent
    Dim $newfile = "double.txt"

    [/autoit][autoit][/autoit][autoit]

    _FileReadToArray($sFilePath, $aContent)
    _ArraySort($aContent,0,1)
    Dim $aArrayTmp[1]

    [/autoit][autoit][/autoit][autoit]

    For $j = 1 To $aContent[0]-1
    If $aContent[$j] = $aContent[$j+1] Then
    Else
    _ArrayAdd($aArrayTmp, $aContent[$j])
    EndIf
    Next
    _FileWriteFromArray($newfile, $aArrayTmp)

    [/autoit]

    Ich verstehe nicht warum das nicht klappt ... am ende gibt er mir eine liste raus die halb so groß ist wie die alte. Und leider kann das nicht stimmen, da in der liste die ich durchgehen will nur ein paar Einträge einfach vorkommen.

    Eigentlich sollte das vom Prinzip her doch so gehen? Ich sortiere den array, dadurch stehen die doppelten Einträge alle untereinander. Also muss ich nur noch das obere mit dem unteren vergleichen und gut ists?


    Ich bitte um Hilfe hierbei. Ist warscheinlich ein ganz simpler fehler den ich nur gerade nicht sehe ..? :)

    lg
    Leo.1906

  • Arrays an verschiedenen stellen vergleichen

    • Leo.1906
    • 13. Februar 2014 um 18:54

    Das am Ende nochmal durch _ArrayUnique laufen zu lassen ist ne echt gute Idee :D
    Das wäre mein nächstes Problem geworden ^^

    Vielen Dank für die Hilfe, jetzt klappts bestens :)

  • Arrays an verschiedenen stellen vergleichen

    • Leo.1906
    • 13. Februar 2014 um 17:09

    Hi Leute .. ich hab hier und auch im englischen Forum schon viel gelesen, aber hab leider nichts gefunden was mit weiterhilft ..

    Ich wollte eigentlich nur in einer Datei die doppelten Einträge finden und NICHT löschen, sondern in eine neue Datei schreiben. Hier und auch sonst immer wollen die Leute die doppelten Einträge immer löschen und dazu gibts auch tausend simple Möglichkeiten. Naja wie auch immer, ich hab mir hier was gebastelt womit das theoretisch gehen sollte. Da ist aber angeblich nen Fehler drin den ich einfach nicht sehe ..
    Vlt könnt ihr mir ja helfen :)

    Code
    #include <array.au3>
    #Include <File.au3>
    
    
    Dim $sFilePath = "new.txt"
    Dim $aContent
    Dim $newfile = "double.txt"
    
    
    _FileReadToArray($sFilePath, $aContent)
    _ArraySort($aContent)
    $i = UBound($aContent,1)
    Dim $aArrayTmp[$i]
    
    
    For $j = 0 To $i
    	If $aContent[$j] = $aContent[$j+1] Then
    		_ArrayAdd($aArrayTmp, $aContent[$j])
    	EndIf
    		$j = $j+1
    Next
     _FileWriteFromArray($newfile, $aArrayTmp)
    Alles anzeigen

    Er meckert bei mir an dieser Stelle hier:
    If $aContent[$j] = $aContent[$j+1] Then
    Wo liegt der Fehler? Kann ich denn nicht einfach den Array an dieser Stelle mit der anderen vergleichen?

    Dadurch das der Array sortiert wird werden die doppelten Einträge alle untereinander geschrieben. Wenn ich also Stelle für Stelle mit der folgenden vergleiche müsste er ja die doppelten finden ..? Oder ist der Gedanke falsch? :D
    Oder habt ihr vlt sogar nen besseren Ansatz für mich? :)

    Ich würd mich über Hilfe echt freuen! Danke :D

    lg
    Leo.1906

  • Autoit Scripte decompilieren - verhindern

    • Leo.1906
    • 13. November 2008 um 14:33

    Ja, das stimm schon, nur müsste man diese Funktionen dann in einer anderen Sprache schreiben, was ich nicht kann.
    Denn mit Autoit kann man meines Wissens nach keine dll's erstellen, was irgendwie schade ist...

    Aber Obfuscator müsste erstmal reichen.. ;)

    mfg
    Leo.1906

  • Autoit Scripte decompilieren - verhindern

    • Leo.1906
    • 12. November 2008 um 22:05

    OK! Das Funktioniert! Die exe kann zwar immernoch zurückkompiliert werden, aber man kann damit nichts mehr anfangen!
    (zu unübersichtlich :D )
    Vielen Dank für diese Antwort!

    mfg
    Leo.1906

  • Autoit Scripte decompilieren - verhindern

    • Leo.1906
    • 12. November 2008 um 21:14
    Zitat

    Ich mein mit Themida geht das auch!

    Tolle Sache, wenn du mir jetzt auch noch sagst, welche Einstellungen ich da genau nehemen muss, damit das Funktioniert... ??
    Er Cryptet es zwar, aber dann ist die exe leider schrott und man kann sie nicht mehr ausführen... ;(

    hat sonst noch jemand ne Ahnung. Hab jetzt zig Programme durchprobiert und keins hat funktioniert ;(

    Bitte helft mir! ;)

    mfg
    Leo.1906

  • Autoit Scripte decompilieren - verhindern

    • Leo.1906
    • 3. November 2008 um 19:02

    Klappt leider immer noch nicht ;(
    Funktioniert dieses JodaCrypt überhaupt mit Autoit exen?

    Kennt einer noch andere Crypter?? (die auch funktionieren :D )

    Oder was mache ich falsch?
    Habe das UPX jetzt mal ausgestellt, geht aber immer noch nicht... ?(

    Hoffe, dass ihr hier mir weiterhelfen könnt :rolleyes:

    mfg
    Leo.1906

  • Autoit Scripte decompilieren - verhindern

    • Leo.1906
    • 2. November 2008 um 19:25

    Ja, aber ich hab mal nach Themida gegoogled, und hab auch was gefunden.. aber das war Shareware und ich habe nicht vor mir dieses Programm zu kaufen und illegal möchte ich auch nicht werden (mit nem Crack, oder ner Serial aus dem Netz).
    Deshalb habe ich bis jetzt nur dieses Yoda Crypt benutzt...

    mfg
    Leo.1906

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™