Zwei Fragen zu Drag & Drop und GUI (Fern)steuerung

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
Gucky_87
Posts: 376
Joined: 03 Jul 2014, 05:09

Zwei Fragen zu Drag & Drop und GUI (Fern)steuerung

09 Mar 2022, 18:56

Huhüchen zusammen,

Ich bastle gerade an einem Batch Convert Toll für Paint.NET.
Dazu habe ich ein GUI gemacht, das eine Liste anzeigt, auf die man per Drag & Dop Bilder ablegen kann.
Diese werden eingetragen und sollen später nacheinander bearbeitet und gespeichert werden.

Frage 1:
Das Drag & Drop klappt, alles ok nur dauert das bei vielen (200.000+) Dateien sehr lange, bis die Dateien in der Liste erscheinen.
Ab einer gewissen Anzahl bleibt das Script stehen und ich muss es per Task Manager killen.

Kann man das abstellen oder zumindest eine Meldung "Zu viele Dateien" einbauen, damit es nicht mehr hängen bleibt?

Frage 2:
Ich möchte Paint.NET am liebsten per Fernsteuerung steuern, also nicht mit "Send..." Kommandos füttern, weil dann der Rechner quasi blockiert ist, solange das Script arbeitet. Ob das Paint.NET Fenster sichtbar ist oder nicht, spielt keine Rolle.
Ein Bild öffnen geht, indem ich Paint.NET per RUN starte und eine Bilddatei anhänge.
Den Installationsordner (für Run...) hole ich mir aus der Registry. Geht wunderbar ;)

Aber wenn ich z.B. mit "Send ^+w" das Fenster "Speichern unter" aufrufe, müsste ich mit TAB zum Dateiformat blättern, dann ein paar mal "P" senden (bis z.B. PNG angezeigt wird) und dann mit ENTER bestätigen.

Die DropDownliste für Dateiformate heißt laut Windows Spy in Paint.NET: ClassNN: ComboBox2
Aus der müsste ich doch mit ControlGetText(?) den Text auslesen oder mit GuiControl, ControlSend oder so direkt etwas dorthin senden können, oder?
Nur ich kapiere nicht, wie.
Die Prozess ID von Paint.NET kann ich, falls benötigt, ermitteln, das ist kein Problem.

Hat jemand einen Tipp?

Danke im Voraus, wie immer,

Gucky.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Zwei Fragen zu Drag & Drop und GUI (Fern)steuerung

09 Mar 2022, 22:41

ad 1) warum per d&d? Wenn Dateien (im Explorer) selektiert sind, dürfte ein Listing aus der Kontextmenü-Option "Als Pfad kopieren" (Shift+RButton+P) die deutlich einfacherere Option sein.
ad 2) Im Standard-Dateiauswahldialog dient die "Speichern unter" Angabe der Dateiendung dazu, ausschließlich bereits vorhandene Dateien dieses Dateityps anzuzeigen, was die Namensvergabe erleichtern soll(te). Wird jedoch statt eines bestimmten Dateityps die "Alle Dateien"-Anzeige gewählt, kann in das Dateinamensfeld direkt der zukünftige Name inkl. beliebiger Dateiendung (oder abweichender Pfadangabe) eingetragen werden. Das sollte alles mittels :arrow: ControlSend machbar sein.

Kommandozeilentechnisch scheint Paint.Net ja leider recht limitiert: https://www.getpaint.net/doc/latest/paintdotnetProtocol.html
Aus diesem Grund würde es IMHO Sinn machen eine Software wie :arrow: IrfanView oder ImageMagick zur Batchkonvertierung zu verwenden, oder AHK: viewtopic.php?t=2505

PS. deine nicht wenigen Paint.Net-Links scheinen übrigens alle veraltet/tot: http://getpaint.net :lolno:
User avatar
Gucky_87
Posts: 376
Joined: 03 Jul 2014, 05:09

Re: Zwei Fragen zu Drag & Drop und GUI (Fern)steuerung

10 Mar 2022, 06:04

Hi Bobo. Erstmal danke für Deine Ausführungen.

Ich nutze D&D, weil ich in dem konkreten Fall, wozu ich auch das Script schreibe, mehrere 100.000 Dateien (übrigens nahezu alle im *.dds Format) in PNG wandeln muss, nicht aber immer alle. Die Quellen liegen dabei öfters in unterschiedlichen Ordnern & Unterordnern. Der Explorer bietet leider keine Vorschau für das *.dds Format.
Du hast natürlich Recht und ich habe es schlicht übersehen, dass ich mit "Speichern unter... abc.PNG" Paint.NET direkt dazu veranlassen, PNG als Ausgabeformat zu nutzen.

Da ich mit Freunden an einem größeren Projekt arbeite und wir alle Paint.NET nutzen, dachte ich mir es wäre halt in der Gruppe einfacher, dieses auch dafür zu nutzen. Mit Photoshop wäre es einfach, da der Batch Conversing kann.

Auch weiß ich natürlich, dass es Tools wie IrfanView gibt. Ich möchte es aber dennoch über Paint.NET machen (Ehrgeiz? ^^)

PS. deine nicht wenigen Paint.Net-Links scheinen übrigens alle veraltet/tot
Ich nehme an, Du meinst das eher sarkastisch, da ich ja keine Links angegeben hatte. Wozu auch, da die Aufgabenstellung m.M.n. dies gar nicht erfordert, außer vielleicht Deinen Link.

