Beiträge von Oscar

    Habe es gerade getestet... es geht auch ohne Konvertierung nach int, wenn du bei type int32 nimmst:

    Ja, das geht, aber dann meckert wNim, weil dort bei pos und size die INTs 64-Bits haben.

    Und da ich die Funktion zum positionieren von einem wNim-Frame brauche, habe ich gleich nach INT konvertiert.

    Jetzt noch GetMonitorInfo hinzufügen, um rcWork und dwFlags zu bekommen, dann wäre es perfekt...

    Um mal auf Post#13 zurückzukommen. Das habe ich mittlerweile auch hinbekommen:

    Nun, ich dachte erst, weil du ja hier pos und size als int deklariert hast...

    Achso! Ja, ich hatte das vorher ohne explizit zu casten, aber dann meckerte der Compiler wegen "int" <> "int32".

    EnumDisplayMonitor liefert da wohl ein "int32" zurück, "int" ist aber 64-Bit-Int.

    Array ist hier zu unflexibel (Datentypen kann man nicht mixen), wozu gibt es Objekte?

    So habe ich wenigstens gleich auch verstanden, wie man ein Array von Objekten erstellt.

    Und weil ich für mein Projekt sowieso eher die Position und die Größe der Monitore brauche, habe ich das mal dahin umgestellt:

    Array ist hier zu unflexibel (Datentypen kann man nicht mixen), wozu gibt es Objekte?

    Wow! Ja, so ist es natürlich noch besser! :thumbup:



    Monitor 2 ist gespiegelt angeschlossen: wird nicht erkannt

    Wenn Du mit "gespiegelt" dupliziert meinst, dann muss der Monitor ja auch nicht erkannt werden.

    Ich denke, das ist so gewollt.

    Hm, die Werte sind bei mir identisch, egal ob mit oder ohne DC.

    Hmm...Du hast recht.

    Irgendwie hatte ich bei meinen Tests da mal andere Werte. Ich weiß aber nicht mehr, was ich da gerade ausprobiert hatte.

    Jetzt bekomme ich hier auch die gleichen Werte (egal, ob mit oder ohne DC).

    Na gut, dann geht es also noch kürzer. Ich ändere mein obiges Beispiel.

    Danke! :):thumbup:

    Den Desktop-DC braucht man schon, damit die Werte relativ zum primären Monitor sind.

    Ansonsten kannst Du evtl. benötigte Fenster nicht auf die anderen Monitore verschieben.

    Mit "hDC = 0" sind die Werte relativ zum virtuellen Desktop (immer positiv).


    Ich habe mein Programm noch etwas kommentiert und das Monitor-Handle mit abgespeichert:

    Klasse! Mit dieser Vorlage habe ich die Daten auslesen können.

    Ich hab's noch etwas abgeändert, so dass ich die benötigten Werte in einem Array habe:

    BugFix: Vielen Dank für Deine Hilfe! :):thumbup:

    Was ich brauche, ist EnumDisplayMonitors. Gefunden habe ich das auch schon in winuser.nim.

    Laut MSDN brauche ich:

    Code
    BOOL EnumDisplayMonitors(
    HDC hdc,
    LPCRECT lprcClip,
    MONITORENUMPROC lpfnEnum,
    LPARAM dwData
    );

    Als Aufruf für alle Monitore:

    Code
    EnumDisplayMonitors(NULL, NULL, MyInfoEnumProc, 0);

    Wobei "MyInfoEnumProc" ein Pointer auf eine Callback-Function (MONITORENUMPROC) ist.

    Dort bekomme ich einen Pointer auf eine RECT-Struktur, zu jedem angeschlossenen Monitor.

    Leider finde ich keinen Nim-Beispielcode dafür.

    In AutoIt habe ich sowas schonmal geschrieben:

    Kann mir jemand mit Nim behilflich sein?

    Wie kann ich mir mit Nim die Auflösung der angeschlossenen Monitore (und deren Position) anzeigen lassen?

    Mit wGetScreenSize() bekomme ich nur die Größe des Haupt-Bildschirms. Ein zusätzlicher Monitor, der sich links daneben befindet, wird mir nicht angezeigt.

    Ich würde die Zeile einfach von links nach rechts durchgehen. Es gibt ja "nur" zwei Zeichen (chr(34) und chr(39)), die einen String kennzeichnen.

    Wenn eines der beiden Zeichen auftritt, einen Startpunkt setzen und darauf warten, dass das Zeichen ein zweites Mal auftaucht. Bis dahin ist es dann ein String.

    Hier mal als AutoIt-Code:

    Die "test.txt"-Datei enthält Deine obige Vorgabe ("fiktive Programmzeile").

    Also Gut das Programm heißt Tiny Pic und man kann ganz einfach Jpg Bilder in das Fenster von tiny Pic ziehen - dann werden sie gleich komprimiert.

    Genau DAS ist mit dem XY-Problem gemeint.

    Wozu überhaupt "Tiny Pic" verwenden, wenn man das Ganze mit AutoIt erledigen kann?

    Was genau verstehst Du denn unter "komprimiert"?

    Was ist das denn für ein Fenster?

    Beziehungsweise: Was willst Du erreichen?

    Das hört sich sehr nach einem XY-Problem an:

    Beim rumprobieren bin ich auf das Timer-Event gestossen und weil man kaum Beispiele dazu findet, habe ich hier mal eines erstellt.


    Erstmal: ein schönes Beispiel-Programm! Da kann man viel lernen. :):thumbup:


    Aber kannst Du mal diese Zeile genauer erklären (den roten Teil): snames.add(file.path.splitPath().tail.split('.')[0])

    Ich weiß, was da passiert, aber nicht wie.