![]() |
TaskMgr Vista
Hallo,
ich wollte mal nachfragen, ob ggf. einer von euch mal versucht hat einen Task in Delphi 2009 unter Vista anzulegen? Gestern hab ich mal dir TLB importiert und hab dann versucht, mit meinen nicht vorhandenen C Kenntnissen folgendes ![]() Leider wird mir beim Ausführen der letzten Zeile also:
Delphi-Quellcode:
Immer die Fehlermeldung angezeigt: Der Parameter ist inkorekt ausgegeben.
IRegisteredTask *pRegisteredTask = NULL;
hr = pRootFolder->RegisterTaskDefinition( _bstr_t( wszTaskName ), pTask, TASK_CREATE_OR_UPDATE, _variant_t(), _variant_t(), TASK_LOGON_INTERACTIVE_TOKEN, _variant_t(L""), &pRegisteredTask); Mein Umbau nach Delphi ist:
Delphi-Quellcode:
Viele Grüße
// Unklar da RegisterTaskDefinition als ersten Param Path will und nicht TaskName wie im Beispiel!
pRegisteredTask := pRootFolder.RegisterTaskDefinition(WideString('\'), pTaskDefinition, TASK_CREATE_OR_UPDATE, WideString(pszName), WideString(pszPwd), TASK_LOGON_INTERACTIVE_TOKEN_OR_PASSWORD, 0); Marc |
Re: TaskMgr Vista
Der letzte Parameter müsste ein Zeiger auf einen Speicherbereich sein, weil dort die Funktion einen Rückgabewert reinschreibt.
|
Re: TaskMgr Vista
Zitat:
also ich hab das schon sooft umgestrickt, dass ich glaube das das Beispiel ansich fehlerhaft ist? Auch mit dem letzten Parameter hasts nicht funktioniert, Fehlermeldung bleibt gleich leider. Gruß Marc |
Re: TaskMgr Vista
Zeig mal den zugehörigen C Quellcode mit der Deklaration der Variablen.
|
Re: TaskMgr Vista
Zitat:
![]() ganz nach unten scrollen! :-) |
Re: TaskMgr Vista
Mal ne blöde Frage: Ich zähl bei dem C-Beispiel 8 Parameter, bei dir nur 7. Wie kommt denn das zustande?
|
Re: TaskMgr Vista
Zitat:
Ich hab nur 7 zur Auswahl hier die da wäre: Path pDefinition Flags UserID PassWord LogOnType sddl :shock: Aus der TLB
Delphi-Quellcode:
[edit=mkinzler]Aufgefrischt wegen Cache-Fehler Mfg, mkinzler[/edit]
function RegisterTaskDefinition(const Path: WideString; const pDefinition: ITaskDefinition;
flags: Integer; UserId: OleVariant; password: OleVariant; LogonType: _TASK_LOGON_TYPE; sddl: OleVariant): IRegisteredTask; safecall; |
Re: TaskMgr Vista
Hmm... Der letzte Parameter (ein out-Parameter) wird bei dir scheinbar als Result zurückgegeben. Nur wo kommt das eigentliche Return Value dann hin? Seltsam seltsam :gruebel:
|
Re: TaskMgr Vista
Das passt schon. Dazu ist die Delphi-spezifische Aufrufkonvention Safecall da. Sie bewirkt, dass das Ergebnis in Wirklichkeit in einem Out-Parameter zurückgegeben wird. Die Fehlerprüfung mit dem eigentlichen Rückgabewert HResult erfolgt automatisch - im Fehlerfalle wird die Routine SafeCallErrorProc aufgerufen, was eine Exception auslöst, falls ComObj oder SysUtils eingebunden ist.
|
Re: TaskMgr Vista
Zitat:
Gleich dreh ich durch! Ok langer Kampf aber nun hab ichs endlich! |
Re: TaskMgr Vista
Könntest du bitte den Code hier einstellen und den Thread als glöst kennzeichnen?
|
Re: TaskMgr Vista
Zitat:
Das einzige was falsch war ist folgendes:
Delphi-Quellcode:
Es mußte 0 in Null geändert werden nun stimmen die Parameter bei mir.
pRegisteredTask := pRootFolder.RegisterTaskDefinition(WideString('\'),
pTaskDefinition, TASK_CREATE_OR_UPDATE, WideString(pszName), WideString(pszPwd), TASK_LOGON_INTERACTIVE_TOKEN_OR_PASSWORD, [b][color=#ff0000]0[/color][/b]); Gruß Marc |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz