Externe Software suchen und anwenden

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Externe Software suchen und anwenden

Re: Externe Software suchen und anwenden

Post by halweg » 17 Jul 2020, 05:05

Ich habe auch ein paar AHK-Skripte, die IrfanView als Tool nutzen (z. B. für das Erzeugen und Ablegen eines Screenshoots).

Für den Aufruf gehe ich dabei insbesondere bei den Skripten, die ich weitergebe, einen anderen Weg: Ich kompiliere die AHK-Skripte und integriere die i_view32.exe direkt in die kompilierte Datei (per AHK2EXE). Damit kann ich immer und überall auf die IrfanView Basisfunktionen zugreifen.

Re: Externe Software suchen und anwenden

Post by gregster » 11 Jul 2020, 22:51

Die Frage ist, was ist der Inhalt von I_view_exe zum Prüfzeitpunkt - wenn die Variable blank (= false) ist, würde ! sie zu true ändern.

Ich würde ja eher FileExist() verwenden... denn im Moment prüfst du lediglich den Inhalt der Variablen, nicht ob die Datei wirklich gefunden wird.

Spoiler

Code: Select all

I_view_exe := "C:\Program Files (x86)\IrfanView\i_view32.exe"

IF !FileExist(I_view_exe)
   {
   Warnung_IViewText =
   (
   Sie benötigen das Bildprogramm IrfanView!
   )
   MsgBox, 16, IrfanView nicht installiert, %Warnung_IViewText%
   Return
   }

Re: Externe Software suchen und anwenden

Post by Meister Lampe » 11 Jul 2020, 14:32

Hallo!

Ich muß noch einmal nachhaken.
Ich habe vor dem oben behandelten Sript mit der Irfanview-Anwendung nun - auch auf Eure Anregung - jetzt eine Nachfrage nach dem Programm stehen:

Code: Select all

IF !(I_view_exe)
   {
   Warnung_IViewText =
   (
   Sie benötigen das Bildprogramm IrfanView!
   )
   MsgBox, 16, IrfanView nicht installiert, %Warnung_IViewText%
   Return
   }
Kann mir jemand erklären, warum die Warnmeldung ausgerechnet erscheint, wenn IrfanView installiert ist? Ich habe hier doch absichtlich das "NOT"-Anführungszeichen vor die Bedingung gesetzt. Wenn ich das wegnehme, wird sie ignoriert, d.h. es läuft mit u. ohne IrfanView weiter (nur klappt dann natürlich die gewünschte Anwendung nicht).
Wo ist da der Haken? Wahrscheinlich nur ein Häkchen, aber auch das will gefunden werden... :eh:

Viele Grüße von Meister Lampe

Re: Externe Software suchen und anwenden

Post by Meister Lampe » 31 Oct 2019, 17:01

Hallo gregster!

Jetzt funktioniert das Script eigentlich ganz gut, lediglich mit der Einschränkung, daß beim ersten Durchlauf nach dem Start wieder die Fehlermeldung kommt und das Bild nicht aufgerufen wird. Aber korrekt erstellt wird es jetzt.
Ich habe ganz am Ende auch noch FileDelete eingefügt, so wird der Word-Entwurf dann gleich wieder gelöscht, nachdem er seine Pflicht erfüllt hat.
Das ganze Script für dieses Modul sieht jetzt folgendermaßen aus (dann könnt Ihr auch mal den Zusammenhang besser erkennen):

Code: Select all

