zu 1. Netzwerkadapter vom Netz trennen
zu 2. _IEPropertyGet($oIE, "locationurl")
Beiträge von BugFix
-
-
Ich mag es gar nicht, wenn in steter Regelmäßigkeit die Bot-Problematik hochgekocht wird.
Das Bsp. Solitaire ist im Grenzbereich. Ich habe früher jede Manipulation verdammt, inzwischen sage ich mir: Wenn derjenige sich selbst ein X für ein U vormacht, solls mir egal sein, solange daraus keine Vorteilsnahme oder Verstöße gegen bestehende Bestimmungen/Gesetze entstehen.
Aus diesem Grund halte ich mich hier zurück (Auch wenn ich das schonmal anders betrachtet habe, ich werde auch älter und ruhiger).
@No0oB: Du solltest hier aber bitte auch den Ball flach halten und das nicht weiter forcieren. Und damit, hoffe ich, ist das Thema erledigt. -
Das ging problemlos, z.B. mit dBase, als die Welt noch aus 80 Spalten und 25 Zeilen bestand und keine TrueType-Fonts verwendet wurden.

Heutzutage ist der Druckvorgang nicht mehr so easy. Ein direkter, platzierter Druck in der Form _print(Startpixel_X, Startpixel_Y) ist per AutoIt nicht machbar. Du kannst aber z.B. über den Weg eines html-Dokuments den Ausdruck gestalten. Schau mal bei den Skripten unter Galenda, dort wurde das umgesetzt. -
Windows endet für mich bei XP.

