So, jetzt ist leider das nächste Problem aufgetaucht.
Hat schon mal jemand erfolgreich einen Programmaufruf bei Beendigung des Downloads implementiert?
Also über die Funktion IBackgroundCopyJob2.SetNotifyCmdLine()?
Ich kann mir erfolgreich einen Zeiger auf das IBackgroundCopyJob2-Interface holen, SetNotifyCmdLine aufrufen, und bekomme immer OK zurück.
Aber wenn ich einen Download starte, das Programm beende und warte, passiert einfach nichts, das Kommando wird nicht ausgeführt.
Mit
bitsadmin.exe /list
kann ich den Fortschritt und die Fertigstellung des Downloads verfolgen.
Ich kann sogar mit
bitsadmin /info {GUID} /verbose
mein Kommando sehen:
Code:
GUID: {
GUID} DISPLAY: 'Test'
TYPE: DOWNLOAD STATE: TRANSFERRED OWNER: ich
PRIORITY: HIGH FILES: 1 / 1 BYTES: 70517025 / 70517025
CREATION TIME: 23.09.2016 15:55:21 MODIFICATION TIME: 23.09.2016 15:57:00
COMPLETION TIME: 23.09.2016 15:57:00
ACL FLAGS:
NOTIFY INTERFACE: UNREGISTERED NOTIFICATION FLAGS: 27
RETRY DELAY: 600 NO PROGRESS TIMEOUT: 1209600 ERROR COUNT: 0
PROXY USAGE: PRECONFIG PROXY LIST: NULL PROXY BYPASS LIST: NULL
DESCRIPTION:
JOB FILES:
70517025 / 70517025 WORKING http://www.domain.de/MeinTestFile.zip -> D:\BITS Test\MeinTestFile.zip
NOTIFICATION COMMAND LINE: '"C:\Windows\System32\notepad.exe"'
owner MIC integrity level: MEDIUM
owner elevated ? false
Peercaching flags
Enable download from peers :false
Enable serving to peers :false
CUSTOM HEADERS: NULL
Als CommandLine habe ich den Namen meines Programms (mit ParamStr(0)) und notepad.exe, jeweils mit und ohne Anführungszeichen verwendet.
Ich habe schon verschiedene Prioritäten verwendet, BG_JOB_PRIORITY_FOREGROUND und BG_JOB_PRIORITY_HIGH.
Die NotifyFlags vor und nach der CommandLine gesetzt.
Aber nichts funktioniert, obwohl es eigentlich funktionieren müsste...