; Virtuelles Deckblatt erstellen:
F11::
VirtuellesDeckblatt:
If (AktSign = "")
   {
      MsgBox, 17, Keine Bestandsvorlage!, Sie müssen zuerst eine Bestandsvorlage auswählen!
      IfMsgBox Ok
      {
         Gosub Auswahlfenster
         return
      }
      else
      return
   }
   Clipboard := ""
   VD_IBoxText =
   (
   
   Ein vituelles Deckblatt zum 
   Bestand %AktSign% wird erstellt.
   Geben Sie die Aktensignatur ein!
   )
   InputBox, VD_SignBox, Virtuelles Deckblatt, %VD_IBoxText%, ,240, 185, 
   If ErrorLevel
      return
   else
   id_Arbeitsfenster := WinExist("A")
   VD_SignNeu := VD_SignBox
   ;VD_AktSign := AktSign
   VD_AktSign := StrReplace(AktSign, "--", "/")
   ;MsgBox %VD_AktSign%
   DocumentPath := VD_Vorlage
   BookmarkName1 := "AktSign_Marke"   
   BookmarkName2 := "Signatur_Marke"
   
   oWord := ComObjCreate("Word.Application")
   oDoc := oWord.Documents.Open(DocumentPath)
   oWord.Visible := 1, oWord.Activate
   oDoc.Bookmarks(BookmarkName1).Select
   oDoc.Bookmarks(BookmarkName1).Range.Text := VD_AktSign
   Send, {Left}{Del}
   oDoc.Bookmarks(BookmarkName2).Select
   oDoc.Bookmarks(BookmarkName2).Range.Text := VD_SignNeu
   Send, {Left}{Del}
   
   Send, {PGUP}
   Send, ^a
   Send, ^c
   VD_SignName := Format("{:0" . StellenSign . "}", VD_SignNeu)
   VD_NameNeu := AktSign . "_" . VD_SignName 
   ;MsgBox, %VD_NameNeu%
   oWord.ActiveDocument.SaveAs(A_ScriptDir . "\Arbeitsdateien AHK-Tool StAF\" . VD_NameNeu . ".docx")
   ;oWord.ActiveDocument.SaveAs(A_ScriptDir . "\Arbeitsdateien AHK-Tool StAF\VD_docDateien\" . VD_NameNeu . ".docx")
   ;oWord.ActiveDocument.SaveAs("id_ArbeitsFenster" . VD_NameNeu . ".docx")
   
   RegRead, I_view_exe, HKCR\Applications\i_view32.exe\shell\open\command
   IF !(I_view_exe)
   {
   RegRead, I_view_exe, HKCR\Applications\i_view64.exe\shell\open\command
   RegexMatch(I_view_exe, "(?P<>""[^""]*"")", I_view_exe) ;erste "..."-Gruppe
   }
   IF !(I_view_exe)
   {
   MsgBox, Bitte IrfanView Installieren.
   Return
   }
   oWord := ComObjActive("Word.Application")
   oRange := oWord.ActiveDocument.Range.Copy

   Run, %I_view_exe% /clippaste /convert=%Arbeitsdateien%\%VD_NameNeu%.jpg
         
   oWord.ActiveDocument.Close(0)
   oWord.Quit()
   FileDelete, %Arbeitsdateien%\%VD_NameNeu%.docx
  
   Run %Arbeitsdateien%\%VD_NameNeu%.jpg
return
Dabei ist das "Auswahlfenster" eine Gui zum Auswählen extern gespeicherter Vorgaben, die auch dann die Vaiable füllen, die in das eine Textfeld geschrieben wird. Die für das andere Textfeld wird über die InputBox eingegeben. Kann man dort eigentlich einen dritten Button hereinsetzen? Bei einer MsgBox ist das möglich, wenn man in den Parametern die Optionen entsprechend verändert.
Was ebenfalls immernoch wünschenswert wäre, ist die Abspeicherung der neue erstellten Bilddatei im aktuell geöffneten Explorerfenster bzw. Dateienordner.

Viele Grüße von Meister Lampe

Re: Externe Software suchen und anwenden

Post by hd0202 » 31 Oct 2019, 07:11

schon mal an RunWait gedacht ?
Hubert

Re: Externe Software suchen und anwenden

Post by gregster » 31 Oct 2019, 02:31

Wie just me schon sagte, das Komma wird's nicht sein. Ansonsten von hier aus schwer zu sagen.
Kann das daran liegen, daß der Run-Befehl vielleicht keine Variablen duldet? Aber wie soll ich das sonst machen?
Nee, Variablen sollten kein Problem sein. Das funktioniert ohne Probleme hier:

Code: Select all

I_view_exe := "C:\Program Files (x86)\IrfanView\i_view32.exe"
Arbeitsdateien := "C:\Users\g\Downloads"
VD_NameNeu := "K 123--999_123"

Run, %I_view_exe% /clippaste /convert=%Arbeitsdateien%\%VD_NameNeu%.jpg
msgbox
Run, %Arbeitsdateien%\%VD_NameNeu%.jpg
Alternativ kannst du %I_view_exe% wieder hinzufügen: Run, %I_view_exe% %Arbeitsdateien%\%VD_NameNeu%.jpg
Aber die Fehlermeldung deutet ja aher darauf hin, dass die jpg-Datei nicht gefunden wird... warum auch immer.

Edit:
Wahrscheinlich existiert die Datei noch nicht so schnell nach dem convert-Befehl - sie muss ja erstmal erstellt werden. Entweder probier großzügiges Sleep oder eine Schleife mit FileExist() bevor du versuchst, die Datei zu öffnen (am besten mit einem Timeout, für den Fall, dass bei der Erstellung der Datei etwas schief läuft).

Re: Externe Software suchen und anwenden

Post by just me » 30 Oct 2019, 06:22

Moin,

das jeweils erste Komma kann man weglassen. Der Interpreter fügt es bei Bedarf automatisch ein.

Re: Externe Software suchen und anwenden

Post by Meister Lampe » 29 Oct 2019, 15:53

Hallo gregster!

Du hast mir in einem Deiner letzten Posts empfohlen:
zu 4.: Das Bild? wieso wieder eingeben? Speicher den Pfad doch in einer Variable zu weiteren Verwendung, wenn du das Bild erstellst: Wenn du run PfadzumBild ausführst, sollte das Bild im Standardviewer für diese Dateiendung angezeigt werden.
Ich habe das jetzt mal versucht, aber da kommt folgende Fehlermeldung:

Code: Select all

---------------------------
AHK-Tool StAF_3.1.13_extrakt.ahk
---------------------------
Error:  Failed attempt to launch program or document:
Action: <D:\Users\Bernhard\Eigene Hotkeys\HotKeys fürs Verzeichnen\Arbeitsdateien AHK-Tool StAF\K 678--7_123.jpg>
Params: <>

Specifically: Das System kann die angegebene Datei nicht finden.

	Line#
	714: oWord := ComObjActive("Word.Application")
	715: oRange := oWord.ActiveDocument.Range.Copy
	718: Run,%I_view_exe% /clippaste /convert=%Arbeitsdateien%\%VD_NameNeu%.jpg
	721: oWord.ActiveDocument.Close(0)  
	722: oWord.Quit()  
--->	724: Run,%Arbeitsdateien%\%VD_NameNeu%.jpg
	725: Return
	
The current thread will exit.
---------------------------
OK   
---------------------------
Im originalen Code sieht das aber so aus:

Code: Select all

oWord := ComObjActive("Word.Application")
   oRange := oWord.ActiveDocument.Range.Copy

   ;Run, %I_view_exe% /clippaste /convert=c:\test\test.jpg
   Run, %I_view_exe% /clippaste /convert=%Arbeitsdateien%\%VD_NameNeu%.jpg
         
   ;Run, "%A_ProgramFiles%\IrfanView\i_view32.exe" /clippaste /convert=%Arbeitsdateien%\%VD_NameNeu%.jpg
   oWord.ActiveDocument.Close(0)
   oWord.Quit()
   
   Run %Arbeitsdateien%\%VD_NameNeu%.jpg
return
Man beachte, daß in der Fehlermeldung in der angemahnten Zeile Nr. 724 nach dem Run ein Komma steht, in meinem Code aber nicht.
Ich hatte zuerst gedacht, das wäre eine automatische Korrekturempfehlung und das Komma zur Probe eingesetzt. Dadurch hat sich aber nichts verändert, auch die Fehlermeldung kommt noch. Dabei bdefindet sich die Datei ja genau an dieser Stelle, dorthin wurde 3 Zeilen vorher abgespeichert. Das kann man sehen, wenn man das Programm bei geöffnetem Ordner laufen läßt.
Kann das daran liegen, daß der Run-Befehl vielleicht keine Variablen duldet? Aber wie soll ich das sonst machen?

Viele Grüße von Meister Lampe

Re: Externe Software suchen und anwenden

Post by gregster » 26 Oct 2019, 01:28

Also ich habe keine Probleme mit der Formatierung - die bleibt erhalten, wie bei KHA. Ob in Textfeldern oder außerhalb...

Bei etlichen Versuchen mit verschiedenen Layout-Varianten und -Positionen habe ich genau einmal die Fehlermeldung mit dem " bekommen. Das war unmittelbar nachdem ich eine Textbox verschoben habe, aber ich konnte seitdem das Problem nicht mehr reproduzieren.

Was das Auslesen des Ordners aus dem File Explorer angeht (wenn ich richtig verstehe) - das müsste gehen über eine Schnittstelle. Ich guck mal, ob ich's finde.

Edit: Als einfacher Workaround lässt sich der vollständige Pfad im Fenstertitel anzeigen (in den Explorer-Optionen aktivieren) und dann natürlich als wintitle-Text auslesen:
pfad anzeigen lassen.jpg
pfad anzeigen lassen.jpg (82.41 KiB) Viewed 4357 times
Zumindest dann, wenn die Explorer-Addresszeile einen Pfad anzeigt - also nicht wenn man einen angepinnten Schnellzugriff-Link benutzt hat.

Re: Externe Software suchen und anwenden

Post by KHA » 25 Oct 2019, 10:32

Hallo, ich weiß es nicht, ob es an IrfanView Einstellungen liegt, aber bei mir wird die Formatierung (Schriftart, Schriftröße und Farbe 1:1 übernommen.
test.jpg
test.jpg (6.34 KiB) Viewed 4390 times

Re: Externe Software suchen und anwenden

Post by Meister Lampe » 24 Oct 2019, 16:43

Hallo nochmal!

Ich habe jetzt den IrfanView nochmals neu installiert, ebenfalls in der 32Bit-Version. Jetzt scheint es wieder zu klappen. Allerdings gehen bei der Erstellung der Bilder über das Script die Formatierungen von Schriftfarbe, -Größe und -typ in dem einen Textfeld des Worddokuments verloren. Wenn ich das allerdings manuell einkopiere, bleiben sie bestehen. Wie bekomme ich das hin?

@ KHA:
Ich habe Deinen Code auch einmal eingefügt und angepaßt. Ich hatte natürlich noch nicht die Möglichkeit, diesen an anderen Computern mit 64Bit-Version oder ganz ohne IrfanView auszuprobieren. Aber auf dem meinigen funktioniert es - bis auf die oben bereits erwähnten Probleme mit der Textformatierung.

Viele Grüße von Meister Lampe

Re: Externe Software suchen und anwenden

Post by Meister Lampe » 23 Oct 2019, 16:33

Hallo gregster!
Das scheint doch eine Irfanview-Fehlermeldung zu sein, oder?
Das spräche eher dafür, dass Irfanview startet, aber irgendwas nicht findet, dass in den Parametern angegeben ist.
Das glaube ich ebenfalls. Irgendwas steht da ja von einem Anführungszeichen. Bloß, was das zu bedeuten hat???
Ist die Zwischenablage tatsächlich gefüllt zu diesem Zeitpunkt?
Ganz bestimmt. Denn wenn ich den IrfanView dann manuell aufrufe, kann ich mit Stgr+v oder über das Menü das Bild erstellen, ganz so, wie es vorgesehen ist. Außerdem funktioniert derselbe Code ja auf dem anderen Computer.
Kann das tatsächlich daran liegen, daß ich zwei Ordner mit installierter Software habe - eben einmal Program Files und dann Programme (x86)? Sucht der Befehl %A_ProgramFiles%\IrfanView\i_view32.exe nicht in allen Programmordnern nach der angegebenen Software?
zu 3.: Du meinst den Ordner, wo das docx herkommt? Wie unter 2.: Den Pfad des aktiven Dokuments verwenden.
Nein, es handelt sich um Ordner mit Bilddateien, die gerade geöffnet sind. Unterschiedliche Bilderserien sind darin enthalten, die durch Startseiten getrennt werden sollen.
Im Tutorial habe ich den Befehl

Code: Select all

id := WinExist("A")
gefunden, mit dem man die ID des aktuellen Fensters bestimmen kann. Nur wie ich die in einen Pfad umwandle bzw. in die Speicheranweisung einbauen soll, weiß ich nicht. Ob es eine Möglichkeit gibt, den Pfad des aktuellen Fensters (also nicht einer Datei!) zu bestimmen, habe ich nicht gefunden.

All das kann ich natürlich leider auch erst wieder ausprobieren und testen, wenn das mit dem IrfanView klappt. :(

Viele Grüße von Meister Lampe

Re: Externe Software suchen und anwenden

Post by gregster » 23 Oct 2019, 02:36

Meister Lampe wrote:
21 Oct 2019, 16:21
Trotzdem bleiben noch ein paar Fragen:
  1. Was bewirkt die 0 in den Klammern nach dem Close-Befehl für die Word-Datei?
  2. Wie kann ich statt ihn zu schließen, den jetzt nicht mehr benötigten Entwurf im .dotx-Format gleich löschen? Ich habe mal probiert, das Close durch Delete zu ersetzen, aber anscheinend ist das hier nicht der richtige Befehl.
  3. Wie kann ich das neu generierte Bild statt in dem vorgegebenen Pfad Arbeitsdateien in dem zuletzt bzw. gerade geöffneten Ordner abspeichern lassen?
  4. Und schließlich würde ich es mir gerne am Schluß einmal zur Kontrolle ansehen und dazu öffnen lassen. Muß man dazu wieder neu den ganzen Pfad eingeben oder geht das einfacher?
Tja, mit der Word COM-Schnittstelle kenn ich mich nur flüchtig aus... alles nicht getestet:

zu 1.: Ich denke, das bewirkt, dass etwaige Änderungen beim Schließen nicht gespeichert werden.

zu 2.: Ich glaub das Word-Document-Objekt selbst bietet eine solche Methode nicht an. Einfacher wirds wohl eh mit AHK's FileDelete oder FileRecycle gehen (nachdem das Dokument geschlossen ist). Den Pfad zur Datei müsstest du - vermutlich - über ActiveDocument.Path und ActiveDocument.Name bestimmen können.

zu 3.: Du meinst den Ordner, wo das docx herkommt? Wie unter 2.: Den Pfad des aktiven Dokuments verwenden.

zu 4.: Das Bild? wieso wieder eingeben? Speicher den Pfad doch in einer Variable zu weiteren Verwendung, wenn du das Bild erstellst: Wenn du run PfadzumBild ausführst, sollte das Bild im Standardviewer für diese Dateiendung angezeigt werden.
Sonst musst du das Wunschprogramm noch voranstellen (inkl. Pfad; wie KHA es oben zeigt); auf die Schnelle konnte ich zumindest keine Irfanview-Kommdozeilenoption finden, die das Bild automatisch nach der Konvertierung öffnet. Das braucht wahrscheinlich einen Extra-Schritt/Aufruf.

Re: Externe Software suchen und anwenden

Post by gregster » 23 Oct 2019, 01:43

Meister Lampe wrote:
22 Oct 2019, 16:08
Ich habe das Script, das gestern auf meinem Laptop funktioniert hat, jetzt auf meinem PC ausprobiert und erhalte hier die Fehlermeldung
---------------------------
IrfanView
---------------------------
Error! Can't load: ''
---------------------------
OK
---------------------------
Ich kann nicht erkennen, wo da ein Anführungszeichen " zuviel oder zuwenig sein soll, denn ich habe ja auch nichts verändert. Allerdings habe ich auf diesem Rechner zwei Ordner für die Software: Program Files und Programme (x86). Muß ich den IrfanView bzw. seinen Pfad jetzt zuvor extra suchen, um ihn dann in diesen Befehl zum Kopieren und Abspeichern einbauen zu können?
Das scheint doch eine Irfanview-Fehlermeldung zu sein, oder?

Das spräche eher dafür, dass Irfanview startet, aber irgendwas nicht findet, dass in den Parametern angegeben ist.
Ist die Zwischenablage tatsächlich gefüllt zu diesem Zeitpunkt?

Re: Externe Software suchen und anwenden

Post by KHA » 22 Oct 2019, 18:45

Schau mal, ob es dir das hilft?

Code: Select all

RegRead, I_view_exe, HKCR\Applications\i_view32.exe\shell\open\command
IF !(I_view_exe)
{
RegRead, I_view_exe, HKCR\Applications\i_view64.exe\shell\open\command
RegexMatch(I_view_exe, "(?P<>""[^""]*"")", I_view_exe) ;erste "..."-Gruppe
}
IF !(I_view_exe)
{
MsgBox, Bitte IrfanView Installieren.
Return
}
oWord := ComObjActive("Word.Application")
oRange := oWord.ActiveDocument.Range.Copy

Run, %I_view_exe% /clippaste /convert=c:\test\test.jpg
Run, %I_view_exe% c:\test\test.jpg
Return

Re: Externe Software suchen und anwenden

Post by Meister Lampe » 22 Oct 2019, 16:08

Hallo!

Ich habe das Script, das gestern auf meinem Laptop funktioniert hat, jetzt auf meinem PC ausprobiert und erhalte hier die Fehlermeldung
---------------------------
IrfanView
---------------------------
Error! Can't load: ''
---------------------------
OK
---------------------------
Ich kann nicht erkennen, wo da ein Anführungszeichen " zuviel oder zuwenig sein soll, denn ich habe ja auch nichts verändert. Allerdings habe ich auf diesem Rechner zwei Ordner für die Software: Program Files und Programme (x86). Muß ich den IrfanView bzw. seinen Pfad jetzt zuvor extra suchen, um ihn dann in diesen Befehl zum Kopieren und Abspeichern einbauen zu können?

Viele Grüße von Meister Lampe

Re: Externe Software suchen und anwenden

Post by Meister Lampe » 21 Oct 2019, 16:21

Hallo gregster!

Vielen Dank. Jetzt tut es. Ich habe übersehen, daß ich auf diesem PC den IrfanView 32 drauf habe und Dein Code die Version 64Bit-Version aurufen will. Das Problem wäre auch noch zu klären.
Und dann habe ich den Pfad ebenfalls als Variable eingefügt und ganz oben im Script definiert:

Code: Select all

; Pfanddefinitionen oben im Script:
Arbeitsdateien := A_ScriptDir . "\Arbeitsdateien AHK-Tool"
;...
Run, "%A_ProgramFiles%\IrfanView\i_view32.exe" /clippaste /convert=%Arbeitsdateien%\%VD_NameNeu%.jpg
oWord.ActiveDocument.Close(0)
oWord.Quit()

return
Trotzdem bleiben noch ein paar Fragen:
  1. Was bewirkt die 0 in den Klammern nach dem Close-Befehl für die Word-Datei?
  2. Wie kann ich statt ihn zu schließen, den jetzt nicht mehr benötigten Entwurf im .dotx-Format gleich löschen? Ich habe mal probiert, das Close durch Delete zu ersetzen, aber anscheinend ist das hier nicht der richtige Befehl.
  3. Wie kann ich das neu generierte Bild statt in dem vorgegebenen Pfad Arbeitsdateien in dem zuletzt bzw. gerade geöffneten Ordner abspeichern lassen?
  4. Und schließlich würde ich es mir gerne am Schluß einmal zur Kontrolle ansehen und dazu öffnen lassen. Muß man dazu wieder neu den ganzen Pfad eingeben oder geht das einfacher?
Viele Grüße von Meister Lampe

Re: Externe Software suchen und anwenden

Post by gregster » 17 Oct 2019, 23:38

Ich verstehe bislang noch nicht, warum du die Irfanview-GUI überhaupt öffnen willst. Die Befehlszeilensyntax wie hier

Code: Select all

Bildname := "testbild"
Run, "%A_ProgramFiles%\IrfanView\i_view64.exe" /clippaste /convert=%A_Desktop%\Bildordner\%BildName%.jpg
erlaubt ja gerade, die Zwischenablage direkt in eine jpg-Datei zu speichern/zu konvertieren, ohne die Irfanview-GUI öffnen und Strg+v senden oder drücken zu müssen. Das heißt, dieser Code setzt genau da an, wenn die Zwischenablage befüllt ist - ich gehe davon aus, dass dein Code bis dahin schon mal läuft.

Soweit ich mich erinnere habe ich das sogar getestet, indem ich eine Word-Datei geöffnet und den Text markiert und kopiert habe - und ich erhielt eine jpg-Datei mit dem Text im angegebenen Pfad. Vielleicht muss man noch was an den Optionen drehen (Irfanview hat noch mehr Kommandozeilenparameter, afaik - Auflösung, Größe oder so etwas), oder man könnte den Zielpfad direkt aus dem offenen Explorer-Fenster auslesen, aber das wären dann ja erst die nächsten Schritte der Verfeinerung des Vorgangs...

Re: Externe Software suchen und anwenden

Post by Meister Lampe » 17 Oct 2019, 17:29

Hallo!

Ich habe diese Methode jetzt auch probiert, aber ohne das gewünschte Ergebnis.
Ich möchte hier zur Erläuterung noch einmal ausholen, vielleicht ist dann auch besser verständlich, was das Ziel der Aktion ist.
Ich möchte Bilddateien im .tif oder .jpg Format erzeugen, die bestimmte Namen/Angaben enthalten, die bereits vorher als Variablen in einem anderen Script (dem "Umbenennungs-Tool", das ich ebenfalls hier erstellen und verbessern konnte und kann) benutzt oder festgelegt wurden.
Da ich keine Software gefunden habe, mit der sich das direkt machen läßt, erstelle ich erst eine Worddatei.
Dabei werden die Angaben mithilfe von Textmarken in die vorgesehenen und in Schriftart, -Größe und -Farbe unterschiedlich vorformatierten Textfelder auf einer A4 Vorlage eingesetzt. Wichtig dabei ist, daß dort bereits ein Zeichen drinsteht, das später gelöscht wird, sonst geht die Formatierung verloren. Dann wird aus denselben Variablen ein Dateiname kreiert, unter dem die Worddatei abgespeichert werden kann. Vorher aber wird sie kopiert, damit sie später in ein Bildprogramm eingefügt werden kann. Damit dabei auch das ganze Blatt erfaßt wird, und nicht nur die Zeilen, die dort gerade hereingeschrieben wurden, habe ich bei der Vorlage in alle 4 Ecken ganz außen ein kleines WordArt-Zeichen gesetzt und in weiß formatiert.
Das sieht bis dahin folgendermaßen aus (zur Erinnerung: Die hier verwendeten Variablen für Inhalte und teils auch Pfade sind bereits anderswo festgelegt, also nicht irritieren lassen!):

Code: Select all

InputBox, VD_SignBox, Virtuelles Deckblatt, Geben Sie die Aktensignatur ein!, ,225, 125, Verdana10 
   If ErrorLevel
      return
   else
   
   VD_SignNeu := VD_SignBox
   VD_AktSign := AktSign
   DocumentPath := VD_Vorlage
   BookmarkName1 := "AktSign_Marke"   
   BookmarkName2 := "Signatur_Marke"
   
   oWord := ComObjCreate("Word.Application")
   oDoc := oWord.Documents.Open(DocumentPath)
   oWord.Visible := 1, oWord.Activate
   oDoc.Bookmarks(BookmarkName1).Select
   oDoc.Bookmarks(BookmarkName1).Range.Text := VD_AktSign
   Send, {Left}{Del}
   oDoc.Bookmarks(BookmarkName2).Select
   oDoc.Bookmarks(BookmarkName2).Range.Text := VD_SignNeu
   Send, {Left}{Del}
   
   Send, {PGUP}
   Send, ^a
   Send, ^c
   VD_SignName := Format("{:0" . StellenSign . "}", VD_SignNeu)
   VD_NameNeu := AktSign . "_" . VD_SignName 
   ;MsgBox, %VD_NameNeu%
   oWord.ActiveDocument.SaveAs(A_ScriptDir . "\Arbeitsdateien AHK-Tool StAF\" . VD_NameNeu . ".docx")
   
   ;Run, mspaint.exe
   ;Run, %A_WinDir%\system32\mspaint.exe
   ;Run,% A_WinDir "\system32\mspaint.exe"
   
   Run,  "C:\Program Files (x86)\IrfanView\i_view32.exe"
   
   oWord.ActiveDocument.Close(0)
   oWord.Quit()
Der IrfanView wird geöffnet, die Worddatei wird wie gewünscht abgespeichert und geschlossen und wenn ich jetzt Strg + v eingebe oder in IrfanView direkt auf "Einfügen" klicke, dann habe ich auch das Bild. Aber mit Send, ^v o.ä. im Script habe ich das bis heute noch nicht hingebracht. Und dann muß ich das ja noch Abspeichern, am besten gleich automatisch in dem jeweiligen gerade offenen Explorer-Fenster, in dem zuvor gearbeitet wurde. Wenn das tatsächlich mal klappen sollte, da bräuchte man auch die Worddateien nicht mehr zu aufzubewahren, sondern könnte sie gleich wieder verwerfen.

Viele Grüße von Meister Lampe

Re: Externe Software suchen und anwenden

Post by gregster » 08 Oct 2019, 04:40

/clippaste bedeutet, dass die aktuelle Zwischenablage nach Irfanview gepastet wird (ohne sichtbares GUI) - man beachte die Leerzeichen vor und nach dem Parameter in KHA's Beispiel
/convert= weisst Irfanview an, die aktuelle Datei (in diesem Fall also die gepastete Zwischablage) in den angegebenen Pfad zu speichern (das fehlt bei dir).

Bei mir funktionieren diese Parameter, wenn ich bei deinem Pfad bleibe:

Code: Select all

Bildname := "testbild"
Run, "%A_ProgramFiles%\IrfanView\i_view64.exe" /clippaste /convert=%A_Desktop%\Bildordner\%BildName%.jpg
Der Ordner wird offenbar erzeugt, wenn er noch nicht besteht und namensgleich vorhandene Dateien werden kommentarlos überschrieben

Top