Beiträge von BugFix
-
-
Das Problem habe ich an meinem Laptop oft, weil das Touchpad kein wirklicher Mausersatz ist und ein Antippen als MOUSEDOWN erkannt wird, aber das MOUSEUP wird nicht immer erkannt. Somit hast du den Effekt, als ob du mit gedrückter Maustaste über den Text fährst ==> er wird markiert.
-
Ja, damit geht es:
[autoit]#include <winapi.au3>
[/autoit][autoit][/autoit][autoit]Const $SPI_SETWORKAREA = 47
[/autoit][autoit][/autoit][autoit]
Const $SPIF_SENDCHANGE = 2$tRECT = DllStructCreate('int;int;int;int')
[/autoit]
DllStructSetData($tRECT, 1, 0) ; left
DllStructSetData($tRECT, 2, 0) ; top
DllStructSetData($tRECT, 3, 1024) ; right
DllStructSetData($tRECT, 4, 768) ; buttom
_WinAPI_SystemParametersInfo($SPI_SETWORKAREA, 0, DllStructGetPtr($tRECT), $SPIF_SENDCHANGE)
Edit:
Einen Nachsatz noch dazu. Das Begrenzen der Arbeitsfläche heißt natürlich auch, dass die Icons auf dem Desktop bei Veränderung des Bereiches gegebenenfalls verschoben werden.Edit peethebee [Tags für Foren-/Google-Suche]: Desktop verkleinern, einschränken, Sidebar, Seitenleiste, Vollbild verkleinern
-
[autoit]
Local $array_Inis = _GetFilesFolder_Rekursiv ( @ScriptDir , 'log.ini',0 )
[/autoit][autoit][/autoit][autoit]
Local $sOut = ''For $i = 1 To UBound ( $array_Inis )-1
[/autoit][autoit][/autoit][autoit]
$aSec = IniReadSection ( $array_Inis[$i], 'Quelle-Ziele' )
For $j = 1 To UBound($aSec) -1
$entry = $aSec[$j][0] & '=' & $aSec[$j][1] ; Key und Value zusammensetzen, wie in der INI
$date = StringRegExp($entry, '\d{2}\.\d{2}\.\d{4}', 1)
$date = $date[0] & '|'
$local = StringLeft($entry, StringInStr($entry, '=')-1) & '|'
$server = StringRegExp($entry, '(\\\\\w+\\)(\w+\\)+', 2)
$server = $server[0]
$string = $date & $local & $server
$sOut &= $string & @CRLF
Next
Next
ConsoleWrite($sOut & @CRLF); Da du alles aus der INI liest:
[/autoit][autoit][/autoit][autoit]
; [Quelle-Ziele]
; c:\0rdner1=\\server\share\28.09.2009\ordner1; geht es aber auch so:
[/autoit][autoit][/autoit][autoit]
Local $array_Inis = _GetFilesFolder_Rekursiv ( @ScriptDir , 'log.ini',0 )
Local $sOut = ''For $i = 1 To UBound ( $array_Inis )-1
[/autoit]
$aSec = IniReadSection ( $array_Inis[$i], 'Quelle-Ziele' )
For $j = 1 To UBound($aSec) -1
$date = StringRegExp($aSec[$j][1], '\d{2}\.\d{2}\.\d{4}', 1)
$date = $date[0] & '|'
$local = $aSec[$j][0] & '|'
$server = StringRegExp($aSec[$j][1], '(\\\\\w+\\)(\w+\\)+', 2)
$server = $server[0]
$string = $date & $local & $server
$sOut &= $string & @CRLF
Next
Next
ConsoleWrite($sOut & @CRLF)P.S. Gewöhn dir mal an Tidy zu verwenden, wenn du schon beim Coden nicht aufs Einrücken achtest.

-
Wie schon gesagt: Du mußt das Array von IniReadSection in einer EIGENEN SCHLEIFE auswerten, mit EIGENER ZÄHLVARIABLE.
Und die RegExp-Auswertungen jetzt plötzlich auch als 2D-Array zu betrachten ist falsch.
Ich könnte es jetzt ruckzuck korrigieren, aber das hilft dir nichts.
Du mußt erst mal verstehen was dort abläuft. -
Text: 3 of 3
Hier hast du doch alles, was du willst: Text: 3 of 3
Einfach die Datei laden, mit ControlGetText diesen Text ausgeben lassen. Was hinter 'of' steht ist deine Anzahl.Edit:
[autoit]
So könntest du es machen:Opt('WinTitleMatchMode', 2) ; somit wird das Fenster auch erkannt, wenn ein Teil des Titels angegeben wird
[/autoit]
$titel = 'Teil des Fenstertitels'
$text = ControlGetText($titel, '', '[CLASS:Static; INSTANCE:1]')
$anzahl = StringRegExpReplace($text, '(\d+\sof\s)(\d+)', '$2') -
Schau dir mal an WAS für ein Array IniReadSection zurückgibt.
Was soll da dieses: $a[$i][$i] <== dort kann nur 0 (schlüssel) oder 1 (wert) verwendet werden. -
Ahja, diese Zeile (und alle die $a[$i] verwenden) ist falsch:
[autoit]$date = StringRegExp($a[$i], '\d{2}\.\d{2}\.\d{4}', 1)
[/autoit]
Denn INIReadSection gibt ein 2D-Array zurück! -
Wüsste auch nicht wie
Weist du überhaupt, was ich meine?
<Start> <Programme> <AutoIt v3> <AutoIt Window Info>Dieses Tool sollst du benutzen um Infos über dein Anwendungs-Fenster zu bekommen.
-
Du bist heute lustig

