by Frosti » 01 Aug 2020, 04:30
Zuerst einmal sehe ich folgendes.
1.
If WinExist("Adobe") && Winexist("Foxit") funktioniert so nicht, da Du Deine Variablen in Anführungszeichen gesetzt hast.
Funktionieren würde es so:
If WinExist(Adobe) && Winexist(Foxit)
2. Du möchtest entweder an einen
Adobe Reader oder an einen
FoxitReader Fenster die Tastenkombination
LControl p senden.
Hier tritt
else als Bedingung ein, wenn kein FoxitReader Fenster vorhanden ist. Somit ist die Fehlerausgabe erklärt
Code: Select all
If (FoxitID:=WinExist("ahk_class classFoxitReader")) { ;<--------
Gui, +OwnDialogs ;< blockiert das AHK-Fenster während der Meldungs- bzw. Progress-Anzeige
WinActivate, % "ahk_id " FoxitID ;; aktiviert den (geöffneten) Adobe Acrobat Reader
WinWaitActive, % "ahk_id " FoxitID,, 3 ;; wartet maximal 3 Sekunden auf die Aktivierung
} else { -<-------
MsgBox, 16, Fehler!, Es wurde keine PDF-Datei gefunden!
Return
}
Ich würde Dir folgendes vorschlagen
(Send habe ich in die If´s verlegt)
Code: Select all
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
SetTitleMatchMode, 2
Adobe := ".pdf - Adobe Acrobat Reader DC" ; Titel des geöffneten Acrobat Reader Fensters
Foxit := "ahk_class classFoxitReader" ; Titel des geöffneten Foxit Readers
If WinExist(Adobe) && Winexist(Foxit) {
MsgBox, Adobe Acrobat Reader und Foxit Reader sind gleichzeitig geöffnet! `nBitte eine Instanz beenden!
Return
}
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
If Winexist(Adobe) {
Gui, +OwnDialogs ;; blockiert das AHK-Fenster während der Meldungs- bzw. Progress-Anzeige
WinActivate, %Adobe% ;; aktiviert den (geöffneten) Adobe Acrobat Reader
WinWaitActive, %Adobe%, , 3 ;; wartet maximal 3 Sekunden auf die Aktivierung
If (ErrorLevel) {
MsgBox, 16, Fehler!, Es wurde keine PDF-Datei gefunden!
Return
send ^p ;;Drucken
}
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
If (WinExist(Foxit)) {
Gui, +OwnDialogs ;< blockiert das AHK-Fenster während der Meldungs- bzw. Progress-Anzeige
WinActivate, % Foxit ;; aktiviert den (geöffneten) Adobe Acrobat Reader
WinWaitActive, % Foxit,, 3 ;; wartet maximal 3 Sekunden auf die Aktivierung
If (ErrorLevel) {
MsgBox, 16, Fehler!, Es wurde keine PDF-Datei gefunden!
Return
Send ^p
}
Return
Zuerst einmal sehe ich folgendes.
1. [c]If WinExist("Adobe") && Winexist("Foxit")[/c] funktioniert so nicht, da Du Deine Variablen in Anführungszeichen gesetzt hast.
Funktionieren würde es so: [c]If WinExist(Adobe) && Winexist(Foxit)[/c]
2. Du möchtest entweder an einen [b]Adobe Reader[/b] oder an einen [b]FoxitReader[/b] Fenster die Tastenkombination [kbd]LControl p[/kbd] senden.
Hier tritt [c]else[/c] als Bedingung ein, wenn kein FoxitReader Fenster vorhanden ist. Somit ist die Fehlerausgabe erklärt
[code]
If (FoxitID:=WinExist("ahk_class classFoxitReader")) { ;<--------
Gui, +OwnDialogs ;< blockiert das AHK-Fenster während der Meldungs- bzw. Progress-Anzeige
WinActivate, % "ahk_id " FoxitID ;; aktiviert den (geöffneten) Adobe Acrobat Reader
WinWaitActive, % "ahk_id " FoxitID,, 3 ;; wartet maximal 3 Sekunden auf die Aktivierung
} else { -<-------
MsgBox, 16, Fehler!, Es wurde keine PDF-Datei gefunden!
Return
}
[/code]
Ich würde Dir folgendes vorschlagen [size=85]([c]Send[/c] habe ich in die [c]If[/c]´s verlegt)[/size]
[code]
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
SetTitleMatchMode, 2
Adobe := ".pdf - Adobe Acrobat Reader DC" ; Titel des geöffneten Acrobat Reader Fensters
Foxit := "ahk_class classFoxitReader" ; Titel des geöffneten Foxit Readers
If WinExist(Adobe) && Winexist(Foxit) {
MsgBox, Adobe Acrobat Reader und Foxit Reader sind gleichzeitig geöffnet! `nBitte eine Instanz beenden!
Return
}
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
If Winexist(Adobe) {
Gui, +OwnDialogs ;; blockiert das AHK-Fenster während der Meldungs- bzw. Progress-Anzeige
WinActivate, %Adobe% ;; aktiviert den (geöffneten) Adobe Acrobat Reader
WinWaitActive, %Adobe%, , 3 ;; wartet maximal 3 Sekunden auf die Aktivierung
If (ErrorLevel) {
MsgBox, 16, Fehler!, Es wurde keine PDF-Datei gefunden!
Return
send ^p ;;Drucken
}
;;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
If (WinExist(Foxit)) {
Gui, +OwnDialogs ;< blockiert das AHK-Fenster während der Meldungs- bzw. Progress-Anzeige
WinActivate, % Foxit ;; aktiviert den (geöffneten) Adobe Acrobat Reader
WinWaitActive, % Foxit,, 3 ;; wartet maximal 3 Sekunden auf die Aktivierung
If (ErrorLevel) {
MsgBox, 16, Fehler!, Es wurde keine PDF-Datei gefunden!
Return
Send ^p
}
Return
[/code]