Aber knall mal ein Require Admin rein, könnte evtl. helfen. -
Dazu hatte ich mal das erstellt: _GetAllNetworkAdapter()
Und hier begrenzt für Enabled-Adapter: Konfiguration Netzwerkadapter
-
95% der hier gestellten Fragen lassen sich sowieso mit einer Investition von 5min in der AutoIT Hilfe lösen
Das kann ich nicht unwidersprochen lassen:
Wenn dir aufgrund des Hilfe-Studiums ja längst klar sein mußte, dass es für deine Frage keine Lösung gibt - wieso stellst du die dann?!
-
Ich würde mal vorschlagen, das hier zu beenden (ohne das ich den Thread closen muß).
Ich sehe hier für niemanden einen Erkenntnisgewinn. -
Alles zu kompliziert
[autoit]
- es wird doch einfach die 3. Zeile benötigt. Hierbei ist es völlig egal ob LF oder CRLF als Zeilenumbruch agieren.$ret = StringRegExp($text, '.+', 3)
[/autoit]
ConsoleWrite($ret[2] & @CRLF) -
Wenn der Kunde sowieso in Excel arbeitet, warum verwendest du dann nicht VBA? Du kannst dir innerhalb von Excel deine Eingabemasken erstellen, eigene Controls aufsetzen etc. etc..
Dazu benötigst du nicht mal VBA-Kenntnisse, läßt sich alles direkt in Excel basteln.
- Alt+F11 öffnet den VBA-Editor
- mit <Einfügen> <UserForm> öffnet sich ein GUI-Designer ähnlich Koda
Alles weitere kannst du dann selber austesten.Edit:
Natürlich kannst du auch die interne Datenbankfunktion nutzen: Menü "Daten" - "Maske"
-
Ich hab dir mal eine Lösung gebastelt.
Ersetze als erstes in der "LV_Format_include.au3" die Funktion WM_NOTIFY_LV_FORMAT mit der folgenden Version (Änderungen habe ich kenntlich gemacht):
Spoiler anzeigen
[autoit]Func WM_NOTIFY_LV_FORMAT($hWnd, $Msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
For $i = 0 To UBound($aHWnd) -1
If $hWndFrom = $aHWnd[$i] Then
Switch $iCode
Case $LVN_COLUMNCLICK
Local $tInfo = DllStructCreate($tagNMLISTVIEW, $lParam)
__GUICtrlListView_SimpleSort($hWndFrom, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))
Case $NM_CUSTOMDRAW
If Not _GUICtrlListView_GetViewDetails($hWndFrom) Then Return $GUI_RUNDEFMSG
Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
Local $iDrawStage, $iItem, $iSubitem, $hDC, $tRect
$iDrawStage = DllStructGetData($tCustDraw, 'dwDrawStage')
Switch $iDrawStage
Case $CDDS_ITEMPREPAINT
Return $CDRF_NOTIFYSUBITEMDRAW
Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM)
$iItem = DllStructGetData($tCustDraw, 'dwItemSpec')
$iSubitem = DllStructGetData($tCustDraw, 'iSubItem')
Local $index = __getMarked($hWndFrom, $iItem, $iSubitem)
If $index = -1 Then
__DrawDefault($hDC, $tCustDraw)
Else
__DrawItemCol($hDC, $tCustDraw, $hWndFrom, $index, $iSubitem)
EndIf
Return $CDRF_NEWFONT
EndSwitch; ######## zusätzliche Ereignisse verwalten
[/autoit] [autoit][/autoit] [autoit]
Case $NM_RCLICK
Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
Local $aInfo[9] = [True,$hWndFrom, DllStructGetData($tInfo, "Index"), DllStructGetData($tInfo, "SubItem")]
If $aInfo[2] < 0 Then
$aInfo[0] = False
Return $GUI_RUNDEFMSG
EndIf
Local $isFormatted = __getMarked($hWndFrom, $aInfo[2], $aInfo[3]) ; bereits formatiert ?
If $isFormatted = -1 Then
For $i = 4 To 8
$aInfo[$i] = -1
Next
Else ; bereits gesetzte Formatierung auslesen
$aInfo[4] = $aIParam[$aInfo[2]][$aInfo[3]+1][0]
$aInfo[5] = $aIParam[$aInfo[2]][$aInfo[3]+1][1]
$aInfo[6] = $aIParam[$aInfo[2]][$aInfo[3]+1][2]
$aInfo[7] = $aIParam[$aInfo[2]][$aInfo[3]+1][3]
$aInfo[8] = $aIParam[$aInfo[2]][$aInfo[3]+1][4]
EndIf
; $aItemIndex als Globale Variable im Hauptskript deklarieren
If Not IsDeclared('aItemIndex') Then Global $aItemIndex ; falls nicht deklariert
$aItemIndex = $aInfo
; weitere Verarbeitung erfolgt im Hauptskript
; ######## Ende zusätzliche EreignisseEndSwitch
[/autoit]
EndIf
Next
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY_LV_FORMAT
Und hier nun das Bsp.-Skript. Per Rechtsklick wird eine Einstell-GUI mit Einstellparametern geöffnet. Wenn die angeklickte Zelle bereits formatiert ist, werden diese Werte in der Einstell-GUI angezeigt.
Beim Schliessen der Einstell-GUI wird die Formatierung ausgeführt.
Wichtig:
Innerhalb der WM_NOTIFY nur die erforderlichen Werte ermitteln und dann schnellstmöglich diese Funktion verlassen. Deshalb hier auch Übergabe der Werte in ein Array, welches per AdlibEnable abgefragt wird.Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GuiListView.au3>
#include <EditConstants.au3>
#include <LV_Format_include.au3>Local $col = ''
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To 6
$col &= $i & '|'
Next$GUI = GUICreate('')
[/autoit] [autoit][/autoit] [autoit]
$lv = GUICtrlCreateListView(StringTrimRight($col,1), 10, 10, 300, 150)
$hLV = GUICtrlGetHandle($lv)
For $i = 0 To 5
_GUICtrlListView_SetColumnWidth($hLV, $i, 49)
Next
$col = StringTrimRight($col, 2)
$lv2 = GUICtrlCreateListView(StringTrimRight($col,1), 10, 180, 300, 150)
$hLV2 = GUICtrlGetHandle($lv2)
For $i = 0 To 4
_GUICtrlListView_SetColumnWidth($hLV2, $i, 59)
Next; initialize Global vars
[/autoit] [autoit][/autoit] [autoit]
; for more than one Listview commit Listview handle as array
Local $aHWnd[2] = [$hLV,$hLV2]
_GUICtrlListView_Formatting_Startup($GUI, $aHWnd); add new Items
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_AddOrIns_Item($hLV, 'Test0|Test1|Test2|Test3|Test4|Test5')
_GUICtrlListView_AddOrIns_Item($hLV, 'Blub0|Blub1|Blub2|Blub3|Blub4|Blub5')
_GUICtrlListView_AddOrIns_Item($hLV, 'Club0|Club1|Club2|Club3|Club4|Club5')
_GUICtrlListView_AddOrIns_Item($hLV, 'Blab0|Blab1|Blab2|Blab3|Blab4|Blab5')
_GUICtrlListView_AddOrIns_Item($hLV, 'Bumm0|Bumm1|Bumm2|Bumm3|Bumm4|Bumm5')
; set format
_GUICtrlListView_FormattingCell($hLV, 0, 2, 0xff0000, -1, -1, 600, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLV, 1, 4, 0xffff00, -1, -1, 600, 'Comic Sans MS')
_GUICtrlListView_FormattingCell($hLV, 1, 3, 0xff0000, -1, -1, 600, 'Times New Roman'); add new Items
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_AddOrIns_Item($hLV2, 'Test0|Test1|Test2|Test3|Test4')
_GUICtrlListView_AddOrIns_Item($hLV2, 'Blub0|Blub1|Blub2|Blub3|Blub4')
_GUICtrlListView_AddOrIns_Item($hLV2, 'Club0|Club1|Club2|Club3|Club4')
_GUICtrlListView_AddOrIns_Item($hLV2, 'Blab0|Blab1|Blab2|Blab3|Blab4')
_GUICtrlListView_AddOrIns_Item($hLV2, 'Bumm0|Bumm1|Bumm2|Bumm3|Bumm4')
; set format
_GUICtrlListView_FormattingCell($hLV2, 0, 2, 0xff0000, -1, -1, 600, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLV2, 1, 4, 0xffff00, -1, -1, 600, 'Comic Sans MS')
_GUICtrlListView_FormattingCell($hLV2, 1, 3, 0xff0000, -1, -1, 600, 'Times New Roman')GUISetState(@SW_SHOW, $GUI)
[/autoit] [autoit][/autoit] [autoit]Global $aItemIndex ; wird als Array in WM_NOTIFY befüllt bei Rechtsklick
[/autoit] [autoit][/autoit] [autoit]GUICtrlCreateLabel('Mit Rechtsklick auf ein einzelnes Element' & @LF & 'wird Formatierungs-GUI geladen', 10, 350, 300, 40)
[/autoit] [autoit][/autoit] [autoit]
$GUI_Format = GUICreate('Formatierung setzen', 200, 180)
GUICtrlCreateLabel(' Control | Index Zeile | Spalte', 10, 10, 180, 17)
$ctrl = GUICtrlCreateInput('', 10, 30, 85, 20, $ES_READONLY)
$zeile = GUICtrlCreateInput('', 100, 30, 30, 20, BitOR($ES_READONLY,$ES_RIGHT))
$spalte = GUICtrlCreateInput('', 135, 30, 30, 20, BitOR($ES_READONLY,$ES_RIGHT))
GUICtrlCreateLabel(' BkColor | TextColor | Size', 10, 70, 180, 17)
$inBkCol = GUICtrlCreateInput('-1', 10, 90, 55, 20, $ES_RIGHT)
$inTxtCol = GUICtrlCreateInput('-1', 75, 90, 55, 20, $ES_RIGHT)
$inSize = GUICtrlCreateInput('-1', 140, 90, 50, 20, $ES_RIGHT)
GUICtrlCreateLabel(' Weight | Font', 10, 130, 150, 17)
$inWeight = GUICtrlCreateInput('-1', 10, 150, 50, 20, $ES_RIGHT)
$inFont = GUICtrlCreateInput('-1', 75, 150, 115, 20, $ES_RIGHT)AdlibEnable('_isRightClick')
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg(1)
Switch $msg[1]
Case $GUI
If $msg[0] = -3 Then ExitLoop
Case $GUI_Format
If $msg[0] = -3 Then
GUISetState(@SW_HIDE, $GUI_Format)
_setFormat()
EndIf
EndSwitch
WEnd
; clear ressources
_GUICtrlListView_Formatting_Shutdown()Func _isRightClick()
[/autoit] [autoit][/autoit] [autoit]
If Not IsArray($aItemIndex) Then Return
If Not $aItemIndex[0] Then Return
$aItemIndex[0] = False ; wurde geklickt, Status zurück auf nicht geklickt
GUICtrlSetData($ctrl, $aItemIndex[1])
GUICtrlSetData($zeile, $aItemIndex[2])
GUICtrlSetData($spalte, $aItemIndex[3])
Local $bk = $aItemIndex[4]
If $bk = -1 Then
GUICtrlSetData($inBkCol, $bk)
Else
GUICtrlSetData($inBkCol, '0x' & Hex($bk,6))
EndIf
Local $tx = $aItemIndex[5]
If $tx = -1 Then
GUICtrlSetData($inTxtCol, $tx)
Else
GUICtrlSetData($inTxtCol, '0x' & Hex($tx,6))
EndIf
GUICtrlSetData($inSize, $aItemIndex[6])
GUICtrlSetData($inWeight, $aItemIndex[7])
GUICtrlSetData($inFont, $aItemIndex[8])
GUISetState(@SW_SHOW, $GUI_Format)
EndFuncFunc _setFormat()
[/autoit]
Local $bk = GUICtrlRead($inBkCol)
Local $tx = GUICtrlRead($inTxtCol)
Local $sz = GUICtrlRead($inSize)
Local $wt = GUICtrlRead($inWeight)
Local $ft = GUICtrlRead($inFont)
If $bk = '' Or $tx = '' Or $sz = '' Or $wt = '' Or $ft = '' Then Return
_GUICtrlListView_FormattingCell($aItemIndex[1], $aItemIndex[2], $aItemIndex[3], $bk, $tx, $sz, $wt, $ft)
EndFunc -
Liegt das Problem in GUIRegisterMs()?
Genau da liegt der Hund begraben. Diese Message wird ja bereits mit _GUICtrlListView_Formatting_Startup() innerhalb des Include verwendet. Wenn du also andere Aktionen in Auswertung von WM_NOTIFY nutzen möchtest, mußt du dies innerhalb des Includes einbauen. Eine andere Möglichkeit das zu Lösen ist in Planung, aber vorläufig noch nicht verfügbar. -
Noch schnell vor Tagesschluss auch von mir ein
Happy Birthday
-
Puuh, du hast da ganz schön was durcheinander gemixt.