Fragst was du falsch machst, ohne zu sagen, was schiefläuft.
Ich vermute mal, du bekommst keine Ini's in dein Array?
Der Aufruf ist nämlich falsch. Als Parameter mußt du nur die Erweiterung übergeben! Also: 'ini' -
Du kannst auch die Größe für das Icon weglassen (0).
[autoit]$hIcon = _WinAPI_LoadImage(0, 'Pfad_Icon', $IMAGE_ICON, 0, 0, $LR_LOADFROMFILE)
[/autoit]Das Icon wird dann in der aktuellen Größe angezeigt.
-
Ein bischen Code wäre schon hilfreich.
Wenn wir erst deine Arbeitsumgebung selbst erstellen müssen, um dein Problem nachzuvollziehen, geht uns glatt die Motivation flöten.
Aber du kannst das Icon mit: _WinAPI_LoadImage() laden, dann hast du ein Handle für deine Funktion.
-
Versuche doch mal, ob das Windows-Info Tool dir im Text evtl. das markierte ausgibt:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
Dann kannst du den Wert sofort verwenden. -
Ist doch nur etwas Stringbastelei:
[autoit]$a = 'c:\0rdner1=\\server\share\28.09.2009\ordner1'
[/autoit][autoit][/autoit][autoit]
;~ $a = 'c:\0rdner1=\\server\share\blub\28.09.2009\ordner1' ; auch längere Pfade möglich$date = StringRegExp($a, '\d{2}\.\d{2}\.\d{4}', 1)
[/autoit][autoit][/autoit][autoit]
$date = $date[0] & '|'$local = StringLeft($a, StringInStr($a, '=')-1) & '|'
[/autoit][autoit][/autoit][autoit]$server = StringRegExp($a, '(\\\\\w+\\)(\w+\\)+', 2)
[/autoit][autoit][/autoit][autoit]
$server = $server[0]$string = $date & $local & $server
[/autoit][autoit][/autoit][autoit]ConsoleWrite($string & @CRLF)
[/autoit] -
kla darf man ein trennzeichen benutzen oda nich?!
Es ist nicht zu empfehlen. Da es als Zeichen im Inhalt vorkommen kann, sollte man von Anfang an diese Fehlerquelle ausschließen. Header mit den Positionsdaten ist eine saubere Sache. -
Von der Überlegung her, denke ich, dass du durchaus verschiedene Dateien 'zusammenklöppeln' kannst. Allerdings würde ich dieses:
$binary & "|" & $binary2
weglassen.
Du mußt die Dateien, um sie ausführen zu können, sowieso wieder aus der Summendatei extrahieren. Also mußt du zusätzlich die Anfangs- und Endpositionen deiner integrierten Files in der Gesamtdatei abspeichern.
Wie gesagt: ungetestet, nur gedacht.
-
Rekursive Dateisuche ist das Stichwort.

Ich hab es mal so genmacht, dass die Namen Vornullen bekommen, dann ist der Dateiname gleich lang - sieht besser aus.
So gehts:Spoiler anzeigen
[autoit]Local $startPath = 'Dein Start-Pfad'
[/autoit] [autoit][/autoit] [autoit]
Local $ZielPfad = 'Dein Pfad zum Abspeichern\' ; Backslash mit verwenden!
Local $ext = 'jpg'Local $arJPGFiles = _GetFilesFolder_Rekursiv($startPath, $ext, 0)
[/autoit] [autoit][/autoit] [autoit]
Local $len = StringLen(String($arJPGFiles[0]))
Local $nul = ''
If $len > 1 Then
For $i = 1 To $len -1
$nul &= '0'
Next
EndIfFor $i = 1 To $arJPGFiles[0]
[/autoit] [autoit][/autoit] [autoit]
FileMove($arJPGFiles[$i], $ZielPfad & StringRight($nul & $i, $len) & '.jpg')
If @error Then
MsgBox(262160,"ACHTUNG","Die Datei" & @CRLF & $arJPGFiles[$i] & @CRLF & _
"konnte nicht verschoben werden, da eine Zieldatei mit dem Namen" & @CRLF & _
$ZielPfad & StringRight($nul & $i, $len) & '.jpg' & @CRLF & "bereits existiert!")
EndIf
Next
MsgBox(262176,"FERTIG","Verschieben und Umbenennen der Dateien beendet.");==================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
; Description: Recursive listing of files and/or folders
; Parameter(s): $sPath Basicpath of listing ('.' -current path, '..' -parent path)
; $sExt Extension for file selection '*' or -1 for all (Default)
; $iDir -1 Files+Folder(Default), 0 only Files, 1 only Folder
; optional: $iRetType 0 for Array, 1 for String as Return
; optional: $sDelim Delimiter for string return
; 0 -@CRLF (Default) 1 -@CR 2 -@LF 3 -';' 4 -'|'
; Return Value(s): Array (Default) or string with found pathes of files and/or folder
; Array[0] includes count of found files/folder
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;==================================================================================================
Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $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
EndFuncFunc _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
[/autoit]
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 -
Verwende für die Breite der letzten Spalte
[autoit]$LVSCW_AUTOSIZE_USEHEADER
[/autoit]
dann wird diese automatisch angepaßt. -
Warum verwendest du diesen umständlichen Code?
Ich hatte dir doch ein viel einfacheres Bsp. gepostet: [ offen ] Markierter Text direkt in Excel...Übrigens:
Acrobat Reader ist ein ressourcenfressendes Monster.
Verwende doch FoxIt Reader, der ist klein und schnell. -
@nicric: Schau mal in dein BIOS, was dort für eine Zeit geführt wird. Evtl. Problem mit Sommerzeit?