Wenn Interesse besteht wäre ich auch gerne bereit, mit meinem Wissen mitzuhelfen, damit alle lernen können. Sei es mit Scripten, Erklärungen,... ich bin für alles offen
Das meiste beherrsche ich in Autoit mitlerweile, nur RegExp bin ich noch nicht sehr gut (aber dabei) und DLLs, Structs, ... hab ich auch noch nicht so viel genutzt.
Beiträge von Kanashius
-
-
du musst bei dem Befehl das workingdir ändern. momentan übergibst du dort @Script_DIr. CMD geht immer von dem Verzeichnis aus, in dem es Arbeitet.
Für Autoit hilft guck mal in die Kategorie:
Function Reference->File, Directory and Disk Management
User Defined Functions Reference->File Management
Da sind alle wichtigen Befehle. Ansonsten noch die ExProperty UDF suchen (internet), damit kann man die Dateiinfos auslesen.
Ich werd später am Abend mal zusammensuchen.
was für Infos brauchst du eigentlich, bzw. sollen rausgeschrieben werden bei der txt (bei der html konnt ichs sehen, bei der anderen wars auch ziemlich viel unsinniges, vermute ich mal) -
Hab mal alles so geändert, dass es funktioniert (außer die Animation).
Du solltest aber die Funktionen von Autoit besser nutzen. Die ganzen Comspec sachen brauchst du eigentlich nicht, geht alles mit Autoit. Allgemein ist ziemlich viel unsinniger kram in deinem Script. (Hab grad nur nicht so viel Zeit). Guck dir mal _Filelisttoarray() an Die Autoithilfe solltest du allgemein mal durchblättern.AutoIt
Alles anzeigen#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=..\ICON\Icon\logo_gruen.ico #AutoIt3Wrapper_Outfile=Indexx.exe #AutoIt3Wrapper_Compression=3 #AutoIt3Wrapper_UseUpx=y #AutoIt3Wrapper_Res_Comment=Freeware #AutoIt3Wrapper_Res_Description=Diese Software erstellt für Sie eine Index.html und index.txt-Datei im Ausführungsverzeichnis #AutoIt3Wrapper_Res_Fileversion=1.1.2.167 #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y #AutoIt3Wrapper_Res_LegalCopyright=Top-PE.de 2015 #AutoIt3Wrapper_Res_Language=1031 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;~ https://www.virustotal.com/de/file/1f19fdb90488145b5d228e7cba2368860efa816a6ca8e65a17d0f26bbf3462ec/analysis/1438887633/ ;;;;;;;;;;;;;;;;;;;;;;;; ;; Indexx: ;; ;; Jürgen Hägele 2015 ;; ;; Top-PE.de ;; ;;;;;;;;;;;;;;;;;;;;;;;; ;AutoIt v3.3.9.21 or higher needed! #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <GuiStatusBar.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> #include <StaticConstants.au3> #include <ButtonConstants.au3> #Region ### START Koda GUI section ### Form=d:\!meine software\!indexx\form1.kxf $Form1_1 = GUICreate("Indexx", 525, 155, 443, 139) $Input1 = GUICtrlCreateInput("Kein Ordner-Pfad angegeben!", 120, 48, 369, 21) $button1 = GUICtrlCreateButton("Ordner wählen", 16, 48, 80, 21, $BS_ICON) ;~ GUICtrlSetImage(-1, "shell32.dll", 4) $Label1 = GUICtrlCreateLabel("Bitte Verzeichnis-Pfad zur Index-Dateierstellung auswählen:", 18, 18, 322, 17) $Button2 = GUICtrlCreateButton("Index.txt erstellen", 16, 88, 105, 33) $Button3 = GUICtrlCreateButton("Index.html erstellen", 261, 88, 105, 33) $Button4 = GUICtrlCreateButton("Index.txt öffnen", 139, 88, 105, 33) $Button5 = GUICtrlCreateButton("Index.html öffnen", 386, 88, 105, 33) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### ;=================================================================== ;Code für die Animation von UEZ ;=================================================================== AutoItSetOption("TrayMenuMode", 11) ;~ _GDIPlus_Startup() ;~ Global Const $STM_SETIMAGE = 0x0172; $IMAGE_BITMAP = 0 ;~ Global $iW = 400, $iH = 250 ;~ Global Const $hGUI = GUICreate("Loading Spinner", $iW, $iH, -1, -1, $WS_POPUP, $WS_EX_TOPMOST) ;~ Global Const $iPic = GUICtrlCreatePic("", 0, 0, $iW, $iH) ;~ GUICtrlSetState(-1, $GUI_DISABLE) ;~ GUISetState() ;~ Global $hHBmp_BG, $hB, $iPerc = 0, $iSleep = 30, $s = 0, $t, $m = 0 ;~ GUIRegisterMsg($WM_TIMER, "PlayAnim") ;~ DllCall("user32.dll", "int", "SetTimer", "hwnd", $hGUI, "int", 0, "int", $iSleep, "int", 0) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $button1 pfad() Case $Button2 ;~ StartAnim() _indextxt() Sleep(200) ;~ StopAnim() Case $Button4 ;~ StartAnim() _opentxt() Sleep(200) ;~ StopAnim() Case $Button3 ;~ StartAnim() _indexhtml() Sleep(200) ;~ StopAnim() Case $Button5 ;~ StartAnim() _openhtml() Sleep(200) EndSwitch WEnd ;=================================================================== ;~ Code für Index.html von Michael Ramb. Abgeändert. ;=================================================================== Func _indexhtml() ; Check ob Suche erfolgreich war $search = FileFindFirstFile("*.*") ;$file = FileFindNextFile($search) $filew = FileOpen(GUICtrlRead($Input1)&"\"&"index.html", 1+2+8) If $search = -1 Then MsgBox(0, "Fehler", "Keine Dateien gefunden") Exit EndIf FileDelete("index.html") If $filew = -1 Then MsgBox(0, "Fehler", "Kann Datei nicht öffnen.") Exit EndIf ;=================================================================== ;~ Kopfzeile und Tabelle der index.html füllen ;=================================================================== FileWriteLine($filew, "<style><center><!--body{ font-family: Times; font-size: 16px }--><!--tr{ font-family: Times; font-size: 16px }--></center></style>" & @CRLF) FileWriteLine($filew, "<center><b>Verzeichnis- und Dateiliste</b><br><br></center>" & @CRLF) FileWriteLine($filew, "<center><table width=500 border=1></center>" & @CRLF) FileWriteLine($filew, "<center><tr><td><b>Nr.</b></td><td><b>Verzeichnis- oder Dateiname</b></td><td><b>Dateigrösse (KB)</td></tr></b></center>" & @CRLF) $i = 0 $F = 1 While 1 $file = FileFindNextFile($search) If @error Then ExitLoop If $file = "index.html" Or $file = "egal.html" Then Else FileWriteLine($filew, "<tr>" & @CRLF) $size = FileGetSize($file) / 1000 FileWriteLine($filew, "<td align=center>" & $F & "</td><td><a href=" & $file & ">" & $file & "</a></td><td>" & $size & " KB<br></td></tr>") $i = $i + 1 $F = $F + 1 EndIf WEnd ;=================================================================== ;~ Fußeile der index.html füllen ;=================================================================== FileWriteLine($filew, "</table> <p><font size=3 face=Times> • © 2015 Top-PE.de • </p>" & @CRLF) FileWriteLine($filew, "</table> <p><font size=3 face=Times> • Diese Datei und Verzeichnisliste wurde von <b><a href=http://top-pe.de>Indexx</a></b> erstellt • </p>" & @CRLF) FileClose($search) FileClose($filew) Sleep(200) ;Exit EndFunc ;==>_indexhtml ;=================================================================== ; Warten. ; Sleep(200) ;=================================================================== Func _indextxt() $sPath = GUICtrlRead($Input1) If Not FileExists($sPath) Then MsgBox(270400, "Kein Ordner-Pfad angegeben!", GUICtrlRead($Input1)) Exit EndIf RunWait(@ComSpec & ' /c ' & 'dir /n /os /4 /s > index_.txt' & '"', "", @ScriptDir, @SW_HIDE) ;Sleep(200) RunWait(@ComSpec & ' /c ' & 'cmd /U /C TYPE index_.txt > index.txt' & '"', "", @ScriptDir, @SW_HIDE) ;Sleep(200) RunWait(@ComSpec & ' /c ' & 'del index_.txt' & '"', "", @ScriptDir, @SW_HIDE) ;Sleep(200) FileMove(@ScriptDir & "\" & "index.txt", $sPath & "\" & "index.txt", 1 + 8) ;Exit EndFunc ;==>_indextxt Func _opentxt() If FileExists(GUICtrlRead($Input1) & "\" & "index.txt") Then Run(@ComSpec & " /c start " & GUICtrlRead($Input1) & "\" & "index.txt", @ScriptDir, @SW_HIDE) Else MsgBox(16, "Error", "Es existiert keine Datei " & GUICtrlRead($Input1) & "\" & "index.txt") EndIf EndFunc ;==>_opentxt Func _openhtml() If FileExists(GUICtrlRead($Input1) & "\" & "index.html") Then Run(@ComSpec & " /c start " & GUICtrlRead($Input1) & "\" & "index.html", @ScriptDir, @SW_HIDE) Else MsgBox(16, "Error", "Es existiert keine Datei " & GUICtrlRead($Input1) & "\" & "index.html") EndIf EndFunc ;==>_openhtml ;=================================================================== ;Diesen Text je nach GUI abändern. ;=================================================================== ;~ GUIRegisterMsg($WM_TIMER, "") ;~ _WinAPI_DeleteObject($hHBmp_BG) ;~ _GDIPlus_Shutdown() ;~ GUIDelete() ;~ Sleep(200) ;MsgBox(64+4096,"Indexx-Meldung:" , "Die Erstellung der Dateien Index.html und Index.txt wurde im Ausführungsverzeichnis erfolgreich abgeschlossen") ;~ Exit ;================================================================================================== ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]]) ; Description: Rekursive Auflistung von Dateien und/oder Ordnern ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad) ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard) ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner ; optional: $iRetType 0 gibt Array, 1 gibt String zurück ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest ; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|' ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner ; Author(s): BugFix (bugfix@autoit.de) ;================================================================================================== Func _GetFilesFolder_Rekursiv($sPath, $sExt, $iDir = 0, $iRetType = 0, $sDelim = '0') Global $oFSO = ObjCreate('Scripting.FileSystemObject') Global $strFiles = '' Switch $sDelim Case '1' $sDelim = @CR Case '2' $sDelim = @LF Case '3' $sDelim = ';' Case '4' $sDelim = '|' Case Else $sDelim = @CRLF EndSwitch If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0 If $sExt = -1 Then $sExt = '*' If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1 _ShowSubFolders($oFSO.GetFolder($sPath), $sExt, $iDir, $sDelim) If $iRetType = 0 Then Local $aOut $aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1) If $aOut[1] = '' Then ReDim $aOut[1] $aOut[0] = 0 EndIf Return $aOut Else Return StringTrimRight($strFiles, StringLen($sDelim)) EndIf EndFunc ;==>_GetFilesFolder_Rekursiv Func _ShowSubFolders($Folder, $Ext = '*', $Dir = -1, $Delim = @CRLF) If Not IsDeclared("strFiles") Then Global $strFiles = '' If ($Dir = -1) Or ($Dir = 0) Then For $file In $Folder.Files If $Ext <> '*' Then If StringRight($file.Name, StringLen($Ext)) = $Ext Then _ $strFiles &= $file.Path & $Delim Else $strFiles &= $file.Path & $Delim EndIf Next EndIf For $Subfolder In $Folder.SubFolders If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim) Next EndFunc ;==>_ShowSubFolders ;=================================================================== ;Weiter mit dem Code für die Start-Animation von UEZ ;=================================================================== ;~ Func PlayAnim() ;~ $hHBmp_BG = _GDIPlus_MultiColorLoader($iW, $iH, "Bitte warten Sie, bis die Animation endet und die Dateien Index.html und Index.txt für Sie erstellt wurden. ") ;~ $hB = GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBmp_BG) ;~ If $hB Then _WinAPI_DeleteObject($hB) ;~ _WinAPI_DeleteObject($hHBmp_BG) ;~ EndFunc ;==>PlayAnim ;~ Func _GDIPlus_MultiColorLoader($iW, $iH, $sText = "Der Index wird für Sie erstellt.", $sFont = "Verdana", $bHBitmap = True) ;~ Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH) ;~ Local Const $hGfx = _GDIPlus_ImageGetGraphicsContext($hBitmap) ;~ _GDIPlus_GraphicsSetSmoothingMode($hGfx, 4 + (@OSBuild > 5999)) ;~ _GDIPlus_GraphicsSetTextRenderingHint($hGfx, 3) ;~ _GDIPlus_GraphicsSetPixelOffsetMode($hGfx, $GDIP_PIXELOFFSETMODE_HIGHQUALITY) ;~ _GDIPlus_GraphicsClear($hGfx, 0xFF232323) ;~ Local $iRadius = ($iW > $iH) ? $iH * 0.6 : $iW * 0.6 ;~ Local Const $hPath = _GDIPlus_PathCreate() ;~ _GDIPlus_PathAddEllipse($hPath, ($iW - ($iRadius + 24)) / 2, ($iH - ($iRadius + 24)) / 2, $iRadius + 24, $iRadius + 24) ;~ Local $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath) ;~ _GDIPlus_PathBrushSetCenterColor($hBrush, 0xFFFFFFFF) ;~ _GDIPlus_PathBrushSetSurroundColor($hBrush, 0x08101010) ;~ _GDIPlus_PathBrushSetGammaCorrection($hBrush, True) ;~ Local $aBlend[4][2] = [[3]] ;~ $aBlend[1][0] = 0 ;0% center color ;~ $aBlend[1][1] = 0 ;position = boundary ;~ $aBlend[2][0] = 0.33 ;70% center color ;~ $aBlend[2][1] = 0.1 ;10% of distance boundary->center point ;~ $aBlend[3][0] = 1 ;100% center color ;~ $aBlend[3][1] = 1 ;center point ;~ _GDIPlus_PathBrushSetBlend($hBrush, $aBlend) ;~ Local $aRect = _GDIPlus_PathBrushGetRect($hBrush) ;~ _GDIPlus_GraphicsFillRect($hGfx, $aRect[0], $aRect[1], $aRect[2], $aRect[3], $hBrush) ;~ _GDIPlus_PathDispose($hPath) ;~ _GDIPlus_BrushDispose($hBrush) ;~ Local Const $hBrush_Black = _GDIPlus_BrushCreateSolid(0xFF161616) ;~ _GDIPlus_GraphicsFillEllipse($hGfx, ($iW - ($iRadius + 10)) / 2, ($iH - ($iRadius + 10)) / 2, $iRadius + 10, $iRadius + 10, $hBrush_Black) ;~ Local Const $hBitmap_Gradient = _GDIPlus_BitmapCreateFromScan0($iRadius, $iRadius) ;~ Local Const $hGfx_Gradient = _GDIPlus_ImageGetGraphicsContext($hBitmap_Gradient) ;~ _GDIPlus_GraphicsSetSmoothingMode($hGfx_Gradient, 4 + (@OSBuild > 5999)) ;~ Local Const $hMatrix = _GDIPlus_MatrixCreate() ;~ Local Static $r = 0 ;~ _GDIPlus_MatrixTranslate($hMatrix, $iRadius / 2, $iRadius / 2) ;~ _GDIPlus_MatrixRotate($hMatrix, $r) ;~ _GDIPlus_MatrixTranslate($hMatrix, -$iRadius / 2, -$iRadius / 2) ;~ _GDIPlus_GraphicsSetTransform($hGfx_Gradient, $hMatrix) ;~ $r += 10 ;~ Local Const $hBrush_Gradient = _GDIPlus_LineBrushCreate($iRadius, $iRadius / 2, $iRadius, $iRadius, 0xFF000000, 0xFF33CAFD, 1) ;~ _GDIPlus_LineBrushSetGammaCorrection($hBrush_Gradient) ;~ _GDIPlus_GraphicsFillEllipse($hGfx_Gradient, 0, 0, $iRadius, $iRadius, $hBrush_Gradient) ;~ _GDIPlus_GraphicsFillEllipse($hGfx_Gradient, 4, 4, $iRadius - 8, $iRadius - 8, $hBrush_Black) ;~ _GDIPlus_GraphicsDrawImageRect($hGfx, $hBitmap_Gradient, ($iW - $iRadius) / 2, ($iH - $iRadius) / 2, $iRadius, $iRadius) ;~ _GDIPlus_BrushDispose($hBrush_Gradient) ;~ _GDIPlus_BrushDispose($hBrush_Black) ;~ _GDIPlus_GraphicsDispose($hGfx_Gradient) ;~ _GDIPlus_BitmapDispose($hBitmap_Gradient) ;~ _GDIPlus_MatrixDispose($hMatrix) ;~ Local Const $hFormat = _GDIPlus_StringFormatCreate() ;~ Local Const $hFamily = _GDIPlus_FontFamilyCreate($sFont) ;~ Local Const $hFont = _GDIPlus_FontCreate($hFamily, $iRadius / 10) ;~ _GDIPlus_StringFormatSetAlign($hFormat, 1) ;~ _GDIPlus_StringFormatSetLineAlign($hFormat, 1) ;~ Local $tLayout = _GDIPlus_RectFCreate(0, 0, $iW, $iH) ;~ Local Static $iColor = 0x00, $iDir = 13 ;~ Local $hBrush_txt = _GDIPlus_BrushCreateSolid(0xFF000000 + 0x010000 * $iColor + 0x0100 * $iColor + $iColor) ;~ _GDIPlus_GraphicsDrawStringEx($hGfx, $sText, $hFont, $tLayout, $hFormat, $hBrush_txt) ;~ $iColor += $iDir ;~ If $iColor > 0xFF Then ;~ $iColor = 0xFF ;~ $iDir *= -1 ;~ ElseIf $iColor < 0x16 Then ;~ $iDir *= -1 ;~ $iColor = 0x16 ;~ EndIf ;~ _GDIPlus_BrushDispose($hBrush_txt) ;~ _GDIPlus_FontDispose($hFont) ;~ _GDIPlus_FontFamilyDispose($hFamily) ;~ _GDIPlus_StringFormatDispose($hFormat) ;~ _GDIPlus_GraphicsDispose($hGfx) ;~ If $bHBitmap Then ;~ Local $hHBITMAP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap) ;~ _GDIPlus_BitmapDispose($hBitmap) ;~ Return $hHBITMAP ;~ EndIf ;~ Return $hBitmap ;~ EndFunc;~ EndFunc Func pfad() GUISetState(@SW_HIDE) Global $pfad = FileSelectFolder("Kein Ordner-Pfad angegeben!", "::{00000000-1080-F9E5-6311-4162E05A6BEE}", 4) If FileExists($pfad) Then GUICtrlSetData($Input1, $pfad) EndIf GUISetState(@SW_SHOW) EndFunc ;==>pfad
-
Wie wäre es wenn du nen Array erstellst, in das du die jeweiligen indices speichers, die geändert wurden. Dann musst du die nur noch mit SetExtended() oder so mitübergeben. (Um häufiges Redim zu vermeiden kannst du dir am besten einen Wert suchen, z.B. leer, dann musst du am ende nur einmal das array durchgehen, die leeren felder zählen, vom gesamten abziehen, ein neues array mit der länge erstellen und die daten dort eintragen. Redim macht ja auch nichts anderes als das Array neu anzulegen. :))
-
Für alle, die eher die feinere (und etwas kompliziertere Lösung) mit Events nehmen wollen:
AutoIt
Alles anzeigen;Include fr WM_Command #include <GUIConstants.au3> ;On Event mode aktivieren, guigetmsg funktioniert auch Opt("GUIOnEventMode", 1) ;Fenster erstellen GUICreate("Inputchange",200,100) ;Controls erstellen $labelN=GUICtrlCreateLabel("Name:",5,55,190,20) $labelA=GUICtrlCreateLabel("Anzahl:",5,80,190,20) $Input_Name=GUICtrlCreateInput("",5,5,190,20) ;Text, der nur sichtbar ist, wenn der input leer ist und keinen fokus hat GUICtrlSendMsg(-1, 0x1501, 0, "Name") $Input_Anzahl=GUICtrlCreateInput("",5,30,190,20) GUICtrlSendMsg(-1, 0x1501, 0, "Anzahl") GUISetOnEvent($GUI_EVENT_CLOSE, "closeGui") ;Eventfunktion angeben GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND") GUISetState() while sleep(10) WEnd ;Event funktion Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam) Local $nNotifyCode=BitShift($wParam, 16) Local $hCtrl=$lParam ;nur auf änderungsevents reagieren If $nNotifyCode = 1024 Or $nNotifyCode = 786 Then Switch $hCtrl ;jeweiliges control checken Case GUICtrlGetHandle($Input_Name) GUICtrlSetData($labelN,"Name : "&GUICtrlRead($Input_Name)) Case GUICtrlGetHandle($Input_Anzahl) GUICtrlSetData($labelA,"Anzahl: "&GUICtrlRead($Input_Anzahl)) EndSwitch EndIf Return $GUI_RUNDEFMSG EndFunc ;Fenster schließen Func closeGui() exit EndFunc
-
Ich würd das ganze aufsplitten. Wenn die Datei nicht vorhanden ist, schmiert es so dann nicht ab.
-
Wenn du die exif-daten wegbekommen willst wirst du vermutlich am besten arbeiten, wenn du das ganze binär verarbeitest. Hol dir mal Hex Edit, oder ähnliches und sieh dir eine jpg an. Und dann, was sich ändert, wenn du z.b. nen autor hinzufügst. Die Bildinfos stehen ja am Anfang der Datei. Dabei kann dir diese Seite helfen: http://swlab.et.fh-duesseldorf.de/pc_pool/lernmo…n/Kapitel23.htm
Wenn du nur mit einem exif-tool die daten löscht, bleibt der platz reserviert und wird nur leer gemacht. -> immernoch unnütze daten.
Was die größe angeht: Da musst du dir was überlegen. Es ist im Vorraus schwer zu sagen, wie groß ein Bild wird, da Kompressionsraten eine Rolle spielen und somit auch die anzahl gleicher/ähnlicher farben,... Ich denke da musst du im Vorraus berechnen, oder solange immer kleiner werden, bis die Größe erreicht ist.
Edit: Upps, du meintest mit größe die Pixel, nicht die Dateigröße, da halte dich einfach an das was @alpines geschrieben hat. -
Du kannst dort nicht einfach x (oder y) eintragen, da du eine Variable haben musst, oder eine Zahl. Und nein, du musst die Position dann selber errechnen/herausfinden.
-
Stimmt... wir sollten auch in dem anderen Thread von @Make-Grafik darauf verweisen, dass der Laptop wasserdicht sein sollte. Nicht, dass er später auch auf solche Probleme stößt
-
Hatte gerade etwas zeit und habs umgesetzt. Wenn du jetzt die datei startest wird scite mit dem button geöffnet. (Button=Frabigeslabel oben in der Leiste). Für weitere funktionen,... kannst du das ja noch umbauen
Das Programm sucht alle Fenster, die dann offen sind und gibt denen den Button. Das Programm beendet sich, wenn alle Fenster geschlossen werden (Scite mit mehreren Fenstern).AutoIt
Alles anzeigen#include <WindowsConstants.au3> #include <WinAPI.au3> #include <WinAPIProc.au3> #include <array.au3> Opt("GuiOnEventMode",1) $pid=Run('C:\Program Files (x86)\AutoIt3\SciTE\SciTE.exe') while UBound(ProcessGetWindow($pid))=0 WEnd $wins=ProcessGetWindow($pid) global $winList[UBound($wins)][4] for $i=0 to UBound($wins)-1 step 1 $winList[$i][0]=$wins[$i] $pos=WinGetPos($winList[$i][0]) _ArrayDisplay($pos) $winList[$i][1]=GUICreate("",30,30,400,-40,$WS_POPUP,$WS_EX_MDICHILD,$winList[$i][0]);$WS_POPUP _WinAPI_SetParent($winList[$i][1],$winList[$i][0]) $winList[$i][2]=GUICtrlCreateLabel("",1,1,20,20) GUICtrlSetBkColor(-1,0x00FF00) GUICtrlSetOnEvent(-1,"labelPressed") GUISetState(@SW_SHOW,$winList[$i][1]) $winList[$i][3]=false _ArrayDisplay(WinGetPos($winList[$i][1])) next while 1 $run=false for $i=0 to UBound($winList)-1 step 1 if WinExists($winList[$i][0]) then $run=true endif next if NOT $run then Exit endif WEnd Func labelPressed() for $i=0 to UBound($winList)-1 step 1 if @GUI_CtrlId=$winList[$i][2] then if $winList[$i][3] then WinActivate($winList[$i][0]) Send("^{Break}") GUICtrlSetBkColor($winList[$i][2],0x00FF00) $winList[$i][3]=false else WinActivate($winList[$i][0]) Send("{F5}") GUICtrlSetBkColor($winList[$i][2],0xFF0000) $winList[$i][3]=true endif endif next EndFunc Func ProcessGetWindow($PId) If IsNumber($PId) = 0 Or ProcessExists($PId) = 0 Then SetError(1) Else Local $WinList = WinList() Local $i = 1 Local $Windows[0] for $i=0 to UBound($WinList)-1 step 1 If WinGetProcess($WinList[$i][0], "") = $PId Then if $WinList[$i][0]<>"" and $WinList[$i][0]<>"DirectorExtension" then ReDim $Windows[UBound($Windows)+1] $Windows[UBound($Windows)-1] = $WinList[$i][1] endif Else $i += 1 EndIf Next Return $Windows EndIf EndFunc ;==>ProcessGetWindow
Ich hoffe, das ist es, was du wolltest
-
Kannst natürlich ein Programm schreiben, dass dir bei Scite die Buttons zeichnet... wäre etwas komplizierter, aber möglich (mit scite als parentwindow,...). Bei klick kann dann ja die tastenkombination an scite gesendet werden :).
_winapi_setparent oder so kann beim erstellen der buttons helfen -
Find ich ganz nützlich.
Da ich sowas noch nie genutzt habe, wo muss ich da den Eintrag anlegen? Im SciTeStartup.lua funktioniert LoadLuaFile("ShowHexColorFromCursor.lua") nicht. -
Sofern du mit Blender,... arbeiten willst, würd ich überlegen, ob ein Laptop sinnvoll ist, bzw. ob die Leistung nicht eine Rolle spielt. Ich hab selbst vor 3+ Jahren nen Laptop (war nen Vaio) bekommen... Das Rendern dauerte ewig... mit meinem jetzigen Problem brauch ich Sekunden, wofür der Laptop ne halbestunde gebraucht hat.
Wenns nur um Konsolenprogramme oder kleinere guis (oder halt wenig rechenintensiv) geht, kannst du so einen Laptop natürlich gut nutzen. (Oder wenn du zu viel Zeit hast ;D) -
Da darfst du lange auf MSDN stöbern. Ob du was findest weiß ich nicht. Schätze du musst dir eigene Scrollbars erstellen. Hatte da selbst schonmal laange nach gesucht...
Vermutlich musst du auch die ganze Listview selbst basteln... Evtl.. gibts ja sowas als udf, dass man eigene listview bekommt... glaub ich aber nicht. wäre mal ne projektidee
Ich bastel mir grad schon in Java ne komplette eigene TreeView, weil ich die von Java alle schei** finde... -
-
Nur mal ne Frage... was ist der Grund für das einzeilige? Das hat doch keine Vorteile... eher Nachteile...
-
Hab mir die Suche gleich mal gespeichert
243572.6667 für 1 Datei bei 1283160 Dateien in 104388 ordnern (1,1 TB)
14816.3081 beim 2ten mal. (Wo speichert der die Infos eigentlich alle? Im Arbeitsspeicher ja wohl nicht...). Ich hab die Ordner ja nicht indiziert für die Suche. -
evtl. temporäre datei erstellen und dabei mit fileopen parametern arbeiten (wird ja an kodierungsproblemen liegen). Die dann passend einlesen und verarbeiten. es gibt bestimmt auch irgendwo funktionen, die das direkt konvertieren. musst mal suchen (Stichwort textkodierung,ansi,iso,utf8,utf16,utf-bom,...) Kannst auch gut mit notepad++ (reiter kodierung im menü) gucken, in welchem format die daten ankomment (mit clipput/clipget einfügen)
-
$eingabe=$input ist falsch. richtig wäre $eingabe=guictrlread($input). Ansonsten ließt du den handle des controls ein (oder die nummer). und code bitte in code tags ;), danke
-
Die meisten ebook-formate sind gezippt und dort sind htmldateien drin. (z.B. bei Epub). Da könnte man sich das natürlich raussuchen. Ich weißt ja nicht, wie genau du das drucken willst.
Falls du epub drucken möchtest helf ich dir gerne weiter (hab ja nen Reader für die geschrieben, sodass ich den aufbau des formates dort genauer kenne). Ab Samstag hätte ich zeit. jetzt erstmal morgen und übermorgen klasur :))