In mei ner Listview-Format UDF ist das ganze WM_Message-Gedöns in ein Include ausgelagert.
Wenn du damit arbeitest, gehst du ähnlich vor, wie bei GDI+
- Startup
- Einträge erstellen
- Einträge formatieren
- am Skriptende ShutdownRaupi hat den entsprechenden Link geposted. Das dortige Bsp. kannst du für deinen Bedarf anpassen.
-
Lad dir eine Boot-CD runter. (gibt es für 32 und 64 Bit System frei zum Download)
Evtl. Masterbootrecord im Ar... - läßt sich damit schnell rekonstruieren. Anleitungen kannst du per Google holen. -
Jetzt weiß ich nur das er mein ContinueLoop übersieht obwohl die Voraussetzung (pixelget) erfüllt ist.
Du mußt schon konkreter werden.
Wird dir denn in die Console 'ContinueLoop1 .. 10' (was grade zutrifft) ausgegeben? Wenn ja, dann beginnt anschließend die Schleife von vorn. 100 % sicher. Du kannst dir zusätzlich noch einen Zähler für die Schleifendurchläufe einbauen und ausgeben lassen. Nur wenn bei jedem Durchlauf alle "ContinueLoop1..10" ausgegeben werden, wäre der Fall eingetreten, dass die ContinueLoop nicht ausgeführt werden. Das aber, kann nicht eintreten.
Ich nehme eher an, du hast eine falsche Abfragelogik und rechnest mit einem Ergebnis, dass niemals eintreten kann. Das können wir allerdings nicht sehen, da wir keine Ahnung haben ob dein Farbenspiel korrekt ist. -
Du mußt mal alle Schritte debuggen, dann siehst du, wo die Loops stattfinden.
Spoiler anzeigen
[autoit]While 1
[/autoit]
MsgBox (0,"message", "20cent")
MouseClick ( "left", 334 , 660, 2 )
MouseClick ( "left", 511 , 674 )
MouseClick ( "left", 670 , 568 )
MouseClick ( "left", 299 , 635 )
Sleep ( 13000 )
MouseClick ( "left", 334 , 660 )
If PixelGetColor( 298, 522 ) = "0x000000" Then
ConsoleWrite('ContinueLoop 1' & @CRLF)
ContinueLoop
EndIf
MsgBox (0,"message", "40cent")
MouseClick ( "left", 511 , 674 )
MouseClick ( "left", 670 , 568 )
MouseClick ( "left", 299 , 635 )
Sleep ( 13000 )
MouseClick ( "left", 334 , 660 )
If PixelGetColor( 298, 522 ) = "0x000000" Then
ConsoleWrite('ContinueLoop 2' & @CRLF)
ContinueLoop
EndIf
MsgBox (0,"message", "80cent")
MouseClick ( "left", 511 , 674 )
MouseClick ( "left", 670 , 568, 2 )
MouseClick ( "left", 299 , 635 )
Sleep ( 13000 )
MouseClick ( "left", 334 , 660 )
If PixelGetColor( 298, 522 ) = "0x000000" Then
ConsoleWrite('ContinueLoop 3' & @CRLF)
ContinueLoop
EndIf
MsgBox (0,"message", "1,60")
MouseClick ( "left", 511 , 674 )
MouseClick ( "left", 670 , 568, 4 )
MouseClick ( "left", 299 , 635 )
Sleep ( 13000 )
MouseClick ( "left", 334 , 660 )
if PixelGetColor( 298, 522 ) = "0x000000" Then
ConsoleWrite('ContinueLoop 4' & @CRLF)
ContinueLoop
EndIf
MsgBox (0,"message", "3,20")
MouseClick ( "left", 511 , 674 )
MouseClick ( "left", 670 , 568, 8 )
MouseClick ( "left", 299 , 635 )
Sleep ( 13000 )
MouseClick ( "left", 334 , 660 )
if PixelGetColor( 298, 522 ) = "0x000000" Then
ConsoleWrite('ContinueLoop 5' & @CRLF)
ContinueLoop
EndIf
MsgBox (0,"message", "6,40")
MouseClick ( "left", 511 , 674 )
MouseClick ( "left", 670 , 568, 16 )
MouseClick ( "left", 299 , 635 )
Sleep ( 13000 )
MouseClick ( "left", 334 , 660 )
If PixelGetColor( 298, 522 ) = "0x000000" Then
ConsoleWrite('ContinueLoop 6' & @CRLF)
ContinueLoop
EndIf
MsgBox (0,"message", "12,80")
MouseClick ( "left", 511 , 674 )
MouseClick ( "left", 670 , 568, 32 )
MouseClick ( "left", 299 , 635 )
Sleep ( 13000 )
MouseClick ( "left", 334 , 660 )
If PixelGetColor( 298, 522 ) = "0x000000" Then
ConsoleWrite('ContinueLoop 7' & @CRLF)
ContinueLoop
EndIf
MsgBox (0,"message", "25,60")
MouseClick ( "left", 511 , 674 )
MouseClick ( "left", 670 , 568, 64 )
MouseClick ( "left", 299 , 635 )
Sleep ( 13000 )
MouseClick ( "left", 334 , 660 )
If PixelGetColor( 298, 522 ) = "0x000000" Then
ConsoleWrite('ContinueLoop 8' & @CRLF)
ContinueLoop
EndIf
MsgBox (0,"message", "51,20")
MouseClick ( "left", 511 , 674 )
MouseClick ( "left", 670 , 568, 124 )
MouseClick ( "left", 299 , 635 )
Sleep ( 13000 )
MouseClick ( "left", 334 , 660 )
If PixelGetColor( 298, 522 ) = "0x000000" Then
ConsoleWrite('ContinueLoop 9' & @CRLF)
ContinueLoop
EndIf
MsgBox (0,"message", "100")
MouseClick ( "left", 511 , 674 )
MouseClick ( "left", 670 , 568, 265 )
MouseClick ( "left", 299 , 635 )
Sleep ( 13000 )
MouseClick ( "left", 334 , 660 )
If PixelGetColor( 298, 522 ) = "0x000000" Then
ConsoleWrite('ContinueLoop 10' & @CRLF)
ContinueLoop
EndIf
MsgBox (0,"message", "100")
MouseClick ( "left", 511 , 674 )
MouseClick ( "left", 670 , 568 )
MouseClick ( "left", 299 , 635 )
Sleep ( 13000 )
MouseClick ( "left", 334 , 660 )
;~ If Not PixelGetColor( 298, 522 ) = "0x000000" Then ContinueLoop (1) ; <== unnütz, da Schleife sowieso am Ende von vorn beginnt
WEnd -
@ SEuBo : Und wo hast du da den Doppelklick?
-
[autoit]
Switch $x ; eine Variable wird überprüft
[/autoit][autoit][/autoit][autoit]
Case 1
; Code
Case 2,3,4
; Code
Case < 9
; Code
EndSwitchSelect ; verschiedene Variablen können überprüft werden
[/autoit]
Case $m = 3
; Code
Case $x = 6
; Code
Case $s = 'Hallo'
; Code
EndSelect -
Und wo ist die Fehlermeldung?
-
Du brauchst das Registrieren der GUIMessage und die registrierte Funktion:
[autoit]GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
[/autoit][autoit][/autoit][autoit][/autoit][autoit]Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit]
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
If Not IsHWnd($hListBox) Then $hWndListBox = GUICtrlGetHandle($hListBox)
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
$iCode = BitShift($iwParam, 16) ; Hi Word
Switch $hWndFrom
Case $hListBox, $hWndListBox
Switch $iCode
Case $LBN_DBLCLK ; Sent when the user double-clicks a string in a list box
; Funktion für DoubleClick ausführen
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND