Ist schon seit knapp 4 Jahren bei den Skripten gepostet: Virtuelles Laufwerk ![]()
Beiträge von BugFix
-
-
-
Hab das Problem gefunden: Die Liste ist Schuld.
Bei Verwendung einer Liste in einem Container wird diese immer mit Rand links dargestellt. Diesen Rand kann man nicht beeinflussen.
Also habe ich statt der Liste einen Container mit den Links der Navigation verwendet: Nun passt es. -
-
Ich habe das Skript von Torni mal noch etwas überarbeitet und kommentiert.
Spoiler anzeigen
[autoit]#include <EditConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>$Form1_1 = GUICreate("Form1", 310, 220, 273, 249)
[/autoit] [autoit][/autoit] [autoit]
$Input1 = GUICtrlCreateInput("", 24, 40, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD))
$Label1 = GUICtrlCreateLabel("Password:", 24, 16, 67, 22)
GUICtrlSetFont(-1, 10, 800, 0, "Trebuchet MS")
$Group1 = GUICtrlCreateGroup("Install Printer ", 24, 72, 273, 129)
GUICtrlSetFont(-1, 9, 400, 0, "Trebuchet MS")
GUICtrlSetState(-1, $GUI_HIDE)
$Button1 = GUICtrlCreateButton("Button1", 112, 168, 75, 17)
GUICtrlSetState(-1, $GUI_HIDE)
$Label2 = GUICtrlCreateLabel("Install Generic / Text Only @ LPT1", 40, 104, 238, 22)
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlSetFont(-1, 10, 400, 0, "Trebuchet MS")
GUICtrlSetState(-1, $GUI_HIDE)
$Progress1 = GUICtrlCreateProgress(64, 136, 166, 9)
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlCreateGroup("", -99, -99, 1, 1)GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND') ; == Registrieren der Windows-Message WM_COMMAND
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEndFunc WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam) ; == Auswerten der Windows-Message WM_COMMAND
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
$iCode = BitShift($iwParam, 16) ; Hi Word
; == WENN ( Code=Änderung_im_Control ) UND ( CTRL-ID=$input1 )
If $iCode = $EN_CHANGE And $iIDFrom = $input1 Then
If GUICtrlRead($Input1) = "test" Then ; == WENN Ctrl-Inhalt = "test"
_SetState($GUI_SHOW) ; == Ctrls zeigen
Else ; == in jedem anderen Fall
_SetState($GUI_HIDE) ; == Ctrls verstecken
EndIf
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMANDFunc _SetState($_iState)
[/autoit]
GUICtrlSetState($Group1, $_iState)
GUICtrlSetState($Button1, $_iState)
GUICtrlSetState($Label2, $_iState)
GUICtrlSetState($Progress1, $_iState)
EndFunc -
Hab mal die Delete-Funktion (per WMI) erstellt:
btw.: Diese Funktion läuft ohne #RequireAdmin
[autoit]
[/autoit][autoit][/autoit][autoit]
; Bsp.
_RegDeleteKey("HKEY_CURRENT_USER", "TEST\BLA")Func _RegDeleteKey($HKEY, $strKeyPath)
[/autoit]
If StringRight($HKEY, 1) = '\' Then $HKEY = StringTrimRight($HKEY, 1)
Select
Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM"
$HKEY = 0x80000002
Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU"
$HKEY = 0x80000003
Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU"
$HKEY = 0x80000001
Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR"
$HKEY = 0x80000000
Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC"
$HKEY = 0x80000005
EndSelect
Local $sNames, $sKeyName
Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
Local $iRet = $oReg.DeleteKey($HKEY, $strKeyPath)
If $iRet <> 0 Then
$iRet = $oReg.EnumKey($HKEY, $strKeyPath, $sNames)
For $sKeyName In $sNames
$iRet = _RegDeleteKey($HKEY, $strKeyPath & "\" & $sKeyName)
Next
$oReg.DeleteKey($HKEY, $strKeyPath)
EndIf
EndFunc ;==>_RegDeleteKey -
Hi,
hier tritt folgendes Problem auf:
Hier wird versucht mit dem Löschen eines Schlüssels auch die Unterschlüssel zu löschen --- DAS kann nicht gehen.
Windows löscht intern zu jedem Parent.Key erstmal alle Sub.Keys, aus alten DOS-Zeiten bekannt: Verzeichnisse mit Inhalt kann man nicht Löschen. Die modernen Löschbefehle nehmen dem User die Arbeit ab, sodass man davon nichts mitbekommt.
Es wird also eine rekursive Funktion benötigt, die für jeden Schlüssel prüft, ob er Unterschlüssel hat und erst bei "Nein" den Schlüssel löscht. Also von Innen nach Aussen Löschen. -
Naja, in der Adresszeile des Browsers ein "w Suchbegriff" tuts auch...

-
-
Ohne Bsp. Code wird dir da niemand helfen können. Oder glaubst du, dass jemand sich erstmal hinsetzt, dein Problem anhand der recht vagen Infos nachskriptet und dir dann eine Lösung präsentiert?
-
Es gibt nur ein ReDim kurz vor dem Return des Arrays,
Und im Normalfall nicht mal dieses. Denn das passiert nur, wenn keine Ergebnisse gefunden wurden, dann wird das aus dem Stringsplit entstandene 2-Elementige Array ReDim't auf 1 Element mit Wert "0".
-
Das Array im Array dürfte jedem ein Begriff sein.
Leider funktionniert Struct im Struct bei AutoIt nicht, warum ?
Naja...
Man kann schon Struktur in einer Struktur speichern. Kommt nur drauf an, wie man es verwaltet. Ein Pointerarray macht sich dafür recht gut.
Hier mal ein Bsp.:Spoiler anzeigen
[autoit]; == 3 Verschiedene Strukturen in einer MainStruktur speichern ==
[/autoit] [autoit][/autoit] [autoit]$iElements = 9 ;<== Summe der Elemente in den zu speichernden Strukturen
[/autoit] [autoit][/autoit] [autoit]
$struct1 = 'int;int;'
$shift1 = 0 ;<== shift gibt den Versatz der Struktur in der Mainstruktur an = Summe vorherig angeordneter Strukturelemente
$struct2 = 'int;byte;char[5];'
$shift2 = 2
$struct3 = 'hwnd;hwnd;int;int;'
$shift3 = 5Global $aStruct = DllStructCreate('ptr[' & $iElements & '];' & $struct1 & $struct2 & $struct3)
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To $iElements
DllStructSetData($aStruct, 1, DllStructGetPtr($aStruct, $i +1), $i)
Next; == in Strukturen schreiben ==
[/autoit] [autoit][/autoit] [autoit]; == struct1
[/autoit] [autoit][/autoit] [autoit]
_DllArrayStructSetData($aStruct, 0, 1, 64)
_DllArrayStructSetData($aStruct, 0, 2, 128)
; == struct2
_DllArrayStructSetData($aStruct, 2, 1, 30)
_DllArrayStructSetData($aStruct, 2, 2,
_DllArrayStructSetData($aStruct, 2, 3, 'hallo')
; == struct3
_DllArrayStructSetData($aStruct, 5, 1, WinGetHandle('') )
_DllArrayStructSetData($aStruct, 5, 2, 0x135790)
_DllArrayStructSetData($aStruct, 5, 3, 256)
_DllArrayStructSetData($aStruct, 5, 4, 512); == aus Strukturen lesen ==
[/autoit] [autoit][/autoit] [autoit]; == struct1
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite( _DllArrayStructGetData($aStruct, $struct1, 0, 1) & @CRLF )
ConsoleWrite( _DllArrayStructGetData($aStruct, $struct1, 0, 2) & @CRLF )
; == struct2
ConsoleWrite( _DllArrayStructGetData($aStruct, $struct2, 2, 1) & @CRLF )
ConsoleWrite( _DllArrayStructGetData($aStruct, $struct2, 2, 2) & @CRLF )
ConsoleWrite( _DllArrayStructGetData($aStruct, $struct2, 2, 3) & @CRLF )
; == struct3
ConsoleWrite( _DllArrayStructGetData($aStruct, $struct3, 5, 1) & @CRLF )
ConsoleWrite( _DllArrayStructGetData($aStruct, $struct3, 5, 2) & @CRLF )
ConsoleWrite( _DllArrayStructGetData($aStruct, $struct3, 5, 3) & @CRLF )
ConsoleWrite( _DllArrayStructGetData($aStruct, $struct3, 5, 4) & @CRLF )Func _DllArrayStructSetData(ByRef $_aStruct, $_iShift, $_iElement, $_value, $_iIndex=0)
[/autoit] [autoit][/autoit] [autoit]
If $_iIndex > 0 Then
Return DllStructSetData($_aStruct, 1 + $_iShift + $_iElement, $_value, $_iIndex)
Else
Return DllStructSetData($_aStruct, 1 + $_iShift + $_iElement, $_value)
EndIf
EndFuncFunc _DllArrayStructGetData(ByRef $_aStruct, $_sStruct, $_iShift, $_iElement, $_iIndex=0)
[/autoit]
If StringRight($_sStruct, 1) = ';' Then $_sStruct = StringTrimRight($_sStruct, 1)
Local $aElements = StringSplit($_sStruct, ';')
Local $structElement = $aElements[$_iElement]
Local $ptr = DllStructGetData($_aStruct, 1, $_iShift + $_iElement)
Local $tmpStruct = DllStructCreate($structElement, $ptr)
If $_iIndex > 0 Then
Return DllStructGetData($tmpStruct, 1, $_iIndex)
Else
Return DllStructGetData($tmpStruct, 1)
EndIf
EndFunc -
Netscape-Alpha
Meines Wissens nutze ich Netscape nicht. Es sei denn es ist versteckter Bestandteil von FF, IE oder Chrom
-
-
Hab nun dieses jsFiddle gefunden, alles eingetragen und...
Es sieht so aus, wie es soll!! jsFiddle
Aber das ist völlig wertlos, sowie ich es über einen Browser ausgebe wird es verfälscht.
In meinem Editor (Webocton) wird auch alles korrekt dargestellt. -
-
Hi,
ich kämpfe gerade mit der Gestaltung einer Website.
Eigentlich ein recht triviales Outfit: Wie mit Frames einen Container für Titel, einen für Naviagation und einen für Inhalt.Struktur
Code
Alles anzeigen______________________________________________________________________________________________________________________________ | __________________________________________________________________________________________________________________________ | | | | |<-- body | | <div id="titel"> <p> ... </p> </div> | | | | | | | |__________________________________________________________________________________________________________________________| | | ________________________________ _______________________________________________________________________________________ | | | | | | | | | <div id="navigation"> | | <div id="content"> ... </div> | | | | | | | | | | <ul> | | | | | | <li><strong> .. </strong></li> | | | | | | <li><a href=".."> .. </a></li> | | | | | | <li><a href=".."> .. </a></li> | | | | | | <li><a href=".."> .. </a></li> | | | | | | <li><a href=".."> .. </a></li> | | | | | | </ul> | | | | | | | | | | | | </div> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |________________________________| |_______________________________________________________________________________________| | |______________________________________________________________________________________________________________________________|
Hier die zugehörige CSS-Datei:CSS
Code
Alles anzeigenbody{ overflow:scroll; margin: 0; background-image: url("../images/bild_3_800x600.gif"); } #titel{ background-color: #BE4A4A; position: absolute; width: 400%; height: 70px; font-size: 3em; font-family: Comic; color: #FFFFFF; } #titel p { margin-top: 10px; margin-left: 4%; } #navigation{ background-color: #BE4A4A; position: absolute; left: 0px; top: 60px; width: 160px; height: 500%; } #navigation ul { margin-left: 10px; margin-top: 100px; font-size: x-large; } #navigation a { color: #ffff00; text-decoration: none; display: block; padding: 0.3em 0.3em 0.3em .5em; border-left: solid 10px #E49898; } #navigation a:hover { color: #FFC000; text-decoration: underline; border-left: solid 10px #FFC000; } #navigation strong { color: #620062; border-left: solid 10px #620062; padding: 0.3em 0.3em 0.3em .5em; } #navigation li { list-style-type: none; } #content { position: absolute; top: 70px; left: 160px; margin-left: 10px; margin-top: 10px; width: 85%; height: 85%; }Nun würde ich eigentlich erwarten, dass folgendes im Navigationsbereich zu sehen ist:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Stattdessen erhalte ich aber:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Woher kommt der linke Rand, in der Liste? Wie bekomme ich das richtig hin?
-
-
-
Ich habe gerade in einem Hilfethread ein Handling für wahlweises Öffnen oder referenzieren, wenn bereits geöffnete für Workbooks gepostet.
[autoit]
Nun habe ich daraus noch eine Funktion erstellt, vielleicht auch von Interesse:;===============================================================================
[/autoit]
; Function Name....: _ExcelBook_OpenRefer
; Description......: - Opens an ExcelBook in existing Excel-Application
; .................: - Opens an ExcelBook in new Excel-Application if no Excel runs
; .................: - Refers to an always opened ExcelBook
; Parameter(s).....: $_sPath Path to the ExcelBook
; .................: $_fVisible WorkBook is visible (1=default)
; Return Value(s)..: Reference to the Excel object
; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
;===============================================================================
Func _ExcelBook_OpenRefer($_sPath, $_fVisible=1)
Local $oBook, $fOpen = False, $oExcel = ObjGet('', 'Excel.Application')
If @error Then
$oExcel = ObjCreate("Excel.Application")
$oExcel.Visible = $_fVisible
$oBook = $oExcel.Workbooks.Open($_sPath)
Else
$oBook = $oExcel.WorkBooks
For $book In $oBook
If $book.Path & '\' & $book.Name = $_sPath Then
$oBook($book.Name).Activate
$oExcel.Visible = $_fVisible
$fOpen = True
ExitLoop
EndIf
Next
If Not $fOpen Then
$oExcel.Visible = $_fVisible
$oBook = $oExcel.Workbooks.Open($_sPath)
EndIf
EndIf
Return $oExcel
EndFunc ;== _ExcelBook_OpenRefer -
Dann mußt du den Prozeß der dort über CMD laufen soll per Run() starten mit STDOUT-Flag.
Wenn der gewünschte Inhalt (press Esc) ausgegeben wird, schließt du das CMD-Fenster. ( Mir rollen sich immer die Fußnägel auf, wenn ich DOS-Fenster höre/lese
) -
So kannst du prüfen ob
[autoit]
- Excel bereits mit deinem Workbook geöffnet ist
- Excel ohne das Workbook geöffnet ist
- Excel nicht geöffnet ist
Entsprechend erfolgt der Zugriff auf die Tabelle.Global $myPath = "DEINE.xls"
[/autoit][autoit][/autoit][autoit]Global $fOpen = False, $oBook, $oExcel = ObjGet('', 'Excel.Application') ; Zugriff auf geöffnetes Excel
[/autoit][autoit][/autoit][autoit]
If @error Then
; == Excel ist nicht geöffnet, neues Excel-Objekt erstellen
_OpenXLS(0)
Else
; == in Excel geöffnete Workbooks auflisten
$oBook = $oExcel.WorkBooks
For $book In $oBook
If $book.Path & '\' & $book.Name = $myPath Then
;~ ConsoleWrite($book.Path & '\' & $book.Name & @CRLF)
$oBook($book.Name).Activate
$oExcel.Visible = 1 ; nur wenn Tabelle sichtbar sein soll
$book.Sheets(2).Select()
$fOpen = True
ExitLoop
EndIf
Next
EndIf
If Not $fOpen Then _OpenXLS($oExcel) ;Func _OpenXLS($_oExcel)
[/autoit]
If Not IsObj($_oExcel) Then $oExcel = ObjCreate("Excel.Application") ; Excel-Objekt erstellen
$oExcel.Visible = 1 ; 0=unsichtbar/ 1=sichtbar
$oBook = $oExcel.Workbooks.Open($myPath) ; Datei öffnen
$oBook.Sheets(2).Select()
EndFunc -
Das hättest du vor 3 Jahren fragen müssen. Damals habe ich alle Unterlagen (Programmierhanbücher, Codieranweisungen etc. pp.) zur Lochkartentechnik entsorgt.
Habe mir das im zarten Alter von 10 Jahren (1971) begeistert reingezogen.
Es gab verschiedene Lochkartensysteme. 80 x 12 war ein Standard, wir hatten damals glaub ich mit 8 Zeilen gearbeitet (Löcher rechteckig) + eine durchgängige Positionslochung (rund). -
da ich den Pfeiltasten keine anderen Accelerators mehr zuweisen kann
Klar geht das, in den zugeordneten Funktionen der Dummies kannst du doch je nach aktueller ID (Fokus) andere Aktionen ausführen.