Forum
Bitte beachte auch unsere Knowledgebase und das Handbuch!
Hallo Kollegen,
das Starten von QRK mit Parameter (servermode) geht einwandfrei.
Das Beenden aus einem anderen Programm heraus scheitert an der Notwendigkeit das Häkchen des Servermodus manuell entfernen zu müssen.
Kann man die Aufforderung zum Entfernen des Häkchens vor dem Beenden weglassen ? --- oder automatisieren ?
Schöne Grüße axibua
Servus
Ist eigentlich schon erledigt. In der nächsten Version wird gewartet bis ein aktueller bon fertig ist. Der Servermode wird dann beendet. Nach einen kurzem Countdown wird dann auch qrk geschlossen.
Ich muss noch ein paar fixes erledigen dann jommt das Update.
Thanks, axibua
Hallo Chris,
danke erstmal für das letzte Update !
Ich hoffe, dass ich Euch mit meinen Wünschen nicht auf die Neven gehe !
Also das Starten von qrk.exe (inkl. Server-Modus) aus einem Fremd-Programm geht einwandfrei.
Das Beenden aus diesem Fremd-Programm funktioniert auch, aber beim nächsten Start kommt die Fehlermeldung
" Das Programm läuft bereits oder wurde das letzte Mal gewaltsam beendet ......." und startet nicht.
Der nächste Start geht wieder OK.
Mir ist schon klar, dass bei diesem Beenden qrk.exe praktisch abgewürgt wird.
Aber im Sinn der Automation wäre hier eine Lösung super.
LG axibua
Hallo
Wie beendest (bzw. killst) Du QRK?
Hallo Chris !
Ich rufe qrk.exe unter WIN10 (oder 7) mit ACCESS 2010 (oder 2016) VBA auf.
Den entsprechenden Modul habe ich angehängt.
Bei Programmen wie Notepad oder Tastatur usw. geht's natürlich problemlos, da keine Rückfrage "Beenden JA / NEIN ?"
Bei einer Datenbank bin ich unsicher ob alles gespeichert wurde.
Aber wie gesagt, zwecks Automatisierung wäre es schön, wenn man das qrk-aufrufende und das qrk-Programm selbst von einer Stelle aus starten und beenden könnte. Das Starten funktioniert ja klaglos. Beenden muss der User aber explizit beide Programme und wenn er vergisst qrk.exe zu beenden und schaltet den PC am Abend aus, hat er tags darauf ein Problem.
Vielleicht hast Du eine Lösung.
Wäre mir eine Spende wert.
LG axibua
Hallo
Ein Programm einfach abzuwürgen ist nie gut. Bei Notepad wird's wohl egal sein. Aber wie Du siehst kann QRK einige Daten nicht mehr schreiben.
Du solltest QRK beenden. Versuch mal Process.Close.
Mach ich, danke !
Ergebnis teile ich mit.
LG axibua
Wenn es nicht notwendig ist das Programm ohne herunterfahren von Windows zu beenden reicht es Windows zu beenden. In der 1.08 wird qrk ordnungsmäßig beendet.
Hallo Chris,
danke für die Info.
Habs sofort probiert und es funktioniert tatsächlich.
Jetzt frag ich mich wieso meine Process-Abwürg-Routine nicht gegangen ist, Windows macht doch auch nicht anderes, oder ?
Deinen letzten Vorschlag mit Process-Close (VB) habe ich unter VBA nicht zum laufen gebracht.
Derzeit habe ich es so gelöst, dass sich beim Beenden des "Hauptprgramms" ein Fenster öffnet welches das Beenden von QRK verlangt.
Bei Nicht-Beenden kann das "Hauptprogramm nicht geschlossen werden.
Danke für Deine Bemühungen.
Spende kommt trotzdem in den nächsten Tagen.
LG axibua
Windows sendet WM_CLOSE.
Vorher hat's nicht funktioniert da QRK auf ein Ok gewartet hat. Jetzt wird qrk nach dem timeout beendet.
Vielleicht hilft das noch.
#If VBA7 And Win64 Then
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr
#Else
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
#End If
Const WM_CLOSE = &H10 Sub Close_Adobe_Reader()
Dim strClassName As String
strClassName = "AcrobatSDIWindow"
hwnd = FindWindow(strClassName, vbNullString)
If hwnd Then
SendMessage hwnd, WM_CLOSE, 0, ByVal 0&
Else
MsgBox "Adobe is not running !"
End If
End Sub
Halt noch für qrk anpassen