Ich werde mal sehen, wie weit ich mit ControlSend komme. Allerdings sehe ich dabei gerade keine Möglichkeit, Kontrollelemente via ahkid anzusprechen, da ControlSend einen Fenstertitel haben will.
Da ich bisher so gut wie nie damit zu tun hatte, habe ich mit diesen Kommandos noch keine sonderliche Erfahrung.
Ich melde mich wieder, wenn ich (nicht) voran komme .

Gucky.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Zwei Fragen zu Drag & Drop und GUI (Fern)steuerung

10 Mar 2022, 06:58

Ich nehme an, Du meinst das eher sarkastisch, da ich ja keine Links angegeben hatte.
:think:
Eine Funktion der Forensoftware, welche eine vermeintliche TopLevelDomain Angabe wie "<blabla>.net" in einen Link übersetzt!? Vielleicht auch nur auf bestimmtem Geräten, wie tablets? Dadurch war in deinem Beitrag jede Erwähnung von "Paint.Net" (bei mir!) als funktionierender, toter Link angezeigt. Deshalb ;)
Der Explorer bietet leider keine Vorschau für das *.dds Format.
https://www.nvidia.com/de-de/drivers/dds-thumbnail-viewer/
https://sourceforge.net/projects/sagethumbs/
...in PNG wandeln muss, nicht aber immer alle.
Was ist denn das Ausschlußkriterium?
User avatar
Gucky_87
Posts: 376
Joined: 03 Jul 2014, 05:09

Re: Zwei Fragen zu Drag & Drop und GUI (Fern)steuerung

11 Mar 2022, 09:45

Eine Funktion der Forensoftware, welche eine vermeintliche TopLevelDomain Angabe wie "<blabla>.net" in einen Link übersetzt!? Vielleicht auch nur auf bestimmtem Geräten, wie tablets? Dadurch war in deinem Beitrag jede Erwähnung von "Paint.Net" (bei mir!) als funktionierender, toter Link angezeigt. Deshalb ;)
Auuu Mann! Also daran hab ich nun üüüüverhaupt nicht gedacht. Sorry dafür, ich werde drauf achten.
Was ist denn das Ausschlußkriterium?
Das ganze (Projekt) sieht so aus:
Ich habe ein älteres PC Spiel, aus dem ich alle 3D Objekte extrahiert habe (ca. 500k Objektdateien).
Die Texturen liegen zu 100% im dds Format vor, welches PN Lesen kann.
Die 3D Objekte selber konvertiere ich mit dem "3D Konverter" (http://3doc.i3dconverter.com) in Wavefont Objekte, um sie mit Blender weiterverarbeiten zu können. Sie sollen später in eine eigene 3D Umgebung (ähnlich Second Life) integriert werden.
Die Texturen muss ich daher als PNG Dateien haben.
Alle Dateien (dds, png, obj, mtl, etc.) liegen später im selben Verzeichnis.

So weit, so gut.

Mein GUI soll nun selbsttätig aus den mtl Dateien (Textdateien) die Texturnamen holen und die entsprechenden dds Dateien mittels PN in PNG konvertieren. So kann ich außerdem sicherstellen, dass keine Textur mehrfach konvertiert wird, was manuell übel wäre bei so vielen Dateien.
Sollte aber jemand eine dds Datei auf das GUI legen, soll diese dds Datei halt auch mitkonvertiert werden.
Das ist sinnvoll, wenn selbe Objekte unterschiedliche Texturen haben können.

Das ist der Sinn/Hintergrund meines GUI, denn etliche zig 10.000 Male Tastemkombis drücken, nee, das ist nix ;)

Danke für Deine Links, Bobo.
just me
Posts: 9528
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Zwei Fragen zu Drag & Drop und GUI (Fern)steuerung

12 Mar 2022, 06:00

Moin Gucky,

zu Frage 1:

Wie legst Du 200.000+ Dateien per D&D auf ein GUI?

zu Frage 2:

Wenn der (0-basierte) Index des gewünschten Eintrags konstant ist, könnte eine Nachricht (CB_SETCURSEL = 0x014E) ausreichen:

Code: Select all

SendMessage, 0x014E, Index, 0, ComboBox2, A ; die ComboBox sollte zum aktiven Fenster gehören
User avatar
Gucky_87
Posts: 376
Joined: 03 Jul 2014, 05:09

Re: Zwei Fragen zu Drag & Drop und GUI (Fern)steuerung

22 Mar 2022, 06:57

Wie legst Du 200.000+ Dateien per D&D auf ein GUI?
- Explorer öffnen
- STRG & A (alles auswählen) drücken
- Dateien per D & D auf mein GUI zehen.

Gucky.
User avatar
jNizM
Posts: 3183
Joined: 30 Sep 2013, 01:33
Contact:

Re: Zwei Fragen zu Drag & Drop und GUI (Fern)steuerung

22 Mar 2022, 08:03

Könntest ja auch ein Edit Feld machen und den Pfad des Ordners angeben (bzw. FileSelectFolder) und dann so durch-loopen. Das kannst du dann somit auch auf *.dds Dateien begrenzen.
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Zwei Fragen zu Drag & Drop und GUI (Fern)steuerung

22 Mar 2022, 08:50

Das ist der Sinn/Hintergrund meines GUI, denn etliche zig 10.000 Male Tastemkombis drücken, nee, das ist nix
In dem Zusammenhang sollte sichergestellt sein das die abgearbeiteten Dateien verschoben/gelöscht/gekennzeichnet/gelogged werden.
Ist mir schon untergekommen das ein batch-prozess mit abertausenden Dateien kollabiert ist, und die Identifikation der bereits verarbeiteten Dateien final mit mehr Aufwand verbunden war, als den ganzen Prozess nochmal zu starten (mit abermaliger Kollabierungsoption).

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 19 guests