Beiträge von Kanashius

    Windows 7 hat tatsächlich keine Möglichkeit, die DPI-Skalierung für einzelne Monitore zu regeln. Das war tatsächlich der Grund für mich, auf Windows 10 zu wechseln... der einzige :/

    Ich hab nen 4k Monitor und 2 FHD. Auf dem 4k Monitor war lesen auf Dauer anstrengend, weil die Schrift so klein war. Jetzt mit 150% geht es recht gut.


    \Offtopic

    Aber sobald ich genug Geld zusammen hab für nen neues Mainbord,CPU und Graphiccard werd ich auf Linux mit Win10 VM mit GPU passthrough wechseln :). Die Microsoft Politik nervt mich ziemlich und Win10 hat so viele Macken/nervige Dinge und das obwohl ich bestimmt schon >10 Stunden in die Konfiguration gesteckt hab... Von den neuen verschlimmbesserten Einstellungen ganz zu schweigen X/. Da Konfigurier ich mir lieber mein Arch Linux nen paar Tage und hab dann meine Ruhe 8o.

    Ich freu mich schon auf die neuen AMD-Prozessoren: Ryzen 9 3900X—12C/24T, 3.8GHz to 4.6GHz, 70MB cache, 105W TDP, $499 :love:

    Offtopic\

    Darf ich fragen, wieso du nicht möchtest, dass dein Programm in einer VM betrieben wird? Ich hab bisher noch keinen guten Grund gefunden und sehe es eher als Hindernis... aufgrund der Windows 10 Politik,Funktionsweise,... arbeite ich auf einem Rechner mit Linux und starte die Win10 VM ausschließlich für Programme die nicht unter Linux laufen. (Von Sicherheitsaspekten ganz zu schweigen). Dementsprechend könnte ich dein Programm nie benutzen.


    Es würde mich daher interessieren, aus welchem Grund/Gründen du das ausführen in der VM verhindern willst.


    Mit freundlichen Grüßen,

    Kanashius.

    In dem Fall würde ich wie in Linux mit dem Lockfile-Prinzip arbeiten: Einfach eine Datei erstellen, wenn du die Datei zum bearbeiten öffnest und danach wieder löschen. Vor dem erstellen und beim Scheitern des erstellens (2 erstellen gleichzeitig) => Solange die Datei existiert: warten.


    Bzw.: Wenn du eine Datei zum schreiben öffnest, kann einanderer Prozess die Datei garnicht beschreiben ;)

    Bei UEZ wird die Hexadezimale darstellung genommen. Diese sieht so aus:

    0xFFFFFFFF für weiß. 0xFF000000 für schwarz. Statt von 0 bis 10 gehen diese von 0 bis 9 und zusätzlich noch von a bis f. Demnach ist FF=255 -> (15*16+15). Ergibt sich aus F*16+F. Also: AF=10*16+15=175.

    Dabei gibt es 4 paare. 0x FF FF FF FF dabei steht das erste FF für die Transparenz. Dann R,G und B. Zum verrechnen werden Bitweise operationen genutzt:

    Code
    1. $iInt=BitShift(255,-24)+BitShift(0,-16)+BitShift(125,-8)+150 ;entspricht also dem Wert 0xFF007D96 und somit dem RGB Wert: 0, 125, 150 mit der Transparenz 255 also voll sichtbar.
    2. $iA=BitRotate(BitAND($iInt,0xFF000000),-24,"D")
    3. $iR=BitRotate(BitAND($iInt,0x00FF0000),-16,"D")
    4. $iG=BitRotate(BitAND($iInt,0x0000FF00),-8,"D")
    5. $iB=BitAND($iInt,0x000000FF)
    6. ConsoleWrite($iInt&" => "&Hex($iInt)&" = "&$iA&" - "&$iR&", "&$iG&", "&$iB&@crlf)

    Hab mal nen kleines Script für den Farbverlauf geschrieben, es können verschiedene Farben mit dem Prozentanteil angegeben werden.

    MfG Kanashius

    Code
    1. _IEFormElementCheckBoxSelect($oForm,"1","exactSearch",1,"byValue",1)

    sollte tun, was du möchtest.

    [1.] Du gibst das IE-Object (Formular) an

    [2.] und dann das, was im Feld value steht (hier "1"), da bei $sMode "byValue" angewählt ist.

    [3.] Mit der ID "exactSearch" wählen wir die Checkbox (Ich nehm lieber IDs, da diese EINDEUTIG sein sollten, Namen werden eher öfter verwendet).

    [4.] 1 natürlich um anzuzeigen, das ausgewählt werden soll.

    [5.] $sMode steht vorne schon

    [6.] und die letzte 1, damit es ankommt, als hätte der User was geklickt/geändert (mag unnötig sein, kommt auf die Implementierung der Webseite an). Dient halt dazu, Funktionen (JS) aufzurufen, die normalerweise bei der Userinteraction ausgelöst werden.


    MfG Kanashius

    Musst eventuell den Run-Befehl anpassen, aber sonst sollte es so funktionieren :)

    1. Wenn die Anzeige für Sekunden aktualisiert werden soll, aktualisiere nicht alle 30 Millisekunden, sonder alle 500 bis 250 ms (Das Sleep in Zeile 24).

    2. Nicht jedesmal ein neues Label erstellen, sondern einmal 4 Label erstellen und diese aktualisieren. Es ist deutlich mehr aufwand ein neues label zu erstellen, statt den text zu ändern. So hast du innerhalb von sekunden tausende labels die übereinander liegen. Das zeichen der gui wird also mit der zeit immer langsamer.

    Naja, die erste Frage wäre natürlich, ob es eine Option ist, von Office 365 wegzugehen und stattdessen Opensource Software wie OpenOffice zu nutzen. (Btw. die sinnvollste Methode, da Schüler gleich lernen, dass es gute kostenlose Software gibt, statt der teuren Microsoft Office software.)

    Blockieren ist sonst so nicht einfach möglich, dafür müssten meines Wissens nach extra Treiber installiert werden und das wird recht schnell kompliziert.

    Was gehen sollte, wäre das du in cmd mit "netstat -tabn" alle aktiven Verbindungen ausließt. Dabei kannst du einen Filter einbauen und die Aufsichtsperson bei der Klausur wird benachrichtigt, wenn dort eine neue Verbindung auftaucht, die nicht gefiltert wird. (Der Prozess, der die Verbindung herstellt wird ebenfalls angezeigt)

    (netstat -tabn benötigt Administratorrechte #requireAdmin)

    Ich glaube, in diesem Fall liegt der Fehler im Befehl.

    DELETE FROM [DATABASE].[dbo].[TABLE] WHERE IPnode = COMPUTERNAME123;

    SELECT * FROM [DATABASE].[dbo].[TABLE] WHERE IPnode = 'COMPUTERNAME123';


    Beim Select hast du mit den ' einen String genutzt. Das solltest du beim Löschen auch machen ;)


    Aber generell ja, beschränk dich auf eine UDF ;)

    Ich hab mal gesucht und das folgende gefunden:

    1. https://www.techrepublic.com/b…-windows-7s-logon-screen/

    Dies zeigt beim wechseln des Benutzers eine Nachricht an, leider funktioniert dies nicht beim Sperrbildschirm und es muss vorm Benutzerwechsel gesetzt sein...


    2. Die andere, bessere Möglichkeit wäre GINA. Das ist eine dll, die sich um das darstellen des Windowslogins kümmert. Dazu müsstest du allerdings eine .dll erstellen (z.B. in C/C++), diese muss die originale ersetzen. Teilweise können auch Hooks angelegt werden. Das ganze ist auf jedenfall recht kompliziert.

    Hier ein paar Links dazu:

    Hier sieht man ganz schön den Aufbau:

    https://www.paralint.com/projects/aucun/index.html

    Details:

    https://docs.microsoft.com/en-…ows/desktop/secauthn/gina

    https://docs.microsoft.com/en-…uthn/customizing-winlogon

    https://msdn.microsoft.com/en-…op/aa380543(v=vs.85).aspx


    Ich hab mir das jetzt auch nur grob angeschaut, das wäre auf jedenfall eine kompliziertere Aufgabe, ich glaub es gibt auch recht wenig dazu zu finden, also viel ausprobieren ;).


    Mfg Kanashius

    Um eine vernünftige Fortschrittsanzeige zu erstellen musst du das kopieren in Teile zerlegen.

    Statt mit DirCopy zu kopieren also alle Dateien auflisten (_FileListToArrayRec) und einzeln kopieren. Den Fortschritt nach der Anzahl bisher kopierten Dateien berechnen (Round($akt,$max,2)*100).

    Wenn es noch genauer sein soll, kannst du noch die Dateigröße auslesen und mit einbeziehen.

    Mit DirCopy ist die Fortschrittsanzeige also nicht vernünftig möglich.


    MfG Kanashius

    Ich nehme mal an, das Datum steht im ersten Eintrag... Deine Schleife muss bei 0 beginnen:

    Als Tipp: bau dir die beiden Hilfsfunktionen ein um zu sehen, was in dem Array steht und was genau verglichen wird. Die MSGBOX kannst du dabei auch durch ein ConsoleWrite ersetzen, falls es viele Ausgaben sind, damit nicht jedesmal ok gedrückt werden muss. In diesem Fall macht das == auch keinen Sinn, denn == vergleicht zwei Strings miteinander, während = für Zahlen genutzt wird.


    MfG Kanashius


    EDIT: Ich seh grad, dass du schon einen anderen Thread aufgemacht hast. Da das Thema das gleiche ist, antworte doch nächstes Mal auch bitte in dem gleichen Thread. Es wird nicht für jede weiterführende Frage ein neuer Thread zum gleichen Thema aufgemacht. Außerdem Hilfeanfragen in dem Forum Hilfe und Unterstützung posten. Das Forum Scripte ist für FERTIGE Scripte gedacht, die man mit der Community teilen möchte.

    Da mir die Dauer von über einer Stunde sehr grausam erscheint und ich grad lust hatte etwas zu programmieren, hab ich mal eine Programm geschrieben, was deutlich schneller ist.

    Ich hab das ganze in Java implementiert, einfach weil es schneller ist und ich Java im Moment viel öfter benutze.


    Die Dauer für ein 10MB jpg-file ist < 3 Sekunden.


    Das ganze läuft über die Kommandozeile (kann also mit runwait,... gestartet werden und benötigt keine Benutzereingaben).

    Ein Fenster implementiere ich vielleicht noch (momentan ist es noch leer)


    Die Ausgabe besteht aus einer Bit-Datei, die einfach für jeden Pixel 0 oder 1 in eine Textdatei schreibt, je nachdem ob dort ein Treffer war, oder nicht.

    Außerdem kann noch eine Datei mit allen Bereichen ausgegeben werden. In der steht dann in jeder Zeile ein Bereich und dort alle Pixelkoordinaten, die zu dem Bereich gehören.


    Bei der gesuchten Farbe können beliebige RGB-Werte angegeben werden (auch eine gewisse Range, also Rot von 0 bis 50,...). Außerdem kann auch der Alphawert berücksichtigt werden.

    Beim suchen des Bereiches kann definiert werden, ob die Moore- oder VonNeumann-Nachbarschaft verwendet werden soll.


    Zwei Beispiele zum ausführen mit der enthaltenen 7x5 Pixel testdatei:

    java -jar ImageAnalyser.jar -nogui -path test.png -scanColor 0,0,0 -scanArea true -outBits bits.txt -outArea area.txt -scanNeighborhood neumann

    java -jar ImageAnalyser.jar -nogui -path test.png -scanColor 0,60,0,60,0,60 -scanArea true -outBits bits.txt -outArea area.txt -scanNeighborhood neumann


    Die gesamte Hilfe:


    Du solltest aber nicht nach sehr großen verbundenen Bereichen suchen, dann tritt ein Stackoverflow-Error auf. Da muss ich die nächsten Tage (nach der Klausur am Dienstag vllt.) mal dran gehen, dass ich die Rekursion rausbekomme und stattdessen Schleifen o.ä. benutze.


    Der Sourcecode ist ebenfalls enthalten, falls sich jemand dafür interessiert ;)


    MfG Kanashius.

    Dateien

    Bei Group By nimmt er die Tabelle und gruppiert die Daten nach der angegebenen Spalte. Haben mehrere Zeilen in der gegebenen Spalte den gleichen Wert, wird in den anderen Spalten ein zufälliger von den Werten genommen (Oder der Max-Wert, Min-Wert oder Count, also die Anzahl des Auftretens, wenn das angegeben wird). Mit Having wird einfach nur eine Bedingung mitgegeben. Alle die diese nicht erfüllen werden rausgeworfen. Where funktioniert dabei immernoch. Where wird vor dem GroupBy ausgeführt, Having danach (kann also schon mit dem Ergebnis arbeiten).


    Firebird SQL scheint da aber besondere Regeln zu haben...