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. Bitnugger

Beiträge von Bitnugger

  • Neulich in der Kneipe..."Compiler sind die besseren Programmierer"?!

    • Bitnugger
    • 7. November 2016 um 20:06
    Zitat von Peter S. Taler

    Atari ST und Turbo Pascal...

    Atari ST vs AMIGA - das uralte Thema... im großen Ganzen waren beide System lgeichwertig, beide hatten Stärken und Schwächen.

    Der Atari ST konnte vor allem in Sachen Audio punkten. Ich stand damals vor der Entscheidung und habe hin und her überlegt, welche Wundermaschine ich mir denn nun zulegen will, mich dann aber am Ende wegen des Betriebssystem und dessen Besonderheiten für den AMIGA entschieden. Mit beiden Systemen konnte man... nein, kann man auch heute noch fantastische Sachen machen.


    :ironie:
    Meine Meinung: Ein Computer hat nur so viel Wert, wie sein User ihm einhauchen kann... und da schätze ich mal ganz gelassen, hättest du bei einem direkten Vergleich mit mir sehr alt ausgesehen... dagegen wäre selbst der Luis Trenker völlig faltenfrei! :rofl:
    [/IRONIE OFF]

    Turbo Pascal... ja, das konnte man auch ganz nett mit basteln... aber kein Verleich mit Assembler wert. Die Programmierung war unter Turbo Pascal für Windows ähnlich aufwendig wie in C – mit dem zusätzlichen Nachteil, dass Windows selbst in C programmiert ist, weshalb die Schnittstellen zwischen Windows und Pascalprogramm mindestens grundlegende C-Kenntnisse erfordern. Daher sehe ich absolut keinen Grund, weshalb ich mir zu irgendeiner Zeit Turbo Pascal hätte antun sollen. :Glaskugel:

  • Button Farbe Ändern wenn ein Prozess läuft

    • Bitnugger
    • 7. November 2016 um 19:37

    So in etwa...

    ButtonColor
    AutoIt
    ;-- TIME_STAMP   2016-11-07 19:36:59
    
    
    #Region    ;************ Includes ************
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    ;~ #include <GuiStatusBar.au3>;~~~
    ;~ #include <StaticConstants.au3>;~~~
    ;~ #include <EditConstants.au3>;~~~
    #include <Array.au3>
    #EndRegion ;************ Includes ************
    
    
    Opt('GUIOnEventMode', 1)
    Opt('TrayOnEventMode', 1)
    Opt('TrayMenuMode', 1)
    
    
    Global $g_aPIDs[0]	; NotePad PIDs
    
    
    Global $hGUI = GUICreate("PN4000", 670, 140, 192, 124)
    
    
    Global $idSetting_Menu = GUICtrlCreateMenu("Menü")
    
    
    Global $idSetting_Exit = GUICtrlCreateMenuItem("Ende", $idSetting_Menu)
    GUICtrlSetOnEvent(-1, "_Exit")
    
    
    Global $idHelpMenu = GUICtrlCreateMenu("?")
    ;GUICtrlSetOnEvent(-1,"_Help")
    
    
    Global $idInfo = GUICtrlCreateMenuItem("Info", $idhelpmenu)
    GUICtrlSetOnEvent(-1, "_ShowInfo")
    
    
    Global $idAccelKeys = GUICtrlCreateLabel('ESC = Exit    F2 = Start NotePad    F3 = Kill NotePad', 90, 5, 600, 26)
    GUICtrlSetFont(-1, 14, 800, 0, "@Arial Unicode MS")
    
    
    Global $idNotRunning = GUICtrlCreateButton("Not Running", 32, 50, 300, 42, -1, $WS_EX_DLGMODALFRAME)
    GUICtrlSetFont(-1, 14, 800, 0, "@Arial Unicode MS")
    GUICtrlSetBkColor(-1, 0xFF0000)
    
    
    Global $idIsRunning  = GUICtrlCreateButton("Is Running (" & UBound($g_aPIDs) & ")", 32, 50, 300, 42, -1, $WS_EX_DLGMODALFRAME)
    GUICtrlSetFont(-1, 14, 800, 0, "@Arial Unicode MS")
    GUICtrlSetBkColor(-1, 0x00FF00)
    GUICtrlSetState(-1, BitOR($GUI_HIDE, $GUI_DISABLE))
    
    
    Global $idStart = GUICtrlCreateButton("Reset", 340, 50, 300, 42, -1, $WS_EX_DLGMODALFRAME)
    GUICtrlSetFont(-1, 14, 800, 0, "@Arial Unicode MS")
    GUICtrlSetBkColor(-1, 0x4452F0)
    GUICtrlSetOnEvent(-1, "_RESET")
    
    
    Global $id_Kill = GUICtrlCreateDummy()
    GUICtrlSetOnEvent(-1, "_Kill")
    
    
    Global $aAccelKeys[3][2] = [["{ESC}", $idSetting_Exit], ["{F2}", $idStart], ["{F3}", $id_Kill]]
    GUISetAccelerators($aAccelKeys)
    
    
    GUISetState(@SW_SHOW)
    
    
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
    GUISetOnEvent($GUI_EVENT_MINIMIZE, '_Minimize')
    TraySetOnEvent(-7, '_Restore')
    
    
    Global $iPID = -1
    While Sleep(100)
    	$iPID = ProcessWait("notepad.exe", 1)
    	Switch $iPID
    		Case  -1
    			ContinueLoop
    		Case Else
    			GUICtrlSetState($idNotRunning, BitOR($GUI_HIDE, $GUI_DISABLE))
    			GUICtrlSetState($idIsRunning, BitOR($GUI_SHOW, $GUI_ENABLE))
    			ProcessWaitClose("notepad.exe")
    			$iPID = -1
    			GUICtrlSetState($idIsRunning, BitOR($GUI_HIDE, $GUI_DISABLE))
    			GUICtrlSetState($idNotRunning, BitOR($GUI_SHOW, $GUI_ENABLE))
    	EndSwitch
    WEnd
    
    
    Func _ShowInfo()
        MsgBox(0, "Info", "Version 0.1 " & @CRLF & "Stand 31.10.2016")
    EndFunc  ;==>_ShowInfo
    
    
    Func _Exit()
    	For $i = 0 To UBound($g_aPIDs) -1 Step 1
    		ProcessClose($g_aPIDs[$i])
        Next
    	Exit
    EndFunc  ;==>_Exit
    
    
    Func _Minimize()
        TraySetState(1)
        GUISetState(@SW_HIDE)
    EndFunc  ;==>_Minimize
    
    
    Func _Restore()
        TraySetState(2)
        GUISetState(@SW_SHOW)
    EndFunc  ;==>_Restore
    
    
    Func _RESET()                          ;Hier passiert was wenn der Button gedrückt wird
        _ArrayAdd($g_aPIDs, Run('Notepad.exe'))
    	GUICtrlSetData($idIsRunning, "Is Running (" & UBound($g_aPIDs) & ")")
    	WinActivate($hGUI)
        ;ProcessClose("pn4.exe")
        ;RunAsWait("abc","neu","12346",0,@ComSpec  &  " /c " &'net stop "Autostart"',"",@SW_HIDE);Sleep (1000)
        ;RunAsWait("abc","neu","123456",0,@ComSpec  &  " /c " &'net start "Autostart"',"",@SW_HIDE)
    EndFunc  ;==>_RESET
    
    
    Func _Kill()                          ;Hier passiert was wenn F3 gedrückt wird
        ProcessClose('Notepad.exe')
    EndFunc  ;==>_Kill
    Alles anzeigen
  • Neulich in der Kneipe..."Compiler sind die besseren Programmierer"?!

    • Bitnugger
    • 7. November 2016 um 17:41
    Zitat von Peter S. Taler

    Atari ST und Turbo Pascal...

    Atari ST vs AMIGA - das uralte Thema... im großen Ganzen waren beide System gleichwertig, beide hatten Stärken und Schwächen.

    Der Atari ST konnte vor allem in Sachen Audio punkten. Ich stand damals vor der Entscheidung und habe hin und her überlegt, welche Wundermaschine ich mir denn nun zulegen will, mich dann aber am Ende wegen des Betriebssystem und dessen Besonderheiten für den AMIGA entschieden. Mit beiden Systemen konnte man... nein, kann man auch heute noch fantastische Sachen machen.


    :ironie:
    Meine Meinung: Ein Computer hat nur so viel Wert, wie sein User ihm einhauchen kann... und da schätze ich mal ganz gelassen, hättest du bei einem direkten Vergleich mit mir sehr alt ausgesehen... dagegen wäre selbst der Luis Trenker völlig faltenfrei! :rofl:
    [/IRONIE OFF]

    Turbo Pascal... ja, damit konnte man auch ganz nett basteln... aber kein Verleich mit Assembler wert. Die Programmierung war unter Turbo Pascal für Windows ähnlich aufwendig wie in C – mit dem zusätzlichen Nachteil, dass Windows selbst in C programmiert ist, weshalb die Schnittstellen zwischen Windows und Pascalprogramm mindestens grundlegende C-Kenntnisse erfordern. Daher gab und gibt es absolut keinen Grund, weshalb ich mir zu irgendeiner Zeit Turbo Pascal hätte antun sollen. :Glaskugel:

  • Gruppenrichtlinien übertragen

    • Bitnugger
    • 6. November 2016 um 13:11

    Hm, so gewaltig anders ist ein 64-Bit-System aber gar nicht... es stellt einen größeren Adressraum bereit, wodurch die Adressen, z. B. für ein Window-Handle, ein wenig länger werden. Das ist eigentlich schon der wesentlichen Unterschied. Problematisch für viele User ist lediglich die x64-Redirection, welche es erst ermöglicht, dass 32-Bit-Programme und 64-Bit-Programme reibungslos auf einem System laufen können. Vor ein paar Monaten hatte ich eine kleine Erweiterung für den FileZilla Client schreiben wollen, doch aus mir unbegreiflichen Gründen stürzte mein Script direkt nach dem Start ab und lieferte dabei einen ungewöhlichen Exit-Code (rc=-xxxxxxxx). Stunden später kam dann die Erleuchtung... klar, wenn ich mit meinem 32-Bit-Script ein Window-Handle von einem 64-Bit-Programm holen will, dass dies in die Hose geht. Noch ekliger wird es, wenn du mit einem Programm hantieren willst, dass in beiden Varianten verfügbar ist... z. B. der Total Commander. ;)

  • Programmier-Ideen?

    • Bitnugger
    • 5. November 2016 um 22:31

    @autoBert - da hast du jetzt aber mal wieder zu 100% den Nagel auf den Kopf getroffen! :party:

    Ok, es sollte ja eigentlich eine große Überraschung werden... aber jetzt, wo du mich so provokativ darauf angesprochen hast, habe ich mich dazu entschieden, nun doch die Sau rauszulassen. 8)

    Mit meinem abschließenden Smiley im vorherigen Post hatte ich allerdings mehr oder weniger deutlich signalisiert, dass ich es selbst auch für total übertrieben halte, diese Arbeit jemandem aufhalsen zu wollen, der bis dato keine größeren Projekte vorzuweisen hat. Als unverbindliche Inspiration in den Raum gestellt, fand ich es aber dennoch vollkommen ok. :D

    In Wahrheit sind es aber in der Tat meine nächsten großen Projekte, die auf meiner ToDo-Liste ganz oben stehen! Sobald ich mit der noch recht langen Liste an kleinen Tools, die ich für Freunde und Bekannte (50% davon nur für meine Schwester :rofl: ) noch schreiben muss, fertig bin, werde ich sie angehen und hier als Freie Software veröffentlichen - als Dank dafür, dass ich hier so viele wirklich wertvolle Dinge von den alten Hasen lernen durfte, ohne dass ich auch nur einen Pups an Gegenleistung dafür erbringen musste!!!

    Mein erstes Projekt, inspiriert durch "OverMind" von dem User @4ern, wird dann wohl "MasterBrain" sein... da es einen erhöhten Mehrwert für mich hat. Es wird aber sicher noch einiges an Zeit brauchen, bis eine erste vorzeigbare Version erscheint, da meine Ansprüche weit über dem Durchschnitt liegen. ^^

    Mit dem Programmieren habe ich etwa 1986 angefangen... ein paar Jahre mit einigen BASIC-Dialekten und später auch AREXX herumgespielt, danach aber nur noch wirklich extrem anspruchsvolle Sachen mit Assembler auf dem AMIGA, z. B. "FastIPrefs" (ähnlich der Systemsteuerung unter Windows) und "SORT" (ein Sorter für ein BBS-System). Um 2000 herum ist das Thema PC dann gesundheitsbedingt eine Weile eingeschlafen, doch seit ungefähr 11 Jahren bin ich wieder aktiv, jedoch ohne ein größeres Ziel. AutoIt wurde erst um 2006 ein Begriff für mich... als ich damals noch für "Siemens Nixdorf" bzw. "Wincor Nixdorf Siemens" gearbeitet hatte, die es in vielen Bereichen extensiv genutzt haben. Seit dieser Zeit bin ich hauptsächlich mit AutoIt zugange und habe z. B. meine 1001 kleinen Herferlein, die ich alle als *.bat/*.cmd angesammelt hatte, durch AutoIt-Scripte ersetzt, teilweise mit einer atemberaubenden Zeitersparnis mit Faktor 1000++!!!


    Ich habe @Make-Grafik allerdings eine Zusage gemacht, dass ich ihn bei seinem Projekt (JavaFX in AutoIt) zu 100% unterstütze, falls er überhaupt Verwendung für mich hat. In dem Fall müste ich meine Projekte natürlich hinten anstellen, weil sein Projekt für mich den ersten Platz belegt. ;)

  • Programmier-Ideen?

    • Bitnugger
    • 5. November 2016 um 18:10

    Womit du dich beliebt machen kannst:

    - Codepage Analyzer/Converter - wichtig wären UTF-8, ANSI und OEM

    - MasterBrain - ein Server, es erlaubt, Daten (Variablen, Arrays, Strukturen, Objekte usw.) zwischen Programmen/Gruppen auszutauschen. Lokal via Windows-Message-System, über Internet via UDP/TCP. Dabei sollte es zumindest vier Bereiche geben: Public, Private, Admin und Groups. Public kann jeder lesen/schreiben, Private nur der Ersteller, Admin, nur die Administratoren, welche das Geschehen auf dem Server steuern, und Groups, die sich mit beliebigen anderen User und Groups verbinden können. Zugriff auf den Server via Internet nur via SSL und RSA-Schlüssel, wobei die Daten vor der Übertragung selbstverständlich verschlüsselt werden, lokal auch ohne SSL und Verschlüsselung, und für die Anmeldung reicht Benutzername/Passwort völlig aus.


    - SSH-Server/Client - der ähnlich wie z. B. Total Commander mit Plugins erweiterbar ist. Vom Design her kommt FlasHFXP meiner Vorstellung am nächsten. Dieser SSH-Server/Client sollte vor allem für erfahrene User einen echten Mehrwert bieten. Neben einer primären GUI sollte es auch, ähnlich wie für Putty, reichlich Tools geben, die einem das Leben mit SSH erleichtern.

    :thumbup:

  • ListViewItem ContextMenu Problem

    • Bitnugger
    • 5. November 2016 um 13:41

    Für ListViews gibt es auch eine super UDf... _GUIListViewEx

    Vor allem das Example GLVEx_Example_6.au3 wäre dann interessant für dich - das u.A. auch zeigt wie das mit einem Kontextmenü funktioniert.

    Ich habe dir auch mal ein paar Zeilen getippert...

    Dienstsuche
    AutoIt
    ;-- TIME_STAMP   2016-11-08 13:12:44
    #NoTrayIcon
    #include <Date.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiImageList.au3>
    #include <GuiListView.au3>
    ;~#include <String.au3>
    #include <WindowsConstants.au3>
    GUIRegisterMsg($WM_NOTIFY, "WM_Notify")
    Global $g_hGUI, $g_idListView, $hContextMenu, $Call, $hmsg, $iIndex, $iSubIndex, $sItemTxt, $g_idMemo
    $g_hGUI = GUICreate("Dienstsuche OST - GMUNDEN", 900, 600)
    GUISetIcon(@SystemDir & "\SHELL32.dll", 310, $g_hGUI)
    Global $g_sHeader = '%-26s | %-32s | %-10s | %-10s | %-10s\n%s'
    Global $g_sSpacer = '---------------------------|-----------------------------------------------|------------|----------------------------------'
    Global $g_sFormat = '%-26s | %-32s | %10s | %10s | %s'
    #Region ### ListView ###
    Global $g_idListView = GUICtrlCreateListView('|ID|Wochentag|Datum     |Uhrzeit |Dienst', 5, 5, 890, 335)
    _GUICtrlListView_SetExtendedListViewStyle($g_idListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
    GUICtrlSetFont($g_idListView, 9.5, 800, 0, 'Courier New')
    GUICtrlSetBkColor($g_idListView, 0x8080C0)
    Global $hImage = _GUIImageList_Create()
    Global Enum $enRestore, $enRot, $enGruen, $enBlau, $enGrau
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($g_idListView, 0x8080C0, 16, 16))	; CtrlSetBkColor
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($g_idListView, 0xFF0000, 16, 16))	; rot
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($g_idListView, 0x00FF00, 16, 16))	; grün
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($g_idListView, 0x0000FF, 16, 16))	; blau
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($g_idListView, 0x808080, 16, 16))	; Grau
    Global $hPrevImageList = _GUICtrlListView_SetImageList($g_idListView, $hImage, 1)
    Local $aItems[8][6], $aDienst = ['Tagdienst', 'Nachtdienst'], $aSplit
    For $i = 0 To 7 Step 1
    	;ConsoleWrite(         StringFormat('%s|%s|%s|%s|%s|%s', '', $i, _DateDayOfWeek(_DateToDayOfWeek(@YEAR, @MON, @MDAY), $DMW_LOCALE_LONGNAME), _NowCalcDate(), _NowTime(), $aDienst[Mod($i, 2)]) & @CRLF)
    	$aSplit = StringSplit(StringFormat('%s|%s|%s|%s|%s|%s', '', $i, _DateDayOfWeek(_DateToDayOfWeek(@YEAR, @MON, @MDAY), $DMW_LOCALE_LONGNAME), _NowCalcDate(), _NowTime(), $aDienst[Mod($i, 2)]), '|', $STR_NOCOUNT)
    	;_ArrayDisplay($aSplit, '$aSplit')
    	For $j = 0 To 5 Step 1
    		$aItems[$i][$j] = $aSplit[$j]
    	Next
    	_GUICtrlListView_SetColumnWidth ($g_idListView, $i, $LVSCW_AUTOSIZE_USEHEADER)	; $LVSCW_AUTOSIZE)
    Next
    _GUICtrlListView_AddArray($g_idListView, $aItems)
    ;_GUICtrlListView_JustifyColumn()
    #EndRegion ### ListView ###
    #Region ### Contextmenu ###
    Global $idContextmenu, $idDienstsucheSubmenu, $idDienstsucheSubItem1, $idDienstsucheSubItem2, $idListeSubmenu, $idDienstsucheSubItem3, $idListeSubItem1, $idListeSubItem2, $idListeSubItem3
    $idContextmenu = GUICtrlCreateContextMenu($g_idListView)
    $idDienstsucheSubmenu  = GUICtrlCreateMenu("Dienstsuche", $idContextmenu)
    $idDienstsucheSubItem1 = GUICtrlCreateMenuItem("Starten", $idDienstsucheSubmenu)
    $idDienstsucheSubItem2 = GUICtrlCreateMenuItem("Sperren", $idDienstsucheSubmenu)
    $idDienstsucheSubItem3 = GUICtrlCreateMenuItem("Beenden", $idDienstsucheSubmenu)
    GUICtrlCreateMenuItem("", $idContextmenu) ; separator
    $idListeSubmenu  = GUICtrlCreateMenu("Liste", $idContextmenu)
    $idListeSubItem1 = GUICtrlCreateMenuItem("Anzeigen", $idListeSubmenu)
    $idListeSubItem2 = GUICtrlCreateMenuItem("Bearbeiten", $idListeSubmenu)
    $idListeSubItem3 = GUICtrlCreateMenuItem("Exportieren", $idListeSubmenu)
    GUICtrlCreateMenuItem("", $idContextmenu) ; separator
    $idStatusSubmenu  = GUICtrlCreateMenu("Status", $idContextmenu)
    $idStatusSubItem1 = GUICtrlCreateMenuItem("Sofort", $idStatusSubmenu)
    $idStatusSubItem2 = GUICtrlCreateMenuItem("Dringend", $idStatusSubmenu)
    $idStatusSubItem3 = GUICtrlCreateMenuItem("Normal", $idStatusSubmenu)
    $idStatusSubItem4 = GUICtrlCreateMenuItem("Erledigt", $idStatusSubmenu)
    #EndRegion ### Contextmenu ###
    $g_idMemo = GUICtrlCreateEdit("", 5, 345, 890, 250, $WS_VSCROLL)
    GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")
    GUISetState()
    _MemoWrite(StringFormat($g_sHeader, 'Funktion', 'Beschreibung', '$iIndex', '$iSubIndex', '$sItemTxt', $g_sSpacer))
    #Region ### Loop ###
    While 1
        $iMsg = GUIGetMsg()
        Switch $iMsg
            Case $GUI_EVENT_CLOSE
                Exit
    		; Dienstsuche
    		Case $idDienstsucheSubItem1
    			_Dienstsuche(1, $iIndex, $iSubIndex, $sItemTxt)	; 'Starten'
    		Case $idDienstsucheSubItem2
    			_Dienstsuche(2, $iIndex, $iSubIndex, $sItemTxt)	; 'Sperren'
    		Case $idDienstsucheSubItem3
    			_Dienstsuche(3, $iIndex, $iSubIndex, $sItemTxt)	; 'Beenden'
    		; Liste
    		Case $idListeSubItem1
    			_Liste(1, $iIndex, $iSubIndex, $sItemTxt)		; 'Anzeigen'
    		Case $idListeSubItem2
    			_Liste(2, $iIndex, $iSubIndex, $sItemTxt)		; 'Bearbeiten'
    		Case $idListeSubItem3
    			_Liste(3, $iIndex, $iSubIndex, $sItemTxt)		; 'Exportieren'
    		; Status
    		Case $idStatusSubItem1
    			_Status(1, $iIndex, $iSubIndex, $sItemTxt)		; 'Sofort'
    		Case $idStatusSubItem2
    			_Status(2, $iIndex, $iSubIndex, $sItemTxt)		; 'Dringend'
    		Case $idStatusSubItem3
    			_Status(3, $iIndex, $iSubIndex, $sItemTxt)		; 'Normal'
    		Case $idStatusSubItem4
    			_Status(4, $iIndex, $iSubIndex, $sItemTxt)		; 'Erledigt'
        EndSwitch
    WEnd
    #EndRegion ### Loop ###
    Func _Dienstsuche($iModus, $iIndex, $iSubIndex, $sItemTxt)
    	$iIndex = StringFormat('%10s', $iIndex)
    	$iSubIndex = StringFormat('%10s', $iSubIndex)
    	Local Static $aDienstsuche = ['Restore', 'Starten', 'Sperren', 'Beenden']
    	Switch $iModus
    		Case 0 To 3
    			_MemoWrite(StringFormat($g_sFormat, '_Dienstsuche('&$aDienstsuche[$iModus]&')', 'Tue was...', $iIndex, $iSubIndex, $sItemTxt))
    		Case Else
    			Return SetError(1, 0, False)
    	EndSwitch
    EndFunc  ;==>_Dienstsuche
    Func _Liste($iModus, $iIndex, $iSubIndex, $sItemTxt)
    	$iIndex = StringFormat('%10s', $iIndex)
    	$iSubIndex = StringFormat('%10s', $iSubIndex)
    	Local Static $aListe = ['Restore', 'Anzeigen', 'Bearbeiten', 'Normal', 'Exportieren']
    	Switch $iModus
    		Case 0 To 3
    			_MemoWrite(StringFormat($g_sFormat, '_Liste('&$aListe[$iModus]&')', 'Tue was...', $iIndex, $iSubIndex, $sItemTxt))
    		Case Else
    			Return SetError(1, 0, False)
    	EndSwitch
    EndFunc  ;==>_Liste
    Func _Status($iModus, $iIndex, $iSubIndex, $sItemTxt)
    	$iIndex = StringFormat('%10s', $iIndex)
    	$iSubIndex = StringFormat('%10s', $iSubIndex)
    	Local Static $aStatus = ['Restore', 'Sofort', 'Dringend', 'Normal', 'Erledigt']
    	; $enRestore, $enRot, $enGruen, $enBlau, $enGrau
    	Switch $iModus
    		Case 0 To 4
    			_GUICtrlListView_SetItemImage($g_idListView, $iIndex, $iModus)
    			_MemoWrite(StringFormat($g_sFormat, '_Status('&$aStatus[$iModus]&')', 'Tue was...', $iIndex, $iSubIndex, $sItemTxt))
    		Case Else
    			Return SetError(1, 0, False)
    	EndSwitch
    EndFunc  ;==>_Status
    Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    	#forceref $hWnd, $iMsg, $wParam
    	Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
    	$hWndListView = $g_idListView
    	If Not IsHWnd($g_idListView) Then $hWndListView = GUICtrlGetHandle($g_idListView)
    	$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    	$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    	$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    	$iCode = DllStructGetData($tNMHDR, "Code")
    	Switch $hWndFrom
    		Case $hWndListView
                Switch $iCode
    				Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
    					$tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
    					$iIndex    = DllStructGetData($tInfo, "Index")
    					$iSubIndex = DllStructGetData($tInfo, "SubItem")
    					$sItemTxt  = _GUICtrlListView_GetItemText($hWndListView, $iIndex, $iSubIndex)
                EndSwitch
        EndSwitch
        $event = 0
        $lParam = 0
    EndFunc  ;==>WM_NOTIFY
    ; Write a line to the memo control
    Func _MemoWrite($sMessage = '')
        GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1)
    EndFunc  ;==>_MemoWrite
    Alles anzeigen


    Dienstsuche.png

  • Gruppenrichtlinien übertragen

    • Bitnugger
    • 3. November 2016 um 08:23

    Eine Sache hast du allerdings vollkommen vergessen... die x64-Redirection. :D

    https://www.nwc-services.de/de/service-de/…x64-redirection

    Kompiliere dein Script als X64-Version und führe es als Administrator aus - dann sollte es wie gewünscht funktionieren.

    AutoIt
    #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=y
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    
    ;-- TIME_STAMP   2016-11-03 08:16:07
    
    
    ConsoleWrite(FileCopy('M:\Test\b1.png', 'c:\Windows\System32\GroupPolicy') & @CRLF)
    ConsoleWrite(FileCopy('M:\Test\b2.png', 'c:\Windows\System32\GroupPolicyUsers') & @CRLF)
    Alles anzeigen


    x64-Redirection.pngx64-Redirection2.png

  • SciTE - Umlaute

    • Bitnugger
    • 2. November 2016 um 15:17

    Leider habe ich heute und morgen keine Zeit mehr für AutoIt/PC... evtl. schaffe ich es am Fr. dir ein kleines Script mit ein paar Beispielen zu tippern.

    Hier hast du aber schon mal etwas Futter...

    Ohne FileHandle öffnet Autoit alle Dateien im Modus $FO_UTF8_NOBOM. Mit FileHandle kann der Modus angegeben werden.
    Ich denke mal die wichtigsten Encoding-Modes sind $FO_UTF8_NOBOM und $FO_ANSI - und der spezielle Modus $FO_BINARY.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    *.cmd, *.bat, *.vbs, *.csv, *.dat, ... speichere und öffne ich im Modus $FO_ANSI.
    Damit die Umlaute in der SciTE-Console korrekt angezeigt werden, konvertiere ich die Strings mit _WinAPI_OemToChar().
    Beim Speichern konvertiere ich die Strings dann gegebenenfalls mit _WinAPI_CharToOem().
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Wurde SciTE manuell z. B. auf UTF-8 umgestellt, sollte man seine Files i.d.R auch mit diesem Modus öffnen und speichern.
    UTF-8 kannst du wahlweise als WideChar oder auch MultiByte speichern kannst.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Falls output.code.page=0 ist, müssen die Strings für die Ausgabe in der SciTE-Console nach ANSI konvertiert werden.
    OEM2ANSI --> _WinAPI_OemToChar()
    UTF82ANSI --> _WinAPI_MultiByteToWideChar() bzw. _WinAPI_WideCharToMultiByte()
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Zum konvertieren der Strings in eine beliebige Codepage gibt es zwei sehr nette Funktionen, die du dir mal anschauen solltest.
    _WinAPI_WideCharToMultiByte()
    _WinAPI_MultiByteToWideChar()
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SciTE ist so voreingestellt (utf8.auto.check=4), dass es die Dateien beim Öffnen auf Zeichen aus dem erweitertem Bereich [> Chr(127) / ChrW(127)] überprüft.
    Wurde kein Zeichen aus dem erweitertem Bereich gefunden, wird als Codepage $FO_UTF8_NOBOM verwendet.
    Wenn ein Zeichen aus dem erweitertem Bereich [> Chr(127)] gefunden wurde, verwendet SciTE per Default die vom System vorgegebene Codepage (bei mir 1252).

    #~ Enhance function of auto checking utf8: providing two methods
    #~ utf8.auto.check=1 # detect utf8 and add BOM automatically Credits to SciTE-RU
    #~ utf8.auto.check=2 # detect utf8 and do not add BOM
    #~ utf8.auto.check=3 # detect ascii high characters and if none found set default encoding to UTF8 and add BOM
    utf8.auto.check=4 # detect ascii high characters and if none found set default encoding to UTF8 and do not add BOM
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Internationalisation
    code.page=0 # SciTE-Default - die vom System vorgegebene Codepage benutzen
    output.code.page=0

    # Unicode (empfohlen - ältere Scripte müssen dann allerdings konvertiert werden!)
    #code.page=65001
    #output.code.page=65001

    # OEM 850 (Fred Feuerstein)
    #code.page=850
    #output.code.page=850

    # Windows 1252 (Default / = 0)
    #code.page=1252
    #output.code.page=1252
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # In der SciTE-Hilfe steht folgendes:
    Encodings
    SciTE will automatically detect the encoding scheme used for Unicode files that start with a Byte Order Mark (BOM).
    The UTF-8 and UTF-16 encodings are recognised including both Little Endian and Big Endian variants of UTF-16.

    UTF-8 files will also be recognised when they contain a coding cookie on one of the first two lines.
    A coding cookie looks similar to "coding: utf-8" ("coding" followed by ':' or '=', optional whitespace,
    optional quote, "utf-8") and is normally contained in a comment:

    # -*- coding: utf-8 -*-
    For XML there is a declaration:

    <?xml version='1.0' encoding='utf-8'?>
    For other encodings set the code.page and character.set properties.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


    Zitat von Tweaky

    Hi ich verwende die neueste SciTE-Version vom 12.06.2016.
    In den CallTips werden Umlaute nicht korrekt dargestellt.
    Weiß jemand was ich umstellen muss, damit dies wieder funktioniert.

    a.) Du korrigierst die Datei in der die Calltips gespeichert wurden und änderst die Codepage... entweder nach ANSI oder UTF-8 konvertieren.
    Die Kodierung kannst du (testweise) auch direkt in SciTE ändern... siehe Bild.

    b.) Du änderst den Encoding-Modus in SciTE indem du in deiner SciTEUser.properties folgende Zeilen einfügst:


    code.page=65001
    output.code.page=65001

    oder... wenn das nicht funktioniert...

    code.page=0
    output.code.page=0

    Damit die Änderungen in deiner SciTEUser.properties Wirkung zeigen, musst du SciTE neu starten.
    SciTE-Zeichensatzkodierung.png

  • Neulich in der Kneipe..."Compiler sind die besseren Programmierer"?!

    • Bitnugger
    • 30. Oktober 2016 um 21:58

    Ops, habe gelogen... denn seit ein paar Wochen spiele ich auch ein wenig mit AssembleIt rum... :D

  • Neulich in der Kneipe..."Compiler sind die besseren Programmierer"?!

    • Bitnugger
    • 30. Oktober 2016 um 21:31

    Hehe... neben mir gibt es hier tatsächlich noch einen AMIGA-Fan... wirklich erstaunlich... ich habe sogar heute noch einen funktionierenden AMIGA 2000 mit allen erdenklichen Erweiterungen hier stehen... den ich ab und an auch mal benutze. :thumbup:

  • SciTE - Umlaute

    • Bitnugger
    • 30. Oktober 2016 um 21:16

    Überprüfe mal, mit welcher Codepage deine Calltips gespeichert wurden und ob du Einstellungen in deiner "SciTEUser.properties" bezüglich der Codepage hast.

    Ich hantiere nach Möglichkeit nur noch mit UTF-8 und in den "SciTEUser.properties" habe ich folgende Einstellungen hinzugefügt... wodurch dann ältere Sachen (ANSI) natürlich entsprechend angepasst werden müssen.

    SciTEUser.properties
    # Internationalisation
    # Unicode
    code.page=65001
    output.code.page=65001

  • Neulich in der Kneipe..."Compiler sind die besseren Programmierer"?!

    • Bitnugger
    • 30. Oktober 2016 um 20:41

    Ich bin der Meinung, dass ein guter Programmierer zumindest in 99,8% aller Fälle seine Zeit vergeudet, wenn er den optimierten Code eines aktuellen Compilers übertrumpfen will. Suboptimalen Code wird auch der beste Compiler selten bis nie derart optimieren können, wie es ein guter Programmierer sicher jederzeit könnte. 1986 hatte ich mit BASIC angefangen und bin dann nach ein paar Jahren auf ASM umgestiegen. ASM hatte mich in vielen Punkten sehr begeistert, vor allem was Klarheit und Geschwindigkeit angeht. Nun befasse ich mich nur noch mit C, C++, AutoIt, FreeBASIC, Bash und PowerShell - mit C und C++ aber nur wegen spezieller Projekte.

    Falls der "AMIGA" hier für jemand ein Begriff ist... eines meiner ersten Projekte in ASM war damals (zusammen mit einem verstorbenen Freund) das Programm "FastIPrefs", eine erweiterte Version von "IPrefs" (vergleichbar mit der heutigen Systemsteuerung unter Windows), welches in C geschrieben wurde. FastIPrefs hatte das Original in fast allen Bereichen um Faktor 3~50 geschlagen, was Speed angeht, wobei wir unser Hauptaugenmerk nur auf erweiterte Funktionalität und maximale Stabilität gesetzt hatten. Heute würde ich ein so großes Projekt in ASM nur noch aus nostalgischen Gründen angehen und bei fremden Programmen nur in ganz speziellen Fällen selbst Hand anlegen, um es zu optimieren, wobei die näheren Umstände natürlich eine entscheidende Rolle spielen.


    In einem (größeren) Unternehmen würde ich als Chef allerdings zumindest einen (guten) Programmierer damit beauftragen, immer ein Auge darauf zu haben, ob es sich bei eigenen Programmen lohnt, diese in ASM zu optimieren.

  • FF.au3 Tablink kopieren

    • Bitnugger
    • 30. Oktober 2016 um 13:28

    Als Navigationsleiste würde ich die komplette Zeile bezeichnen, in der der sich u. A. auch die "Address Bar" befindet, die du sicher meinst.

    Sobald sich die Adresse des aktuellen Tabs ändert, kopiert dieses Script sie in die Zwischenablage und gibt zusätzlich eine Meldung via MsgBox aus.

    FF_HREF_TO_CLIPBOARD
    AutoIt
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    
    ;-- TIME_STAMP   2016-10-30 13:14:14
    
    
    #Include <FF.au3>
    $_FF_COM_TRACE = False	; Nur die wichtigsten Zustände und Fehlermeldungen ausgeben.
    
    
    _Main()
    
    
    Func _Main()
    	_FFConnect()
    
    
    	If _FFIsConnected() Then
    		Local $sHref, $sHrefOld, $iTabIndex
    
    
    		While 1
    			; href of the current page
    			$sHref = _FFCmd(".location.href")
    			If @error Then Exit MsgBox(64,"Error:","Can't get .location.href from FireFox") +2
    
    
    			If $sHrefOld <> $sHref Then
    				$sHrefOld = $sHref
    				$iTabIndex = _FFTabGetSelected()
    				ClipPut($sHref)
    				MsgBox(0, @ScriptName, _
    					'$iTabIndex = ' & $iTabIndex & @CRLF & @CRLF & _
    					'$sHref = ' & @CRLF & @CRLF & $sHref & @CRLF & @CRLF & @CRLF & _
    					'The link is now in the clipboard.')
    			EndIf
    			Sleep(500)
    		WEnd
    
    
    	Else
    		Exit MsgBox(64,"Error:","Can't conncect to FireFox") +1
    	EndIf
    EndFunc
    Alles anzeigen
  • FF.au3 Tablink kopieren

    • Bitnugger
    • 29. Oktober 2016 um 22:06
    Zitat von M0rtis

    Kann man irgendwie den Link vom Tab kopieren lassen?

    Die Frage ist sehr ungenau formuliert... ich vermute mal, ...

    AutoIt
    ;-- TIME_STAMP   2016-10-29 22:05:28
    
    
    #Include <FF.au3>
    
    
     _FFConnect()
    
    
    If _FFIsConnected() Then
    	; href of the current page
    	$sHref = _FFCmd(".location.href")
    	If @error Then
    		_FFTabAdd("https://autoit.de/index.php/Thread/84695-FF-au3-Tablink-kopieren/?postID=677601#post677601")
    	Else
    		MsgBox(64,"Current href:",$sHref)
    	EndIf
    
    
    	_FFTabDuplicate()
    	Sleep(3000)
    
    
    	; title of the current page
    	$sTitle = _FFCmd( ".title")
    	If Not @error Then MsgBox(64,"Title of the current page:",$sTitle)
    
    
    Else
    	MsgBox(64,"Error:","Can't conncect to FireFox")
    EndIf
    Alles anzeigen
  • "Lesbarkeit auf dem Bildschirm erleichtern" zerstört meine GUI

    • Bitnugger
    • 28. Oktober 2016 um 13:11
    Zitat von gmmg

    es gibt drei Prozentuale Größen

    Du kannst auch eine benutzerdefinierte Skalierungsstufe festlegen... und merken brauchst du dir doch nur einen Wert... die DPI-Ratio.

  • "Lesbarkeit auf dem Bildschirm erleichtern" zerstört meine GUI

    • Bitnugger
    • 24. Oktober 2016 um 15:54

    @gmmg

    Deine Antwort ist allgemein betrachtet natürlich vollkommen korrekt, sie bezieht sie allerdings nicht mal ansatzweise auf die von @Weissgarnix angeführte Problemstellung...

    Zitat von Weisgarnix

    Wende ich GUICtrlSetFont an, muss ich eine Größe angeben und diese Controls werden dann vom GDI-Workaround nicht mehr erfasst

  • Benötige dringend ein Script um ein Treiber (INF) zu installieren!

    • Bitnugger
    • 24. Oktober 2016 um 01:39

    Source.....: Der vollqualifizierte Pfadname zur *.au3, aus der die EXE(n) erstellt werden soll(en).
    -----------> @ScriptFullPath ("F:\_Scripts\AutoIt\Projekte\USB-Multikey-Installer.au3")

    Destination: Der Pfad, unter dem die ausführbare(n) EXE(n) gespeichert werden soll(en).
    -----------> Meist das Verzeichnis, in dem auch die *.au3 liegt.

    Custom Icon: Dateiname der ICO-Datei, die für die kompilierte EXE verwendet werden soll.

    Compile for System: Erstellt wird, was angehakt ist - 32-Bit und/oder 64-Bit.
    ------------------> Ist kein Haken gesetzt, wird eine 32-Bit EXE erstellt.


    Script ist zu ~ 80% fertig... und es heißt nicht "Converter", sondern "Compiler". :D

  • Benötige dringend ein Script um ein Treiber (INF) zu installieren!

    • Bitnugger
    • 23. Oktober 2016 um 19:47

    Wenn du denkst, dass du es ohne Hilfe nicht hin bekommst, dann stelle ich mich gerne zur Verfügung...

  • "Lesbarkeit auf dem Bildschirm erleichtern" zerstört meine GUI

    • Bitnugger
    • 23. Oktober 2016 um 17:10

    Hier mal meine Version von GetDPI()...

    GetDPI-DEMO
    AutoIt
    #include-once
    #include <GetDPI.au3>
    #include <GUIConstants.au3>
    
    
    ;-- TIME_STAMP   2016-10-23 16:38:52
    
    
    Local $hGUI = GUICreate("My GUI", 1200, 500, 10, 100)
    _GUISetFontEx(96, 48, 400, 0, 'Comic Sans MS')	; ,$hGUI
    Local $idLabel_1 = GUICtrlCreateLabel("The quick brown fox jumps over the lazy dog", 10, 10, 380, 500)
    
    
    _GUISetFontEx(115,48, 400, 0, 'Arial')
    Local $idLabel_2 = GUICtrlCreateLabel("The quick brown fox jumps over the lazy dog", 410, 10, 380, 500)
    
    
    Local $idLabel_3 = GUICtrlCreateLabel("The quick brown fox jumps over the lazy dog", 820, 10, 380, 500)
    _GUICtrlSetFontEx(148, $idLabel_3, 48, 400, 0, 'Arial')
    
    
    Local $idLabel_4 = GUICtrlCreateLabel("The quick brown fox jumps over the lazy dog", 10, 440, 460, 500)
    _GUICtrlSetFontEx(512, $idLabel_4, 48, 400, 4, 'Courier New')
    
    
    GUISetState(@SW_SHOW)
    
    
    Sleep(2000)
    _GUICtrlSetFontEx( 96, $idLabel_1, 48, 400,  4, 'Courier New')
    Sleep(1000)
    _GUICtrlSetFontEx(115, $idLabel_2, 48, 400,  8, 'Times')
    Sleep(500)
    _GUICtrlSetFontEx(248, $idLabel_3, 48, 400,  2, 'Tahoma')
    Sleep(250)
    _GUICtrlSetFontEx( -1, $idLabel_4, 48, 400, 14, 'MS Serif')
    
    
    While 1
    	$msg = GUIGetMsg()
    	If $msg = $GUI_EVENT_CLOSE Then
    		ExitLoop
    	EndIf
    WEnd
    Alles anzeigen
    GetDPI
    AutoIt
    ;-- TIME_STAMP   2016-10-23 16:56:38
    
    
    Global $g_aDPI[4] = [96, 96, -1, -1]
    
    
    Func _GetDPI($iDPIDef = 96)
    	If $iDPIDef <> -1 Or $g_aDPI[3] = -1 Then
    		Local $iDPI, $LOGPIXELSY = 90, $hWnd = 0, $hDC, $aRet
    		$aRet = DllCall("user32.dll", "long", "GetDC", "long", $hWnd)
    		$hDC = $aRet[0]
    		$aRet = DllCall("gdi32.dll", "long", "GetDeviceCaps", "long", $hDC, "long", $LOGPIXELSY)
    		$iDPI = $aRet[0]
    		$aRet = DllCall("user32.dll", "long", "ReleaseDC", "long", $hWnd, "long", $hDC)
    		$g_aDPI[0] = $iDPI
    		$g_aDPI[1] = $iDPIDef
    		$g_aDPI[2] = $iDPIDef / $iDPI
    		$g_aDPI[3] = $iDPI / $iDPIDef
    	EndIf
    	ConsoleWrite(StringFormat('+ $g_aDPI[0]: %3d    $g_aDPI[1]: %3d (%3d)    $g_aDPI[2]: %f    $g_aDPI[3]: %f\n', _
    		$g_aDPI[0], $g_aDPI[1], $iDPIDef, $g_aDPI[2], $g_aDPI[2]))
    EndFunc   ;==>_GetDPI
    
    
    Func _GUICtrlSetFontEx($iDPI = -1, $icontrolID = -1, $iSize = 8.5, $iweight = 400, $iattribute = 0, $sfontname = Default, $iquality = 2)
    	_GetDPI($iDPI)
    	GUICtrlSetFont($icontrolID, $iSize / $g_aDPI[2], $iweight, $iattribute, $sfontname, $iquality)
    EndFunc   ;==>_GUICtrlSetFont_Ex
    
    
    Func _GUISetFontEx($iDPI = -1, $iSize = 8.5, $iweight = 400, $iattribute = 0, $sfontname = Default, $hWnd = Default, $iquality = 2)
    	_GetDPI($iDPI)
    	Local $iSuccess = GUISetFont($iSize / $g_aDPI[2], $iweight, $iattribute, $sfontname, HWnd($hWnd), $iquality)
    EndFunc   ;==>_GUISetFont_Ex
    Alles anzeigen

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™