Beiträge von Kanashius
-
-
Du hattest ja nach Java gefragt.
Ich hab das mal umgesetzt. Es können die letzten Transaktionen, Die Richlist sowie die Summary, also das was immer oben steht, gespeichert werden.
Normal öffnet sich ein Fenster, in dem upgedated werden kann, es kann aber auch mit Konsole gestartet werden. (-nogui) verhindert das Fenster, falls du nur die Daten updaten willst.
einfach das Programm mit dem Argument "man" aufrufen, dann wird die hilfe angezeigt.
Ansonsten hab ich Momentan nur eine Anzeige im Textarea. Da kann ich auch ne Liste raus machen, falls du das Fenster benutzen willst.
Gespeichert wird alles in einer sqlite Datenbank.
(Transaktionen werden noch nicht angezeigt, sondern nur in der Datenbank gespeichert.)
Da die Datei für die Webseite hier zu groß ist: http://www.kanashius.de/Downloads/BlockExplorerStats.jar
Den Sourcecode liefer ich evtl. nach, wenn er leserlicher ist
Sind eh 750 Zeilen in 10 Dateien
Für heute hab ich erstmal genug programmiert ,
MfG Kanashius
-
Pff... langweilier, wenn dann wird per Hand gezählt
-
Schau dir das hier mal an
AutoIt
Alles anzeigenMsgBox(48,"",_getBinaryString(8)&@TAB&_getBit(8,32,3)) MsgBox(48,"",_getBinaryString(8)&@TAB&_getBit(8,32,4)) ;=============================================================================== ; ; Function Name: _getBit() ; Description: Gets one Bit of a Value ; Parameter(s): $value : Value to get Bit from ; $maxValue : Max amount of bits from Value ; $bitcount : Bit Number to get, counted from 0 to $maxValue, from the right side (lowest Bit first) ; Requirement(s): none. ; Return Value(s): bit as 0 or 1 ; Author(s): Kanashius ; ;=============================================================================== Func _getBit($value,$max,$bitcount) $res=BitAND($value,2^$bitcount) return $res>0?1:0 EndFunc ;=============================================================================== ; ; Function Name: _getBinaryString() ; Description: Gets all Bits of a Value ; Parameter(s): $value : Value to get Bit from ; $maxValue : Max amount of bits from Value ; Requirement(s): none. ; Return Value(s): bits as 0 or 1 String ; Author(s): Kanashius ; ;=============================================================================== Func _getBinaryString($value,$count=32) local $result="" for $i=0 to $count-1 step 1 $result=_getBit($value,$count,$i)&$result next return $result EndFunc
MfG Kanashius
-
Ansonsten kann ich mir gut vorstellen, dass erst die grafische Oberfläche gestartet wird.
Server laufen meistens ohne, da sie dort nicht benötigt wird.Erst wenn man sich mit remote,... anmeldet, wird sie gestartet. Willst du dort ein Fenster fernsteuern muss die Oberfläche gestartet werden -> Wartezeit
Probier mal, was passiert, wenn du das erste startest und dann nach den 20 Sekunden ein weiteres.
-
Keine Ahnung, ob es ein Fehler ist, aber seit wann ist die Beitragslänge begrenzt?
Wollte gerade bei Oscar das Ergebnis der Monitorinfos posten, da bekomme ich die Meldung, dass nicht mehr als 10000 Zeichen erlaubt sind.
Wenn ich mich nicht irre habe ich früher schon deutlich längere Nachrichten gepostet.
Insbesondere, wenn längerer Quellcode dabei war...
-
Falls du nur auf nen Mausklick reagieren willst, aber nicht blockieren, bietet sich noch _isPressed() an :).
Dabei spielt das Fenster keine Rolle.
-
Ich konnte mir das Script kaum mit ansehen und hab es mal komplett überarbeitet.
Schau dir das am besten einfach mal an, davon kannst du dir vielleicht den ein oder anderen Trick abschauen
Bis auf das SQL funktioniert dort auch alles
AutoIt
Alles anzeigen#include <array.au3> ;#include <MySQL.au3> #include <ListViewConstants.au3> #include <GuiListView.au3> #include <GUIConstantsEx.au3> #include <ButtonConstants.au3> #include <GUIListBox.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GuiStatusBar.au3> #include <MsgBoxConstants.au3> #include <EditConstants.au3> Global $iArticleWidth=800,$iArticleHeight=600,$hArticleGui=-1,$hLVArticle Global $iArticleInfoWidth=500,$hArticleInfoGui=-1,$hButtonArticleInfoChangeAmount,$arInputsArticleInfo[0] Global $arArticleInfoLabelTexts=["Barcode","Name","Menge","SicherBestand","Hersteller","Verfalldatum","Kategorie"] Global $hAmountGui=-1,$arAmountButtons[10],$hAmountInput,$hAmountButtonC,$hAmountAdd,$hAmountSub local $arExampleItems=[["1","Artikel1","5","3","HP","01.12.2015","1","1"],["2","Artikel1","10","3","HP","01.12.2012","1","1"]] _viewArticles($arExampleItems) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") While 1 $arMsg = GUIGetMsg($GUI_EVENT_ARRAY) Switch $arMsg[1] Case $hArticleGui Switch $arMsg[0] case $GUI_EVENT_CLOSE _guiCloseArticle() exit EndSwitch Case $hArticleInfoGui Switch $arMsg[0] case $GUI_EVENT_CLOSE _guiCloseArticleInfo() case $hButtonArticleInfoChangeAmount _showAmountField() EndSwitch Case $hAmountGui If $arMsg[0]=$GUI_EVENT_CLOSE Then _guiCloseAmount() for $i=0 to UBound($arAmountButtons)-1 step 1 If $arMsg[0]=$arAmountButtons[$i] Then GUICtrlSetData($hAmountInput,GUICtrlRead($hAmountInput)&$i) next If $arMsg[0]=$hAmountButtonC Then GUICtrlSetData($hAmountInput,StringTrimRight(GuiCtrlRead($hAmountInput),1)) If $arMsg[0]=$hAmountAdd Then ;zubuchen GUICtrlSetData($arInputsArticleInfo[2],Int(GUICtrlRead($arInputsArticleInfo[2]))+Int(GUICtrlRead($hAmountInput))) _guiCloseAmount() EndIf If $arMsg[0]=$hAmountSub Then ;abbuchen GUICtrlSetData($arInputsArticleInfo[2],Int(GUICtrlRead($arInputsArticleInfo[2]))-Int(GUICtrlRead($hAmountInput))) _guiCloseAmount() EndIf EndSwitch WEnd Func _guiCloseArticle() GUIDelete($hArticleGui) $hArticleGui=-1 EndFunc Func _guiCloseArticleInfo() GUIDelete($hArticleInfoGui) $hArticleInfoGui=-1 EndFunc Func _guiCloseAmount() GUIDelete($hAmountGui) $hAmountGui=-1 EndFunc Func _viewArticles($arItems) $hArticleGui=GUICreate("Artikelübersicht",$iArticleWidth,$iArticleHeight,-1,-1,BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX),$WS_EX_WINDOWEDGE) GUISetFont(10,400,0,"Arial",$hArticleGui) $hLVArticle=GUICtrlCreateListView("ID|Artikelname|Vorhande Menge|Sicherheits-Bestand|Hersteller|Verfalldatum|Artikelnummer|Kategorie",5,5,$iArticleWidth-10,$iArticleHeight-10, _ BitOr($LVS_SHOWSELALWAYS,$LVS_SINGLESEL), BitOR($LVS_EX_FULLROWSELECT, $WS_EX_CLIENTEDGE, $LVS_EX_DOUBLEBUFFER, $LVS_EX_SNAPTOGRID)) _GUICtrlListView_SetColumnWidth($hLVArticle,0,$LVSCW_AUTOSIZE) For $i=0 To UBound($arItems)-1 Step 1 GUICtrlCreateListViewItem($arItems[$i][0]&"|"&$arItems[$i][1]&"|"&$arItems[$i][2]&"|"&$arItems[$i][3]&"|"&$arItems[$i][4]&"|"&$arItems[$i][5]&"|"&$arItems[$i][6]&"|"&$arItems[$i][7],$hLVArticle) Next GUISetState(@SW_SHOW,$hArticleGui) EndFunc Func _viewArticleWithID($id) local $arData=["Artikel1","5","3","HP","01.12.2015","2","2"] local $iHeight=5+30*(UBound($arArticleInfoLabelTexts)+1)+5 $hArticleInfoGui=GUICreate("Artikel",$iArticleInfoWidth,$iHeight,-1,-1,BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX),$WS_EX_WINDOWEDGE,$hArticleGui) GUISetFont(10, 400, 0, "Arial",$hArticleInfoGui) ReDim $arInputsArticleInfo[UBound($arArticleInfoLabelTexts)] for $i=0 to UBound($arArticleInfoLabelTexts)-1 step 1 GUICtrlCreateLabel($arArticleInfoLabelTexts[$i],5,5+30*$i,($iArticleInfoWidth-15)/2,25) $arInputsArticleInfo[$i]=GUICtrlCreateInput($arData[$i],5+(($iArticleInfoWidth-15)/2),5+30*$i,($iArticleInfoWidth-15)/2,25) If $i=0 Then GUICtrlSetStyle(-1,$ES_READONLY) next $hButtonArticleInfoChangeAmount=GUICtrlCreateButton("Menge ändern",5,$iHeight-30,$iArticleInfoWidth-10,25) GUISetState(@SW_SHOW,$hArticleInfoGui) EndFunc Func _showAmountField() local $iAmountWidth=450,$iAmountHeight=400,$iFieldWidth=$iAmountWidth-100,$iFieldHeight=$iAmountHeight-30 $hAmountGui=GUICreate("Mengenfenster",$iAmountWidth,$iAmountHeight,-1,-1,-1,-1,$hArticleInfoGui) $hAmountInput=GUICtrlCreateInput("",5,5,$iAmountWidth-10,30) GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif") for $i=0 to 2 step 1 for $j=0 to 2 step 1 $arAmountButtons[1+$j*3+$i]=GUICtrlCreateButton(1+$j*3+$i,5+(($iFieldWidth-10)/3)*$i,35+(($iFieldHeight-10)/4)*$j,($iFieldWidth-10)/3,($iFieldHeight-10)/4) next next $arAmountButtons[0]=GUICtrlCreateButton("0",5+(($iFieldWidth-10)/3)*1,35+(($iFieldHeight-10)/4)*3,($iFieldWidth-10)/3,($iFieldHeight-10)/4) $hAmountButtonC=GUICtrlCreateButton("C",5+(($iFieldWidth-10)/3)*2,35+(($iFieldHeight-10)/4)*3,($iFieldWidth-10)/3,($iFieldHeight-10)/4) $hAmountAdd=GUICtrlCreateButton("Zu",$iAmountWidth-85,($iAmountHeight-10)/2-($iFieldWidth-10)/3,80,($iFieldWidth-10)/3) $hAmountSub=GUICtrlCreateButton("Ab",$iAmountWidth-85,($iAmountHeight-10)/2,80,($iFieldWidth-10)/3) GUISetState(@SW_SHOW,$hAmountGui) EndFunc Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) #forceref $hWnd, $iMsg, $iwParam Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndTab, $iTab $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case GUICtrlGetHandle($hLVArticle) Switch $iCode Case $NM_CLICK $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam) If DllStructGetData($tInfo, "Index")<>-1 Then _viewArticleWithID(_GUICtrlListView_GetItemText($hLVArticle,DllStructGetData($tInfo, "Index"),0)) EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY
MfG Kanashius
-
Zu der Lösung von Musashi :
Als ich vor ein paar Tagen 7zip genutzt hab viel mir auf, dass die 7za.exe nicht mit rar-Dateien funktioniert. Um diese zu entpacken muss die 7z.exe genutzt werden.
Die Konsolenbefehle sind die gleichen. Um es unsichtbar zu machen, einfach ShellExecute mit @SW_HIDE zum aufrufen nutzen
-
Hilft dir das hier weiter? (Google: AutoIt SQL)
-
Ich hab noch 2 von den reservierten Paketen fertig, die anderen fehlen noch. Ich versuch morgen noch den Rest zu schaffen
Werd die dann hier anhängen
-
ColumnWidth steht ja schon dort.
Sortieren würde ich direkt schon über die SQL-Abfrage. Das sollte schneller gehen:
Stichwort ORDER BY: https://www.w3schools.com/sql/sql_orderby.asp
Was das auswerten des klicks angeht:
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
und das entsprechend auswerten:
AutoIt
Alles anzeigenFunc WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) #forceref $hWnd, $iMsg, $iwParam Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndTab, $iTab $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case GUICtrlGetHandle($hListViewPacket) Switch $iCode Case $NM_CLICK $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam) If DllStructGetData($tInfo, "Index")<>-1 Then ConsoleWrite(_GUICtrlListView_GetItemText($hListViewPacket,DllStructGetData($tInfo, "Index"),0)&@crlf) EndSwitch Case GUICtrlGetHandle($hListViewFunction) Switch $iCode Case $NM_DBLCLK $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam) If DllStructGetData($tInfo, "Index")<>-1 Then ConsoleWrite(DllStructGetData($tInfo, "Index")&@crlf) EndIf EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY
Wenn du wissen willst, was da noch alles geht schau dir mal das Beispiel unter _GUICtrlListView_Create genauer an. Dort sind alle Messagecodes mit Beispiel, die du abfragen kannst.
MfG Kanashius
-
Zitat
Mache ich aus dem Text ein "Text && sfls" kommt zumindest ein & !
Wenn man ein Zeichen doppelt schriebt wird es oft, so wie auch hier escaped. Also ist hier das && nur ein Escapezeichen für das zweite &.
-
Immun machen nicht, aber du könntest eine weitere Gui erstellen mit $WS_CHILD als style und der Gui als Parent, dann passend positionieren.
Mit borderless,... merkt man garnicht, dass dort eine andere Gui ist, und dort sieht man dann nicht, was unter der ChildGui darunter gezeichnet wurde.
Ansonsten, einfach nicht auf der Gui zeichnen, sondern auf einem Bild, das dort eingeblendet wird. Das macht man ja häufig, um bei dem ReDraw, beim Bewegen des Fensters aus dem Bildschirmrand,... das Bild neuzuzeichnen.
Auf dem Bild kann der Bereich ja wieder gelöscht werden, nachdem gezeichnet wurde.
Wenn du den Anwendungsfall genauer beschreibst gibts aber vllt. noch eine bessere Möglichkeit
-
Wenn der OutputOrdner bereits existiert, wird davon ausgegangen, dass der nur das Paket beinhaltet -> wird nicht neu extrahiert.
Somit sollte es keine Probleme mit existierenden Dateien geben.
Aber danke, für die Tipps
-
Und gleich der Erste Fix... Nachdem ich mit übersetzen angefangen hab, viel mir auf, dass die TAB-Taste nicht funktioniert. Hab nen Workaround gemacht
-
Für alle, die Lust haben zu übersetzen: Ich hab mir gegen das Datei-chaos ein nettes Hilfetool geschrieben:
Da muss man dann nurnoch die Dateien runterladen, übersetzen, und am Ende wieder hochladen, den Rest erledigt das Programm
Also Vergleich 2er Englischer Versionen, die alte Deutsche Datei anzeigen, sowie ein Fenster für die Übersetzte Datei.
Bei interesse schauts euch einfach an
MfG Kanashius
-
Da mir beim Übersetzen der Hilfe-Datei das hantieren mit den ganzen Dateien zu umständlich war, habe ich ein kleines Programm geschrieben, das eine nette Hilfe beim Übersetzen der Hilfe-Datei sein kann.
Funktion:
Nach angabe eines Ordners, werden alle Packet-Files aufgelistet. Die können ausgewählt werden. Daraufhin werden alle Funktionen des Packets gelistet.
Mit doppelklick auf einen Funktionsnamen in der Liste wird die Hilfe-Datei dazu bearbeitet.
Beim Bearbeiten werden alle vorhandenen Dateien der Funktion in Tabs angezeigt, sowie, wenn 2 Englische Dateien vorhanden sind, ein Vergleich durchgeführt und das Ergebnis in einem weiteren Tab angezeigt.
(Zum Vergleich wird die Webseite http://www.quickdiff.com/ genutzt.)
In der Übersicht wird angezeigt, welche Dateien bereits bearbeitet wurden, und welche Packete bereits bearbeitet wurden.
Wenn ein Packet fertig ist, kann es gezippt werden und wird dann grün markiert.
Viel Spaß beim Testen, und ich freue mich über Rückmeldung
Gerne auch Verbesserungsvorschläge. Fühlt euch frei das Script zu ändern
Im Anhang ist der Quellcode, eine Executable sowie die zum ver-und entpacken notwendige 7z.exe.
MfG Kanashius
Screenshots:
Spoiler anzeigen
-
Naja, ist doch logisch. Es kann nur ein Betrugsversuch sein, wenn jemand aus der Zukunft oder aus der Vergangenheit auf den Server zugreifen will.
Irgendwas stimmt dort doch dann nicht.
Wenn dich dein Zukunftsich anruft und sagt, dass du jetzt die Tür aufmachen sollst, würdest du doch auch sagen, dass dich da jemand übers Ohr hauen will
-
Probier mal #requireadmin am anfang. Unter Windows 10 wird mehr auf Security geachtet -> Ein Programm kann keine Fenster ändern, die mehr Rechte haben.
Wenn es daran nicht liegt, probier mal mit Opt den WinTitleMatchMode zu ändern.